Веб-разработка

индекс
236,88

Разворачиваем девелоперский сервер под Windows

imageСуббота, вечер, захотелось развернуть веб-сервер полностью с нуля вместо того, чтобы очередной раз использовать готовые сборки.

Вы можете спросить зачем?

Во-первых для контроля, во-вторых для того, чтобы разобраться как что подключать и где в конфигах искать нужную информацию. В будущем вам это может пригодиться на настоящих серверах.

Заодно прикрутил очень удобную утилиту-заглушку для почты.

Итак, разворачиваем девелоперский сервер под Windows.

Тестировалось на Windows XP и Windows Vista. Буду благодарен за отзыв на Windows 7.

Внимание, под катом много букоф и траффика о том, как сделать связку apache/php/mysql/phpmyadmin/почта под Windows с нуля и все настроить.



Скачиваем нужные дистрибутивы



apache — httpd.apache.org/download.cgi

Win32 Binary including OpenSSL 0.9.8k (MSI Installer) (apache_2.2.14-win32-x86-openssl-0.9.8k.msi)

php — windows.php.net/download/

VC6 x86 Thread Safe, zip. Не скачивайте автоматический установщик, качайте zip. (php-5.3.0-Win32-VC6-x86.zip)

mysql — dev.mysql.com/downloads/mysql/5.1.html#win32

Windows Essentials (x86) (mysql-essential-5.1.39-win32.msi)

Test mail server tool — toolheap.com/test-mail-server-tool/ (TestMailServerToolSetup.exe)

phpmyadmin — www.phpmyadmin.net/home_page/downloads.php (phpMyAdmin-3.2.2-all-languages.zip)

Установка



Создадим где-нибудь директорию, куда мы будем устанавливать все, что нам понадобится.

У меня это C:\WebServer

Создадим следующую структуру директорий:

image

mkdir C:\WebServer C:\WebServer\Apache C:\WebServer\PHP C:\WebServer\MySQL C:\WebServer\SMTP C:\WebServer\Temp C:\WebServer\Temp\Session C:\WebServer\Temp\UploadTemp

Устанавливаем apache


image

Выставляем localhost и какой-нибудь адрес электронной почты. Можно выдуманный =)

image

image

Выбирайте C:\WebServer\Apache в качестве пути установки.

После того, как установка завершится, вы должны увидеть в трее значок, который покажет что сервер работает.

image

Там же можно отстановить\перезапустить сервер.

image

Сервер стартует как сервис, настроить поведение можно в панели управления — администрирование -> сервисы. Логи апача (не доступ к сайту, а самого апача) можно найти в панели управления -> администрирование -> просмотр событий -> приложения.

Если apache у вас не стартует, скорее всего порт 80 уже занят. Его нужно освободить, либо установить другой порт для apache.

Теперь можно перейти в браузере по адресу localhost и увидеть «It works!».

Установка php


PHP просто распаковываем в директорию C:\WebServer\PHP

Установка mysql


image

image

Выбирайте директорию C:\WebServer\MySQL в качестве пути для установки

image

Запустим сразу же конфигурацию.

Большинство опций остается по-умолчанию, некоторые изменим.

image

Постепенно все переводят свои приложения/сайты на utf-8 и я рекомендую выбрать эту кодировку по-умолчанию.

image

Добавьте исполняемые файлы в path, вам будет проще работать.

MySQL тоже стартует как service.

image

Задайте пароль для root. Доступ снаружи можно будет потом добавить, если потребуется, с помощью mysql administrator или через консоль mysql.

После установки сервис должен успешно стартануть.

Проверим работоспособность.

Нажмите Win + R и введите:

mysql --user=root --password=ваш_пароль_рута

Если вы увидели консоль mysql, то все ок. Чуть позже нам понадобится эта консоль.

Устанавливаем SMTP заглушку


Запускайте на установку TestMailServerToolSetup.exe, который скачали ранее.

image

В качестве пути установки выбирайте C:\WebServer\SMTP

Создаем структуру директорий для сайтов



Для начала создадим директорию, где будут храниться сайты. В будущем, конечно же, все это можно будет поменять и сделать более гибким, приспособленным под ваши нужды.

В качестве базовой директории для сайтов я выбрал C:\www

Создадим директории для localhost и тестового сайта testdomain.com

В них нам нужно создать директории htdocs и два пустых файла: error.log и access.log (логи апача к этим сайтам).

Также внутри htdocs нужно создать index.html c содержимым, например «Hello, localhost!» и «Hello, testdomain!»

image

mkdir C:\www C:\www\localhost C:\www\testdomain.com C:\www\localhost\htdocs C:\www\testdomain.com\htdocs && cd C:\www\localhost\htdocs && echo "Hello, localhost!" > index.html && cd C:\www\localhost && echo. > error.log && echo. > access.log && cd C:\www\testdomain.com\htdocs && echo "Hello, testdomain!" > index.html && cd C:\www\testdomain.com && echo. > error.log && echo. > access.log

Настраиваем apache на новую структуру директорий и виртуальные сервера



C:\WebServer\Apache\conf\ содержит конфигурационные файлы. Если вы что-то испортите, то всегда можно будет вернуться к исходному состоянию или просто сравнить файлы, заглянув в директорию C:\WebServer\Apache\conf\original\. Здесь хранятся оригинальные настройки. Так что можно экспериментировать не боясь.

Основной файл конфигурации — httpd.conf

Изменяя конфигурацию apache, необходимо всегда перестартовывать его, чтобы изменения подхватились.

Итак, меняем настройки apache на новую структуру директорий.

В httpd.conf:

Меняем DocumentRoot «C:/WebServer/Apache/htdocs» на DocumentRoot «C:/www/».

Чуть ниже найдем директиву

<Directory «C:/WebServer/Apache/htdocs»>

И заменим путь и здесь.

<Directory «C:/www/»>

В файле httpd.conf найдите:

#Include conf/extra/httpd-vhosts.conf

И раскомментируйте (удалите #).

Далее заходим в extra и открываем httpd-vhosts.conf.

Вы увидите две секции <VirtualHost *:80>

Удалите обе секции и замените на следующее:

<VirtualHost *:80>
    ServerAdmin admin@localhost
    DocumentRoot "C:/www/localhost/htdocs/"
    ServerName localhost
    ErrorLog "C:/www/localhost/error.log"
    CustomLog "C:/www/localhost/access.log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin admin@testdomain.com
    DocumentRoot "C:/www/testdomain.com/htdocs/"
    ServerName testdomain.com
    ErrorLog "C:/www/testdomain.com/error.log"
    CustomLog "C:/www/testdomain.com/access.log" common
</VirtualHost>


Теперь добавим наш тестовый домен в файл %WinDir%\System32\drivers\etc\hosts, чтобы windows обращалась к локальному серверу, когда мы будем обращаться к testdomain.com:

echo. >> %WinDir%\System32\drivers\etc\hosts && echo 127.0.0.1 testdomain.com >> %WinDir%\System32\drivers\etc\hosts

Перестартовываем апач.

localhost — должны увидеть «Hello, localhost!»
testdomain.com — должны увидеть «Hello, testdomain!»

(Собственно, так можно делать заглушки для тех сайтов, которые вы разрабатываете)

Теперь можно удалять C:\WebServer\Apache\htdocs\, все сайты у нас будут храниться отдельно.

И прежде, чем мы продолжим, пару слов:

В файле httpd.conf директивы в <Directory «C:/www/»> будут применены ко всем сайтам, кроме тех случаев, когда они не переопределены. Если вы обратите внимание, то по-умолчанию включен Indexes, а это позволит просматривать директорию сайта в том случае, если там нет индексного файла. Если вам не хочется переопределять это значение для каждого сайта отдельно — удалите это здесь и включайте в тех местах, где это понадобится. Тоже самое касается любых других директив.

Директивы для сайтов лучше добавлять в httpd-vhosts.conf или в .htaccess.

Включаем инструменты анализа работы сервера



В httpd.conf раскомментируем следующее:

LoadModule info_module modules/mod_info.so
LoadModule status_module modules/mod_status.so

Так подключаются отдельные модули apache.

В самом низу файла находим и раскомментируем

Include conf/extra/httpd-info.conf

Открываем файл C:\WebServer\Apache\conf\extra\httpd-info.conf на редактирование и вместо .localhost вводим 127.0.0.1 (в двух местах).

Перегружаем apache.

Теперь можно зайти по адресам:

localhost/server-status
localhost/server-info

Там будет предоставлена интересная информация по серверу. Рекомендую ознакомиться хотя бы немного.

Подключаем PHP



Открываем httpd.conf и находим директиву <IfModule mime_module>.

Внутри директивы добавляем:

PHPIniDir "C:/WebServer/PHP/"
LoadModule php5_module "C:/WebServer/PHP/php5apache2_2.dll"
AddType application/x-httpd-php .php


Если вы хотите обрабатывать другие файлы, как php, то добавьте их. Например:

AddType application/x-httpd-php .php .html .htm


Директива <IfModule dir_module>:

DirectoryIndex index.html

меняем на:
DirectoryIndex index.php index.html


Эта директива говорит о том, что индексным файлом может быть index.php и index.html. Вы можете добавить что угодно еще.

Создаем файл phptest.php в C:\www\localhost\htdocs\ с содержимым:

<?php
phpinfo();
?>


Перегружаем apache и заходим на localhost/phptest.php

Вы должны увидеть информацию о php.

Настраиваем PHP



Если вы обратите внимание на localhost/phptest.php, то увидите, что «Loaded Configuration File» установлен в (none).

Заходим в C:\WebServer\PHP\ и переименовываем php.ini-development в php.ini.

Перегружаем apache, обновляем страницу, мы должны увидеть новый конфигурационный путь: C:\WebServer\PHP\php.ini.

Теперь все настройки будем делать в этом файле.

Некоторые базовые настройки:

Директория, в которой будут хранится временные файлы, заливаемые на сервер (директорию мы создали выше):

upload_tmp_dir = "C:\WebServer\Temp\UploadTemp"


Директория, в которой будут хранится сессии (директорию мы создали выше):

session.save_path = "C:\WebServer\Temp\Session"


Если хотите писать <? вместо <?php, то поставьте в On следующее:

short_open_tag = Off


error_reporting — уровень вывода ошибок
log_errors — можно отключить, если ошибки выводятся на экран
post_max_size, upload_max_filesize — очень часто эти параметры приходится увеличивать для загрузки больших файлов

Другие настройки можно найти в документации к php.

Если вы меняете настройки php — нужно перегрузить apache.

Подключаем модули PHP



Откройте localhost/phptest.php и поищите по тексту curl. Вы не должны ничего найти. Подключим модуль curl.

В php.ini найдите закомментированный фрагмент extension_dir

Раскомментируйте и сделайте его таким:

extension_dir = "C:\WebServer\PHP\ext"


Найдите extension=php_curl.dll и раскомментируйте. Перегрузите apache и повторите поиск на странице localhost/phptest.php.

Если модуль успешно подключился — можно двигаться дальше.

MySQL



В php.ini раскомментируйте extension=php_mysql.dll и extension=php_mysqli.dll.

Перегрузите apache и проверьте, что модули подключились.

Создадим файл C:\www\localhost\htdocs\mysqltest.php с содержимым:

<?
$dblocation = "127.0.0.1";
$dbname = "information_schema";
$dbuser = "root";
$dbpasswd = "";

$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx)
{
echo "Can not connect to mysql!";
exit();
}

if (!@mysql_select_db($dbname,$dbcnx) )
{
echo "Can not connect to db!";
exit();
}

$ver = mysql_query("SELECT VERSION()");
if(!$ver)
{
echo "Wrong query!";
exit();
}
echo mysql_result($ver, 0);
?>


Подставьте свой пароль в $dbpasswd и откройте страницу localhost/mysqltest.php. Если все прошло хорошо — вы увидите версию mysql.

PhpMyAdmin



Распаковываем phpmyadmin в C:\www\localhost\htdocs\. Переименуйте директорию в phpmyadmin и зайдите на страницу localhost/phpmyadmin/.

Логин — root, пароль — тот, что вы вводили при установке mysql.

Вы увидите phpmyadmin и кучу ворнингов внизу страницы.

Во-первых, подключите модуль extension=php_mbstring.dll в php.ini.

Затем переименуйте C:\www\localhost\htdocs\phpmyadmin\config.sample.inc.php в config.inc.php и откройте на редактирование.

Найдите $cfg['blowfish_secret'] = '' и введите какие-нибудь символы, например:

$cfg['blowfish_secret'] = 'dfldkfjdkf7fkjkj'

Перегрузите страницу с phpmyadmin и заново залогиньтесь.

Теперь нужно подключить дополнительные возможности для работы с таблицей.

Откройте консоль mysql и вставьте:

source C:\www\localhost\htdocs\phpmyadmin\scripts\create_tables.sql


Далее там же (предварительно вставив свой пароль вместо «пароль_для_юзера_pma», ковычки оставить):

CREATE USER 'pma'@'localhost' IDENTIFIED BY 'пароль_для_юзера_pma';
GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost';
FLUSH PRIVILEGES;


Откройте C:\www\localhost\htdocs\phpmyadmin\config.inc.php и раскомментируйте секции:

/* User for advanced features */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'здесь ваш пароль';
/* Advanced phpMyAdmin features */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';


Подставьте в $cfg['Servers'][$i]['controlpass'] тот пароль, который вы установили для пользователя pma.

Выйдите из phpmyadmin и зайдите заново. Вы больше не должны видеть никаких ошибок и предупреждений.

Настраиваем почту



Чуть ранее вы поставили почтовую заглушку Test Mail Server Tool. Запускайте ее. Значок будет висеть в трее.
Проверьте в настройках, чтобы директория для почты была C:\WebServer\SMTP\mail.

В файле php.ini должны быть раскомментированы следующие строки:

SMTP = localhost
smtp_port = 25
sendmail_from = me@example.com


Перезапустите apache, если сделали изменения (у меня был закомментирован email).

Создадим файл C:\www\localhost\htdocs\mail.php:

<?
$to = "foo@bar.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
echo("Message successfully sent!");
} else {
echo("Message delivery failed...");
}
?>


Переходим на страницу localhost/mail.php.

Вы должны увидеть Message successfully sent! и через некоторое время откроется окно. У меня это была «Почта Microsoft Windows Live».

image

Также создался файл почты в директории C:\WebServer\SMTP\mail. Нажав кнопку «Удалить» в окне, файл автоматически удалится. Жутко удобно =). Отправка почты также тестировалась мной на Joomla.

Post scriptum



Для доступа к MySQL можно использовать phpmyadmin, стандартную консоль, либо скачать MySQL GUI Tools. Также существует неплохая программа SquirreL SQL, но для нее надо качать jdbc драйвер. Для тех, кто работал с Toad for Oracle есть хорошая новость: существует бесплатная версия Toad for MySQL. В MySQL Administrator из набора MySQL GUI Tools жутко удобно разруливать пользователей и их права. Только поставьте галочки «Show global privileges», «Show schema object privileges» и «Show hosts in user list» в настройках программы.

Документация по apache
Документация по php
Документация по веб-технологиям
Еще немного документации по веб-технологиям
И еще...

Жду комментариев и предложений по улучшению.
+37
11 октября 2009, 05:16
247

комментарии (257)

+42
aysen #
А можно за минуту поставить Денвер.
+12
zeroed #
Конечно можно.

Выбирать вам.

Я раньше ставил денвер, теперь предпочитаю все делать ручками.
+31
mastikhin #
+7
artch #
А я раньше делал все ручками, а теперь на всех девелоперских машинах решили ставить XAMPP. Единообразие среды решает. А замороченный Денвер меня напрягает.

Хотя на серверах, разумеется, никаких сборок.
0
Perez #
а что там в денвере замороченного? всё крайне просто, а настройка крайне похожа на реальный сервер, что лично для меня оказалось очень полезным :).
НЛО прилетело и опубликовало эту надпись здесь
+1
ConstNW #
<VirtualHost _default_:80>
UseCanonicalName Off
VirtualDocumentRoot c:/www/%-1/%-2/htdocs
</VirtualHost>

%-1 — домен первого уровня
%-2 — домен второго уровня
НЛО прилетело и опубликовало эту надпись здесь
0
ConstNW #
это рабочий пример конфига апача для добавления виртуалов без перезагрузки.
не нашел в своем сообщении никакого сравнения. где там написано что что-то лучше?
НЛО прилетело и опубликовало эту надпись здесь
0
ConstNW #
просьбы конечно нет, там скорее мольба о помощи человека уставшего перегружать апач ;)

у меня без днс-сервера все прекрасно получается.
в /www лежит make-файл, который при вызове из консоли make test.domain
создает все каталоги, тестовые файлы и делает запись в /etc/hosts

Домены всегда как минимум двухуровневые и «эта апачевская регулярка» у меня никак не ломается.

без консоли жить не получается. использую cyg-win.
НЛО прилетело и опубликовало эту надпись здесь
0
ConstNW #
конечно как алиас домен третьего уровня не пройдет, но такое требуется очень-очень редко и прописывать вхост руками не проблема.

в крайнем случае всегда можно написать скрипт.

а если использовать не как алиас, а как отдельный сайт, то можно использовать конструкцию www/%-1/%-2+/htdocs

лично мне просто влом использовать на рабочей машине трехуровневые домены.)
НЛО прилетело и опубликовало эту надпись здесь
0
ConstNW #
Нет-нет. мейкфайлы не только создают инфраструктуру, но еще и занимаются сборками и деплоем и т.д.

Если вы верите, что днс за вас все сделает, то поставьте bind. Сборки по windows есть как отдельные, так и в составе проектов cyg-win, mingw и т.п.

Данная строчка разделит доменное имя на две части домен первого уровня и все остальное.
т.е.
test.domain — /www/domain/test/htdocs
www.test.domain — /www/domain/www.test/htdocs
НЛО прилетело и опубликовало эту надпись здесь
+1
MpaK999 #
Просто это даёт вам во многом понять как на самом деле работает веб-сервер и что на сервере файлы виртуальных хостов и записи в DNS не создаются автоматом при запуске севера (как в денвере Перл скриптами).

Так же позволяет самому настраивать нужные модули в дальнейшем контролируя все действия.

Так же как автор всегда настраиваю на рабочей Windows машине сам, только обычно еще ActivePerl прикручиваю и последнее время Ruby через SCGI
0
Perez #
А я хостеру доверяю всей этой лабудой заниматься, всё же он за это деньги получает :). А когда баловался с ВДС, то там через панель администрирования это делалось даже проще чем в денвере.
НЛО прилетело и опубликовало эту надпись здесь
0
diamon #
Apache 2.0.63
PHP 5.2.6
+5
zar0ku1 #
или WNMP (Windows + NGINX + MYSQL + PHP)
–3
Arris #
Можно. Но у Денвера есть одна мааааааааленькая проблемка.

 require_once "/core/any_lib.php";

пытается подключить библиотеку, лежащую… где-то в районе C:\core\ (зависит от диска)

Это конечно лечится
  require_once $_SERVER['DOCUMENT_ROOT']."/core/lib_articles.php";

вот такой штукой.

Но эта штука сама по себе порождает еще один косяк (я навскидку не помню какой, но там тоже что-то с путями)

P.S. Да, возможно я чтото делаю криво. Может быть. Очень может быть. Но все, у кого я консультировался говорят — «снеси денвер».
0
lifestar #
У меня нет такой проблемы, пользуюсь денвером уж 5 лет.
Может поможет:
set_include_path(dirname(__FILE__));
в index.php
–2
Arris #
Мм… а при чем тут index.php?

Я вот скажем вызову onClick'ом какой-то скрипт, который лежит глубоко в /a/b/c/e/f/g/h/i.php

Но он использует библиотеку /core/core.php

Логично написать require "/core/core.php"; Наверное логично :)

Пишем и… наблюдаем вышеописанный эффект.

P.S. Да, возможно я что-то делаю не так. Но что?
P.P.S. Я не говорю что денвер плохой. Это инструмент. Но не универсальный.
0
lifestar #
onclick'ом вы делаете ajax запрос?
ну… я честно говоря не вызываю скрипт напрямую прямо так /a/b/c/e/f/g/h/i.php
все запросы проходят через корневой index.php
0
Arris #
Ну я может быть немного криво объяснил. Попробую разложить.

Есть некий уже написанный проект (ссылки не дам, разве что только в личку, опасаюсь хабраэффекта ;) ) — интернет-магазин контактных линз и сопутствующей атрибутики. Писал весь движок с нуля — так интереснее ;)

На страничке раздела магазина (ага, она выглядит как-то вроде index.php?a=shop&d=N ) представлены товары. Тыкаем кнопочку «добавить в корзину» — хайслайдом открывается описание товара + указываем параметры (количество, оси оптические и астигматизмы разные), жмакаем «заказать» — дергается скрипт, который заворачивает параметры в строку запроса, скармливает её скрипту и рисует ответ «добавлено» (или не рисует)

Все шло хорошо, пока я не задумался об оптимизации кода, модульности итд итп.

Потому что одно дело когда мы вызываем этот скрипт core/cart_action_add.php и он дергает некая либа.php, лежащая на одном уровне с ним.

И другое дело, когда у нас ядро лежит по известному пути /core/…, скрипты отвечающие за магазин /shop/… или где-то еще и не хочется каждый раз чесать репу — "../core/core.php " или ../../a/b/c/d.php

P.S. Да, а еще я знаю про аццки клёвый вуду mod_rewrite, но никак не могу научиться нормально с ним работать :(
0
Arris #
Можно было наверное для добавления заказа в корзину дергать что-нибудь вида index.php?action=add&where=cart&what=ID…

Но… по здравому размышлению я решил так не делать :)
0
lifestar #
почему? выглядит неплохо)
0
Arris #
Но только выглядит )
0
ConstNW #
поставьте include_path через значения в .htaccess
0
ConstNW #
*в корне сайта.
0
Arris #
Invalid command 'include_path="."', perhaps misspelled or defined by a module not included in the server configuration
0
ConstNW #
php_value include_path «путь до папки с этим файлом»
0
ConstNW #
кавычки конечно же нормальные, а не хабровские.
0
Arris #
Вот в том то и дело, что хочется обойтись без таких костылей.
+1
ConstNW #
Какие костыли? О_о
Это настройка среды исполнения. Для этого они(настройки) и были реализованы.
0
Arris #
Ну может быть. Только все равно не помогло.
0
Arris #
Один хрен.
Эффект нулевой.

php_value include_path «Z:\home\test1.ru\www\core\»
php_value include_path «Z:\home\test1.ru\www\core»
php_value include_path «Z:\home\test1.ru\www\»
php_value include_path «Z:\home\test1.ru\www»


Ни одна их этих строчек никакого положительного эффекта не возымела.
И без кавычек попробовал тоже. Чуть чуть различается сообщение об ошибке.

Одно расстройство короче. :((

Warning: require(/core/test.php) [function.require]: failed to open stream: No such file or directory in Z:\home\test1.ru\www\index.php on line 2

Fatal error: require() [function.require]: Failed opening required '/core/test.php' (include_path='Z:\home\test1.ru\www\core"') in Z:\home\test1.ru\www\index.php on line 2
0
ConstNW #
"/core/test.php" — это абсолютный путь
в никсах /начиная с корня системы.
в винде(в среде апача) / начиная с корня текущего диска.

т.е. в конфигах под виндой тоже можно писать /home/test1.ru/www

для того, чтобы получить то, что вы хотите:
php_value include_path ".;/home/test1.ru/www"

а в коде include «core/test.php»;
0
Arris #
а в коде include «core/test.php»;


Ёлки палки.

А теперь давайте рассмотрим такую структуру каталогов:
index.php
core/core.php
core/a/b.php
folder/c/d.php


Что нужно писать в b.php и d.php для включения файла «core/core.php»?
0
ConstNW #
include «core/core.php»
0
Arris #
Спасибо.
0
Stepanow #
Мой Denwer на флешке не знает, под какой буквой окажется диск, с которого его запустят завтра. И ничего — инклюдит библитоеки без проблем. Разумеется портативная установка. Я что-то делаю не так? :)
0
Arris #
Вы хотите добиться того же эффекта, что и у меня? :)

Давайте я положу свою сборку на фтп? :)
0
conturov #
Нет такой проблемы. Виртуальный диск прописан? Вы его куда хоть ставили?
0
Arris #
Прописан конечно. Правда он запускается не при старте системы, а ярлыками. Но что-то я не верю что именно в этом дело.

C:\WebServers\
0
Arris #
Z: == C:\WebServers\

Да, точно. Не в C:\core\ оно ищет файлы, а в z:\core\

Странно что не находит.
0
conturov #
Видно конфиги попорчены.
Скачайте нормальный денвер, и перенесите home
0
Arris #
Скачал заново денвер, поставил, написал тестовый скриптик:

Warning: require(/core/test.php) [function.require]: failed to open stream: No such file or directory in Z:\home\test1.ru\www\index.php on line 2

Fatal error: require() [function.require]: Failed opening required '/core/test.php' (include_path='.;/usr/local/php5/PEAR') in Z:\home\test1.ru\www\index.php on line 2
0
Arris #
Прошу прощения, что уехало вправо.
0
Arris #
Код буквально такой:

<?php
  require "/core/test.php";
  echo test(22);
?>



Без /core все работает.
0
conturov #
А русских букв нет в названии папки или файла?
Только core или другие папки от корня так реагируют?
0
Arris #
Нет конечно, никаких русских букв в путях ни до, ни после.

Любые папки так реагируют.
"/a/b.php" — посылает, «a/b.php» — нет.

Warning: require(/xxx/yyy/test.php) [function.require]: failed to open stream: No such file or directory in Z:\home\test1.ru\www\index.php on line 2
0
conturov #
А какая ОС стоит?
+1
kvf77 #
А потом ныть по форумам почему на линухе код не работает. Денвер для совсем зеленых новычков. Профи с денвером — это ужас на крыльях ночи.
0
alternativshik #
Профи с денвером? Вы что-то явно путаете ;-)
0
kvf77 #
Это вы путаете — смысл моего высказывания как раз негативный.
0
Perez #
Ну вот он, снобизм попёр. А код вы, наверное, в блокноте пишите? :))
НЛО прилетело и опубликовало эту надпись здесь
0
AndrewStephanoff #
нет
0
NeX #
Работает. Взять его можно из под Zend Studio 7.0.1 или Zend Server

Несколько но:
1) Apache 2.2 поддерживает только Thread Safe модули. Zend Debugger не выпускается под Thread Safe. Работать под апачем с php модулем не получитсяъ
2) В Zend Studio 7.0.1 Zend Debugger скомпилирован VC9, в Zend Server — VC8. PHP должен быть той же версии. Если интересует, скину Zend Debuuger требуемой версии на почту.
НЛО прилетело и опубликовало эту надпись здесь
+3
parikmaxep #
Прелестно )
Столько воспоминаний нахлынуло.
Первый раз поднимать апач и пхп довелось в общаге, под руководством знакомого пхп-программера. Жутко он нервничал, если я переспрашивал что-то )) Лет семь-восемь назад это было. Конфигурацию железа уж и не припомню. Одно помню точно — на той машине я первый раз проходил Фоллаут 2 ))

PS: прошу прощения за отсутствие конструктива в комментарии. Уж очень хотелось выразить благодарность за недюжинную порцию позитивных эмоций )
+1
drjohnes #
Да-да, и воспринималось это тогда как что-то из ряда: первый построенный дом, первое посаженное дерево, первый рожденный сын, первый запущенный сервер… )
+7
andryukhin #
Про дистрибутив PHP
На страничке загрузки слева есть ответ на вопрос «Which version do I choose?», где написано, что с Апачем можно использовать только сборки в VC6. Поправьте в посте, пожалуйста.
0
zeroed #
Спасибо большое, поправил.
+1
Etherial #
А вот с Apache взятым с http://www.apachelounge.com можно и нужно брать php скомпилированный в VC9.
+1
zeroed #
А с апачем взятым от дяди васи нужно брать пхп от коли =)

Ога
0
peterpro #
Спасибо, интересный пост. К стыду своему, всю жизнь на AppServ сижу :)
0
JackFrost #
может у добрых людей есть урлик на сборку пхп5 с поддержкой работы с апаче1
и модулем oci8… ищу давно, не могу найти =( нахожу лишь советы перейти на зенд, где все ето собрано или выдрать оттуда модуль…
0
jiexaspb #
Интересует такой вопрос. Не появилось ли утилит под Windows, которые смогут расширить работу виндовского файла hosts, чтобы он мог поодерживать конструкции вида
127.0.0.8 *.mysite.ru

например, когда делаешь проект, на котором поддомены это имена юзеров, то для тестов очень требуется поддержка данной фичи

P.S. Танцы с бубном вокруг DNS серверов — знаю, пробывал — работает. Но геморно это всё. Хочется простой поддержки знака * в hosts
–1
AndrewStephanoff #
+1
jiexaspb #
бла-бла-бла
как настроить апач я знаю
а вот как браузеру вбить, чтобы он при запросе *.mysite.ru отправлял запросы на mysite.ru — тут загдвозка
точнее установив DNS можно сделать, но трудно
а я все таки жду патч, для hosts чтобы там можно было использовать *
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
+1
megahertz #
Проще потратить $3-$5 и купить домен второго уровня. Ну или можно поставить локальный DNS сервер.
+2
iDen #
очень занимательная статья. спасибо что расмотрели именно ручную установку веб сервера на винду.
а так существуют XAMPP, TopServer, до денвера руки и не доходили.
на мой взгляд самый лудший это XAMPP.
+5
Deleter #
И где в слове «лудший» опечатка?
0
Lucky_Student #
Я думаю в первой букве. Наверное вместо «л» имелось ввиду «х» ;-)
P.S. Ничего против XAMPP не имею. :)
0
Gorthauer87 #
Да я помню в винде один раз руками собирал тестовый сервер, замучался, но когда он заработал, то был дико доволен. Сейчас думаю ежели возникнет необходимость, то поставлю Денвера. Кстати для остроты ощущений советую попробовать ещё собрать, например php, со своими кастомными флагами :)
+1
TWINc #
А я просто ставлю AppServ. 3-й год использую, зависимости никакой :)
+3
keymone #
на своем опыте убедился, что разворачивать девелоперский сервер на винде нужно путем поднимания линукс виртуальной машины с нужными серверами и NFS для простого и быстрого доступа к файлам из винды
0
AndrewStephanoff #
я также к этому пришёл :)
0
Arris #
Это для тех, кто разбирается в линуксе. :)
0
keymone #
ну извините, разворачивать девелоперский апач+пхп+мускул сервер не разбираясь в линуксе это ересь
+1
Arris #
извиняю :)

я вот не знаю линукса. И как-то не ощущаю себя ущербным из за этого. Ну вот не возникало как-то жесткой и осознанной необходимости (либо интереса) его специально изучать. Возникнет — изучу.

Но статья очень вовремя. Сейчас дочитаю остальные вкладки и буду ставить :)
0
keymone #
так оно и не возникнет просто так. вот пройдете следами автора статьи, все поднимете, настроите, поработаете и через каких-нибудь пару месяцев возникнет необходимость в плагине который под винду не компилится. ну вариантов море, но результат один — вы таки установите линукс(или нативно или на ВМ) и разберетесь как поднять там все ети сервера. так почему не сделать это сразу?

чесно говоря знания линукса для настройки вышеописанного сервера нужны минимальные
0
Arris #
Попробую объяснить еще раз.

Опыт в линуксе у меня нулевой. То есть вообще нулевой.

Несколько лет назад я поставил дома OS Solaris 10. Поковырялся и понял, что я конечно в ней разберусь. За полгодика упорного чтения документации и изменения структуры мышления.

Сейчас я тоже могу поставить линукс. И тоже за конечное время я в ней разберусь. Тоже ценой изменения структуры мышления/сознания. Но вот именно на это изменение у меня сейчас нет ни времени, ни сил, ни желания, ни необходимости, что самое главное.
0
moscow_beast #
Понял вас. Мне тоже было комфортнее в Windows, пока я не периначил себе под Linux.
Просто если есть вещи которые в линуксе действительно проще. Например данная статья, для популярного дистрибутива Ubuntu (ну или Debian, etc.), влезла-бы в пару строк.
Кроме того, готовый продукт вероятнее всего будет скорее всего работать на Unix-подобной системе, а в PHP (да и апаче) есть некоторые функции для работы с файловой системой, в которые с Windows-мышлением, мне лично были не до конца понятны.
Вобщем, LAMP-программисту, как мне кажется, полезно иметь под рукой Linux просто для понимания.
0
Arris #
А еще OS/2 хорошая система :)
0
moscow_beast #
Хорошая, но не та. Смысл как-раз в том, что-бы ОС была как можно ближе к Unix. Linux этому вполне отвечает, плюс ко всему, будет попроще прочих Unix и Unix-подобных (хотя это повод для холивара). OS/2-же, ближе к Windows и разновидностям DOS (я про ФС, главным образом).
Кстати, еще вариант в рамках Windows, воспроизвести окружение с помощью cygwin.
0
eduardbareev #
о, у меня тоже самое только по SMB, в какой-то момент рыл на NFS и решил не ввязываться, т.к. не очень было понятно насколько стабильно будут работать средства доступа по nfs в винде. не расскаже вкратце как это делается? буквально в нескольких шагах, и какой софт для nfs надо в винде поставить? спасибо
+1
keymone #
сначала тоже пробовал SMB но уж ОЧЕНЬ оно медленное(причем родной виндовый сервер медленнее линуксового сервера на виртуалке о_0)

поднять на линуксе NFS не проблема, а вот с подключением винды к нему — туговато(вообще удивляюсь микрософту — столько лет игнорировать нормальную технологию, пытаясь заменить ее своим говном — повесить их всех надо а потом сжечь).

вобщем для XP есть SFU(http://en.wikipedia.org/wiki/Microsoft_Windows_Services_for_UNIX) — немного поплясать с бубном и заработает, а вот семерка и наверное виста уже такой роскоши лишена. туда впаяли какой-то родной NFS клиент(устанавливается из диалогового окна для установки стандартных виндовских програм), который иначе как анонимусом к NFS шаре не подключается.

Может и подключается но плясать с бубном нужно намного больше и активнее — меня на это не хватило.
+1
eduardbareev #
Вот я до SFU как раз догуглил но дальше не пошел. Спасибо, зато я теперь знаю есть в природе людии у которых оно работает по крайней мере в XP.
Кстати я пока гуглил, помню натыкался еще на несколько коммерческих NFS драйверов для винды, но не пробывал.

плюсануть не могу к сожалению. +1
0
moscow_beast #
Ага, у этого подхода есть еще плюсы: на виртуальной машинке можно на сетевой интерфейс подвесить несколько IP адресов, что удобно когда в производстве несколько сайтов, и есть начальство за соседним компьютером, которому надо их время от времени показывать.
+5
Joka #
отличная статейка для новичков, более опытным программистам это должно быть уже знакомо все
+3
jandosul #
>>Я буду очень благодарен тому, кто расскажет мне разницу между 4-мя дистрибутивами php, я >>остановился на vc9 thread-safe.
VC6 чтоб под апач а VC9 под ИИС работать )
Благодарность можете выразить плюсиком )
0
zeroed #
Спасибо!
+1
bat #
Есть VC9 сборка Apache. На сайте утверждают, что есть профит.
+3
Onthar #
Очень подробно я внятно описано.
А комменты о сборках не совсем в тему, все таки обсуждается самостоятельная установка «с нуля».
+2
NULL_byte #
www.manlix.ru/zipped/manlix.ru-article0.zip
наиподробнейший мануаал, по которому я учился
–2
yellow_duck #
Мда, ужас. НО зато у вас ИЕ нативный есть.
0
Fesor #
Сейчас хочу собрать себе WEB сервер для работы, только немогу решить как лучше делать. Запускать MySQL и Apache как сервис или же как процессы… Просто очень хочется независимости моей сборки от системы. Какие аргументы могут меня убедить запускать это все как сервис а не как обычный процесс?
0
Fesor #
вопрос исчерпан)
–2
timon_sk #
заранее извиняюсь за такой вопрос, но я в веб серверах не очень разбираюсь.
в чём разница в использовании различных веб серверов: apache, iis, sambar server, nginx и т.п.? по-моему они все какие-то одинаковые, кроме того, что для iis уже сразу есть удобный ui для его настройки. я месяц просидел с apache, пару лет юзал sambar server, сейчас, после установки вин7, сижу с iis, но так и не ощутил никаких различий.
+2
Fesor #
en.wikipedia.org/wiki/Comparison_of_web_server_software — возможно вам будет интересно.
+2
regeda #
У меня все гораздо прозаичнее:
1. VirtualBox 3
2. Ubuntu Server 8.04
3. Все остальное получаем через «apt-get» или «configure, make, make install»
0
Fesor #
делал так где-то с год назад)
–4
metamorph #
+1
0
musuk #
А мне вот не удаётся поднять php 5.3 + Apache 2.2 + xdebug на Windows Vista.
При запуске отладчика падает Apache.

Было бы интересно, как автор поста «девелоперский сервер» без отладчика использует или как он ставил отладчик.
0
AndrewStephanoff #
php собран под vc6 или под vc9?
0
musuk #
Всё под vc6
0
megahertz #
Знакомо, поэксперементируйте с конфигом. Вроде у меня проблемы были пока не отключил профайлер. Правда после этого переодически всеравно Апач вылетал.
0
romanoza #
есть проблема с вистой и 7й виндой с xdebug
там нужно качать сборку не с офф сайта, а погуглить
народ сталкивался собирал умно
+2
WGH #
Если точнее, вот тут. Мне помогло.
0
romanoza #
а в 5.3 работает?
0
romanoza #
о, туплю, там все для 5.3 :)
спасибо
0
WGH #
Я, правда, признаюсь, что редко у меня все же падает, но с обычными билдами ситуация была просто невыносимая: не только очень часто падает, да ещё тормозит жутко.
0
romanoza #
хммм, вот у меня как-то запускалось, вот сейчас поставил windows.php.net/downloads/releases/php-5.3.0-Win32-VC6-x86.zip
xdebug не появляется в пхпинфо
0
WGH #
zend_extension без _ts попробуйте
–5
sky_lord #
Я, наверное, странен, но все-таки объясните кто-нибудь — зачем все описанное в топике делать под Windows??? Это не флейм, мне действительно непонятно. Судя по комментам — многим действительно это нужно и востребовано, но в чем смысл? Да, чтобы что-то по мелочи протестить у меня тоже стоит на компе shttps, perl, php — но это именно для какой-то мелочевки. Для серьезной работы у меня отдельный сервер (или VDS — не суть), на котором все один раз настроено, который работает частично в продакшене, частично — используется для разработки. Я могу работать на нем откуда угодно без проблем: с домашнего компа с Виндой, с линуксового нетбука за городом или еще где-то, с компьютера тещи, когда сидим с женой у нее, с компьютера сестры, когда захожу к своим родителям, с компьютеров заказчиков, когда нужно прямо от них что-то быстро сделать и сразу показать… Одним словом, есть идеальная мобильность и удобство работы. Желания развернуть девелоперский центр на домашнем компе не возникало ни разу — это только лишняя прослойка во всем процессе, а потом еще обязательно бы возникла ситуация, когда я — находясь где-то — сам себя бы ругал за то, что оставил что-то дома. Не-е-ет… Только онлайн! VDS стоит какие-то копейки, достаточно один раз потратить время и все настроить, а потом достаточно копировать на новую машину свои отработанные конфиги и разворачивать все за считанные минуты. Так что, ИМХО, нет смысла плодить сущности без надобности.
0
Fesor #
VDS как бы есть, то для себя хочется что-то что всегда под рукой) Увы выхода интернет под рукой бывает и нету) Ситуация исправится только через месяца 2 наверное, но пока все печально.
0
sky_lord #
Если так, то действительно. :-) Я уже как-то привык к вечному постоянному интернету. Но если с ним действительно проблемы — то без вариантов.
+1
artch #
Это как раз вы плодите сущности. По сути, VDS для вас служит девелоперской машиной, хотя для этого можно и использовать девелоперскую машину. И чем больше девелоперов в компании, тем больше сущностей наплодится — у каждого девелопера есть своя машина, а он еще какой-то свой левый VDS использует.

Единственный верный минус, какой вы указали — это синхронизация, но регулярные коммиты с легостью решают это. Я ведь надеюсь, вы не по FTP код на сервер выкладываете?
0
AndrewStephanoff #
объясните, почему каждый девелопер должен использовать левый VDS?
каждый разработчик должен иметь пользователя на development server, исходники лежат у каждого в его домашней директории, доступ к исходникам либо через ssh либо через smb
каждый разработчик имеет свою страницу вида ..на которой можно производить отладку.
никаких проблем ни с синхронизацией, ни с чем.
0
AndrewStephanoff #
парсер съел шаблон :)
<pojectname>.<developer>.<devserver>
0
artch #
Ужас какой. Откройте для себя системы контроля версий.
0
AndrewStephanoff #
давно открыл. при чем это здесь?
0
artch #
При том, что как раз в вашем случае и напложено стопицот левых VDS с превеликим излишним усложнением всей инфраструктуры.
0
AndrewStephanoff #
а и не нужно стопицот левых VDS, достаточно одного devserver
с чего вы вообще решили что каждому разработчику нужен отдельный сервер?
0
artch #
А где я говорил про отдельный сервер? VDS — это не отдельный сервер. Пусть даже вы не создаете отдельных виртуальных, но искуственное усложнение инфраструктуры все равно присутствует. У девелопера есть его машина, а вы добавляете ему еще одну.
0
AndrewStephanoff #
хорошо :) открою страшную тайну — VDS также может быть один на всех разработчиков.
усложнение небольшое, к тому же обслуживать devserver должен не разработчик, а сисадмин.
к тому же становится удобнее работать — запускать тесты, вставлять дампы в базу, grep опять же, возможность бекапов папок пользователей. А система контроля версий используется именно для контроля версий, а не как транспорт :)

0
artch #
Зато вы ограничиваете сотрудников и теряете кучу плюшек в гибкости.
0
AndrewStephanoff #
в чем я ограничиваю сотрудников и какую гибкость я теряю?
0
artch #
0
AndrewStephanoff #
и что?
причём здесь студии, клепающие сайты-визитки?
я тоже, кстати, в такой студии не работаю, и что дальше?
ещё раз напишите, какую гибкость я теряю и в чём я ограничиваюсь?
про сборки для компании — не надо. Или для вас обновить собрку и переустановить ее на всех девелоперских машинах проще, чем внести изменение в конфигурацию devserver?
0
mac2000 #
поддерживаю — это верный подход

ибо поднять сервер для проекта более сложного чем сайт визитка, особенно если это IIS/ASP.Net — это реальный геморой — там все намного непонятней и сложнее

особенно приятные плюсы:
— разгрузка компьютера разработчика
— не надо постоянно следить за тем что не относиться к тебе (например заливка update скриптов в базу)
— «ввод» нового человека в команду — максимально прост

особенно неприятные минусы:
— падение такого сервера == параличу команды разработки

а вообще — это довольно больная тема большинства команд — каждый придумывает свое колесо…
0
sky_lord #
Плюсадин. В смысле, плюсы и минусы отражены верно. :-) В защиту минуса скажу то, что поддерживать работоспособность одного такого сервера все же проще, чем кучи отдельных машин: и рейды можно какие угодно организовать, и бэкапы делать ненапряжно…
0
artch #
Зачем тут отвечаете, специально туда ссылку указал. Не буду же я копировать ответы в двух ветках.
0
mac2000 #
да тут посты появляются быстрее чем я печатаю
0
artch #
Бегом на Клавогонки тренироваться :)
0
sky_lord #
Кстати, плюс вам в карму за проект. :-)
Он меня в свое время позабавил. :-)
0
sky_lord #
А вот представьте, каково мне, раз у меня на каждое предложение аппонента — абзац текста? ;-))))
0
sky_lord #
Мы не добавляем ему машину. Мы создаем общий девелоперский сервер для всего проекта независимо от количества девелоперов. Если девелопер один — это выглядит как еще одна машина. В таком случае, возможно, действительно появляется звено, кажущееся лишним на первый взгляд. Но если вспомнить, что даже одному девелоперу проект надо куда-то выкладывать для показа заказчикам и т.п., то звено действительно только будет казаться лишним. :-)
Однако, я могу сконструировать ситуацию, которая попадет под ваше описание. Например, если девелопер один, но работает не над своим проектом, а по найму третьей стороны и не имеет доступа к серверу, так что вынужден проверять свою работу локально. Тогда да, соглашусь, что лучше ему проверять ее действительно локально, а не делать еще один сервер/VDS. :-) Однако, как мне кажется, данная ситуация слишком искусственна и редко встречается: когда девелопер один, он все же зачастую имеет определенный контроль над проектом.
0
artch #
Мы не добавляем ему машину. Мы создаем общий девелоперский сервер для всего проекта независимо от количества девелоперов.
Это приемлемо только в случае, если все проекты компании заведомо работают под одинаковым серверным окружением. Может быть в случае студий, клепающих визитки по пять штук в день, это и так — не знаю, не работал. Но во многих случаях такую роскошь себе не позволить.
0
sky_lord #
Я же написал «девелоперский сервер для всего проекта», а не для «всех проектов». И в одном из предыдущих комментариев тоже написал, что оптимально делать именно по серверу на каждый проект. Мы с вами в одном русле думаем! :-)
А вот с вашим техническим директором, который всех, как я понимаю, заставляет держать у себя на машине полное рабочее окружение проекта и, судя по всему, мало думает об оптимизации издержек — я, уж извините, не вполне согласен. :-)

ps: Стыдно признаться, но несмотря на то, что строго говоря я являюсь сейчас по сути «фрилансером», я ни разу в жизни не делал сайтов-визиток. И очень из-за этого комплексую. :-( Потому что все везде все время пишут про то, как клепают по пять сайтов в день, а я не понимаю — как это возможно??? У меня, даст Бог, за день получается первый черновик ТЗ одной фичи с заказчиком согласовать — который на утверждение руководству представителя заказчику идет… Какое уж там «визитки по пять штук в день»… :-(
0
artch #
Я же написал «девелоперский сервер для всего проекта», а не для «всех проектов».
Вот. Размножение сущностей продолжается. А если на один проект отведен всего один или два разработчика? Получаем размножение сущностей один к одному или один к двум. И многократное умножение геморроя в случае, когда текущая задача конкретного разработчика включает в себя и необходимость легкого ковыряния окружения.
0
sky_lord #
:-( Ну почему вы меня не читаете? Я же написал об этом буквально на два комментария выше: habrahabr.ru/blogs/webdev/71743/#comment_2066987
0
artch #
Хорошо, сойдемся на том, что вы говорите про большие софтовые продуктовые компании, где сотня разработчиков и одно окружение. В таком случае, согласен, плюсы перевешивают минусы.
0
AndrewStephanoff #
десять минут назад вы писали про компании, клепающие сайты-визитки по пять штук в день
0
artch #
Ключевое слово — одно окружение, а не большие. Я до сих пор с таким не сталкивался (чаще попадаются большие компании с кучей проектов, парочкой девелоперов на каждом и разным окружением), но оно в природе все-таки существует.
0
sky_lord #
Артем, вспомните, о больших компаниях говорить начали именно вы. :-)
Признаюсь честно — у меня нет большой компании и я в ней не работаю, но мне все равно удобнее все держать не на локальном компе, а на сервере. На локальном компе у меня стоит Eclipse и все.
Впрочем, в другой ветке комментов я уже предложил закончить на этом наш спор, так что лучше этим и займусь. :-)
0
Wott #
Не знаю. Когда перешел с удаленного сервера на локальный сервер, установленный на девелоперскую машину, стало как-то быстрее. Перешел когда во время срочного и дорогого проекта, в результате замыкания погорел домовой свич у провайдера.
0
sky_lord #
Понимаете, я вообще немного с другой точки зрения смотрю на подобные вопросы. Например, подобная ситуация со свичом на мой взгляд — косяк именно вас, а даже не вашего провайдера, — если вы не обеспечили себе бэкап. Вот у меня вся работа завязана на онлайн, поэтому это в моих же интересах — обеспечить себе постоянный и бесперебойный интернет.
Что касается основного вопроса насчет того, где держать окружение проекта — хорошо, если вам получилось удобнее делать это у себя на локале. В комментариях уже приводились примеры, когда это действительно оправдано (например, когда реально нет постоянного подключения к интернету). Но на мой взгляд — это не должно быть основным решением, которое нужно всем рекомендовать. Более того, чем больше организация — тем это хуже. Ну а зачем сначала делать по одному, а потом — переделывать и переучиваться? Лучше уж сразу делать с перспективой… Но, повторяюсь, я конечно допускаю, что в некоторых случаях держать у себя все окружение проекта может быть просто необходимо без вариантов.
0
Wott #
У меня есть бэкап в виде GPRS, но работать на нем — нереально. А вот если все расположено локально то вполне жить можно.

С точки зрения проекта, нужна VCS, лучшие из которых сейчас распределенные. Для локального депозитория нужно иметь также и локальное окружения для тестирования и демонстрации, ведь не сливать же каждый раз на девсервер?
С точки зрения переспективы: усложнения, масштабирования — локальное окружение лучше. Минус который я вижу — если вдруг вместо Apache+PHP+mysql понадобиться IIS+.NET+MSSQL то общий сервер выиграет во времени настройки. Но правильная организация поддержки собственно сделает разницу несущественной — управлять конфигурацией одного сервера или то-же самое в проектных конфигах разницы большой нет.

С точки зрения мобильности, как Вы правильно заметили, выбора нет совсем.
0
sky_lord #
1) Не, GPRS — это не бэкап. :-) Это даже интернетом назвать трудно… Собственно, из-за чего я и живу постоянно в городе, а не на даче. А то бы давно уже туда переселился. :-)

2) А почему не сливать? Взял, нажал кнопочку — оно и залилось. Принципиальных отличий между «нажать Save и посмотреть на localhost» и «нажать upload и посмотреть на <адрес>» я не вижу. :-) При этом, например, очень часто бывает такое, что Юникосовое окружение вообще фиг под Виндой повторишь. У меня с Перлом такое бывало неоднократно… Хотя если на локале Линукс, то, конечно, проще. :-)
0
Wott #
1. :) пока хватает раза два в год поднять и разослать сообщения и мыло почитать/отправить.

2. У меня раньше и разницы не было — только конфиги были другие — все копировалось самостоятельно. Но повторюсь — стало быстрее, видимо исчезли многочисленные мелкие задержки.

С перлом раньше было хуже — была разница в поведении существенная под винды и юниксы. Помню убил на это в свое время кучу времени. Сейчас выглядит получше, но я перешел в основном на PHP — заказов больше.
0
sky_lord #
Это вообще не при чем. Естественно, каждый девелопер работает со своей копией репозитория. Но эта копия и все необходимое для работы проекта должно лежать не на его локальной машине, а на девелоперском сервере.
0
artch #
А зачем, если поведение серверного окружения на девелоперской машине абсолютно идентично поведению оного на девелоперском сервере?
0
sky_lord #
Затем, что чтобы на девелоперской машине поведение этого окружения было идентично, требуется не хило так постараться. :-) Причем количество «стараний» растет линейно с количеством разработчиков, а обслуживание этого хозяйства — еще и нелинейно (простейший пример — обновить всем версию php или mysql). :-) Собственно, я ниже об этом уже написал.
Да, естественно, можно собрать готовую сборку, чтобы потом все ее себе ставили. Но на это опять же нужны силы и время! В разы проще настроить и поддерживать один девелоперский сервер. А подключение нового девелопера к проекту вообще будет происходить «в два клика» — создаешь ему его «песочницу» на сервере и все. А как он на своей собственной машине работает — это уже его дело — хоть в Блокноте. ;-) А если бы об удаленных сотрудниках вспомним…
0
artch #
Да, вот для этого как раз и используются сборки (возможно, уже кастомизированные с учетом потребностей компании). Обновление сборки делается не сложнее, чем обновление сервера. IDE сложней обновляется.

И я смогу спокойно работать у себя на даче, где нет интернета.

А об удаленных сотрудниках даже не вспоминайте — в Замкадье не только жизни нет, но и безлимиток с широким каналом.
0
sky_lord #
1) Ну, вы же не будете спорить, что обновить один сервер проще (например: portsnap fetch && portsnap update && portupgrade mysql51-server && /usr/local/etc/rc.d/mysql-server restart), чем 10 машин, пусть даже для этого есть готовая сборка? ;-) Можно даже не углубляться в тему и не думать, кто вообще должен готовить эти сборки: вроде как задача не вполне сисадминская, но и не вполне девелоперская — по-любому тому кто делать будет, доплачивать з/п придется. ;-)

2) Это прекрасно! Я искренне рад за вас! У меня вот не получается. :-( Без онлайновых документаций, гугла и т.п. как-то уже не получается… Поэтому считаю, что на даче надо либо бухать и не работать, либо проводить интернет — смотря что проще и с меньшими издержками можно сделать. :-)

3) Не будем холиварить. :-) У меня другое мнение и другой личный опыт.
0
artch #
Сборки готовить должен уполномоченный человек под чутким руководством архитектора. Один раз приготовить и раздать ссылку на скачку. Каждый девелопер должен просто проинсталлировать. IDE же вы не будете на удаленном сервере держать?
0
sky_lord #
1) Я о том и говорю, что если по уму, то должен делать уполномоченный человек. Но почему бы не перераспределить работу: чтобы созданием и поддержкой dev-сервера занимался сисадмин (он же по-любому в наличии есть!), а «уполномоченного человека» выгнать на хрен и забрать себе его зарплату? ;-) Это и есть оптимизация издержек, о которой я все и толкую. Не тупое «резанье костов», а именно оптимизация!
2) Вы меня, по-моему, не читаете… :-( Я уже писал, что IDE, естественно, у девелопера на локальной машине. Но нужно разделять средства разработки и средства функционирования самого проекта. IDE — это средство разработки, веб-сервер/интерпретатор/библиотеки/база_данных/прочее_прочее_прочее — это средства функционирования самого проекта и в подавляющем большинстве случаев (пример исключения я описал в одном из своих комментариев) на девелоперской машине им не место.
0
artch #
Я привел IDE лишь как пример того, что девелопер выполняет сам в любом случае. Серверная сборка проекта ставится в разы проще, чем IDE. И её поддержка проще, чем поддержка отдельного проекта. И индивидуальные настройки гибче, и работать из дома без широкого канала можно (в гугл можно залезть и через гпрс, а вот тестить на удаленном сервере уже очень болезненно), и возможностей девелоперам больше, особенно если девелопер — не быдлоскриптер, а нечто приближающееся по квалификации к системному архитектору.
0
sky_lord #
Ох, я вижу, мы вас так ни в чем и не убедили — вы уже все-таки начинаете повторяться в своих аргументах и не всегда на наши отвечаете… Поэтому, я предлагаю закончить на этой пока еще оптимистической ноте наш диспут и оставить его для чтения потомкам, чтобы они изучали и просвещались. :-)
0
sky_lord #
Ага, ага. И я о том же! Вы свой ответ чуть первее моего запостили. :-)
0
AndrewStephanoff #
случайность :) приятно увидеть единомышенников
0
sky_lord #
Прямо хочется сказать «НЯ!» и продолжить взаимные расшаркивания, но если встать на этот порочный путь, то остановиться потом очень тяжело… ;-)
+1
sky_lord #
Гм. По-моему, мы с вами немного о разном. Компания — это вопрос несколько шире, чем обсуждаемый. И от размера компании опять же многое зависит. В компании лично я делал бы вообще по серверу на каждый проект, а на сервере — для каждого из девелоперов отдельную «песочницу». Но, опять же, это все было бы именно на отдельном никсовом сервере, а не на индивидуальных машинах разработчиков. Делать это на них — только увеличивать издержки обслуживания, создавать для девелоперов лишний повод для отмазок из серии «я себе настраиваю рабочее окружение и поэтому не успел сделать то-то». О рисках и издержках связанных с возможным выходом из строя рабочих компов девелоперов — я уж и не говорю… Но, повторяюсь, работа в компании — это дело особое и отдельное. А в топике, как мне кажется, речь идет больше все же о работе индивидуального девелопера.
Что касается синхронизации, то я как раз об этом не говорил ни слова. :-) Это вопрос вообще отдельный. Я говорю именно об организации рабочего места и рабочего процесса. На рабочей машине должно быть то, что нужно непосредственно для разработки — среда разработки и т.п. А вот веб-сервер, сам интерпретатор, база данных и т.п. — это то, что нужно не для разработки, а для функционирования самого приложения. Чувствуете разницу? :-)
0
BaHbka #
>зачем все описанное в топике делать под Windows
хм. например затем, что рнр программисты работают не только в конторах занятых программированием. я например работаю в медиахолдинге и третий месяц не могу донести до местных админов почему мне нужен дев.сервер на никсах и почему на моей рабочей машине вин2к стоять не должна.
0
sky_lord #
Да, это аргумент. Сочувствую вам… :-(
0
Arris #
Ну не все же такие гуру ;-)

Надо же с чего-то начинать и на чем-то учиться? :)

Почему бы не с винды? Потом, на основании собственного опыта уже можно делать свой выбор в ту или иную сторону. Или не делать, если все устраивает. Фломастеры то разные ;-)
0
Goodkat #
А-А-А!!! Мой правильный серьёзный отдельный сервер недоступен!!! А-А-А!!! Пропал инет!!! А-А-А!!! Утром сдавать проект!!! А-А-А!!!
Моя идеальная мобильность накрылась медным тазом!!! А-А-А!!!
0
sky_lord #
Бедняга… Что тут сказать? Не надо было доводить то такого состояния, когда весь проект делается за ночь перед его сдачей. Ну и сервера нормальные надо использовать/арендовать. :-)
+6
fatum #
Обалдеть. Этот пост на столько интересен что вышел на первую страницу. Смешно.

При этом, я больше чем уверен, большинство думает что пхп под апачем напрямую работает с базой.

Что-то меня хабр все больше и больше разочаровывает. Чары так и сыплются.
0
vectoroc #
и при том, что подобных howto в гугле гуглится мильены…
0
fatum #
Цитата.
Спасибо большое, давно хотел избавиться от Денвера и получить опыт настройки своего вебсервера на своей машине. :)

Ну просто злободневная проблема дня ).

З.Ы. Пятачок, доедай свое мед, мы уходим. Кролик — спасибо.
–6
artch #
Тем временем веб-разработка всё попсела и попсела…
0
LeeQuadro #
LoadModule php5_module «C:/Server/PHP/php5apache2_2.dll»
Может, всё-же C:/WebServer/? ))
0
LeeQuadro #
Да, большое спасибо за статью. Windows 7 — всё работает!
0
zeroed #
Спасибо, подправил :) И за отзыв о 7, жду пока моя придет.
–1
AndrewStephanoff #
вообще же я бы рекомендовал ставить три версии php:
php-5.3vc9 как системный с включением его в path
php-5.3vc6 и php-5.2.11 специально для apache
0
thecoder #
Предлагаю рассмотреть еще вариант девелоперского сервера: vmware(или другая виртуальная среда) + linux(или freebsd по вкусу) + все остальное. У меня стоит slackware + samba (директория сервера подключена как сетевой диск) + apache, mysql, nginx, perl, memcached.

Какие плюсы?
1) Среда разработки может максимально приблизиться к боевому серверу(серверам).
2) Если напутать со строчными и заглавными буквами в именах файлов — винда проглотит, но в процессе выкладывания «отлаженного» кода — придется ловить неведомые ошибки. Под *nix этого нет.

Минусы.
1)Жреть памяти несколько больше.
2)Надо заставить себя разбираться в установке *nix системы. :)
3)Отладка с пошаговым выполнением требует муторной настройки и отключения некоторых модулей. Но возможности есть. :)

Опять же, серверов можно запустить несколько, поиграться с раскладкой сайта на несколько хостов.
0
zeroed #
Ога.

Я разбираюсь в nix и знаю как там все поставить.

А этот мануал под винду.
+1
nerezus #
Я не понимаю, зачем это ставить руками? преимуществ то нету, а времени несравнимо больше.
Тем более что это не даст практически-нужных знаний. только заученная последовательность действий.

P.S. 5.3 сырой, имеет критические баги(DoS) и проблемы с памятью, советую пока что его не юзать и ближайшие полгода-год ориентироваться на 5.2.
0
Sergiy #
XAMP-WAMP-LAMP…
Можно встроить разные php и mysql версии, прост в установке и главное очень быстрая установка и настройка, что бывает важно.
+1
ilder #
Спасибо за проделанную работу. Я например вот по этой статье делал php-myadmin.ru/learning/instrument-intro.html, очень подробно все описано, там же pdf-ка. Кстати она еще и обновляется, практически с каждым новым выходом пакетов добавляются нюансы и прямые ссылки на них. До этого кстати тоже использовал разные сборки, но с саморучно настроенной системой работать приятней :)
0
mac2000 #
ребята, есть вопрос:

возможно ли сделать так чтобы файл mysql базы для конкретного проекта лежал в папке с проектом?

для того чтобы можно было этот самый проект таскать за собой…
0
Arris #
2 батничка напишите и будет вам счастье ;-)
0
mac2000 #
это не удобно

так как «батничек» можно забыть запустить, а на другом компе уже не поработаешь…

вообще интересно как другие решают данную проблему: когда приходиться работать на нескольких компьютерах…
0
bat #
Виртуалка на внешнем HDD
0
mac2000 #
нет, это не то

хотя конечно сдорово, так как таская за собой виртуалку вы сможете работать почти на любом компьютере, но я к примеру сторонник версионирования файлов и храню все файлы на хостинге, собственно говоря потому и возникает вечная проблема с базок…
0
bat #
Никто не запрещает коммитится во внешнее хранилище. Если не всегда есть доступ к репозитарию, можно посмотреть в торону рапределенных систем контроля версий.
0
mac2000 #
собственно я так и делаю — такой подход меня больше всего и устраивает — но есть одна вечная беда — постоянно забываю про базу…

потому и хотел узнать может можно как то с ней побороться чтобы она лежала в папке с проектом…
0
mac2000 #
вопрос снят, как обычно — нужно было только понять — что спросить у гугла

mysql windows symbolic link

благодоря описанному способу можно хранить базу в папке с проектом — что очень упростит жизнь народу юзающему svn и ему подобные системы
0
babysas #
ТЫ БОГ! Бью неземной поклон, а я дурень уже много лень е***… занимаюсь ерундой короче, копируя папку дата на диск внешний прописываю ручками путь и мучаюсь каждый раз…
Как же все просто, если бы я тупо знал, как это называется, прощай часы жосткого секса при настройке УРА!
НЛО прилетело и опубликовало эту надпись здесь
0
Maksimus2000 #
Если на других рабочих компах должно быть все одинаково, не обязательно весь этот процесс проходить заново, достаточно перенести файлы и установить службы апача и мускла при помощи нескольких команд в батнике.
0
Maksimus2000 #
Например:

Apache2\bin\Apache -k install
«MySQL\MySQL Server 5.1\bin\mysqld» --install MySQL51
copy C:\WINDOWS\system32\drivers\etc\hosts+hosts_add.txt C:\WINDOWS\system32\drivers\etc\hosts /B
pause
0
arinoki #
у меня вопрос — а как сделать теперь этот сервер видимым из внешней сети?
0
zeroed #
Ну это уже вопрос из другого разряда.

У вас статический ip или динамический? Серый или не серый? Роутер есть?

Если серый — никак. Если динамический, то dyndns может помочь, если статический, то тупо по ip, если роутер, то 80 порт форвардить нужно.
0
dr1v3 #
Если серый можно замутить туннель к своему серверу в инете
0
sindrom #
А еще есть TopServer…
0
zeroed #
Много чего есть, ога.
0
Insar #
Автору — спасибо за подготовленый материал.
А где бы почитать о такого рода настройках, но применительно к IIS, MS SQL express и PHP?
0
megahertz #
Все это есть в официально документации PHP.
0
Insar #
Слушай, камрад. Если не трудно, приведи ссылку, где это точно есть… Я ни разу не девелопер… мне это нужно развертывания intranet-сервера. Причем, по условиям задачи, только штатными средствами windows
0
Lucky_Student #
Спасибо большое, давно хотел избавиться от Денвера и получить опыт настройки своего вебсервера на своей машине. :)
+1
artch #
И вам мешало отсутствие подобного материала на Хабре? Боже, куда мир катится.
+1
Lucky_Student #
Угу, матушка лень. Мне и щас лениво, но возможно я переборю лень :)
0
navion #
А mod_rewrite у вас нормально под семёркой работает?
0
mac2000 #
у меня работает, просто надо не забывать про override настройки апача, достаточно распостраненная проблема кстати
0
arinoki #
когда ставил wamp (готовая сборка) — нормально работал. полагаю, что и тут проблем быть не должно.
0
Wott #
Пара замечаний.

mysql Essentials не содержит дополнительные приятные фичи типа Profiling, что на девелоперской машине будет не лишним.

В «MySQL GUI Tools 5.0» есть MySQLSystemTrayMonitor.exe — качаем no install архив и из него извлекаем файлик. Теперь mysql в tray виден.

в php лучше иметь log_errors включенным с абсолютным путем куданить в общий лог. Это очень удобно когда AJAX строим и не мусорим проектные каталоги.

+1
scherbet #
Хороший пост, когда давно ставил все это точно так же искал подобный инструктаж)
0
masterklass #
Спасибо. В избранное на память занес)
А если мне не только PHP нужен?
–1
proxor #
А можно XAMPP и Navicat Lite. Я давно не пользуюсь phpMyAdmin, забыл его как страшный сон.
0
rushter #
Под windows предпочитаю wampserver.Поддерживает конфигурацию на лету и быстрое переключение между версиями php,mysql,apache и т.д.
0
remal #
Раз уж статья в блогу Web-разработка, то «девелоперский сервер» — это отнюдь не только «apache/php/mysql». Это может быть и не apache, и не php, и не mysql.
0
zeroed #
ога, это может быть и tomcat + jdk1.6

и чо, он от этого перестает быть девелоперским сервером?
0
BReal #
Web-Platform Installer не катит?
0
bat #
Не знаю, озвучил ли кто-нибудь, как быть если нужны разные версии Apache/PHP?
0
Honeyman #
Спасибо, очень своевременная статья! Не хотите опубликовать её в каком-нибудь интернет-журнале наподобие IZone?

А не можете рассказать ещё, как ко всему этому прикрутить CGI-скрипты на Перле и SSI? Это примерно настолько же актуальная и важная проблема, как настройка Apache и MySQL…
0
zeroed #
CGI и SSI прикручиваются до смешного легко.

Там же, где добавляется handler для php:

AddHandler cgi-script .cgi .bat .exe

Это для cgi, а для ssi:

AddType text/html .shtml
AddHandler server-parsed .shtml .html .htm
0
Etherial #
К.О. снова многословен :)
Что за ужасная привычка у тех, кто раньше пользовался Денвером делать себе виртуальные хосты, прописывая их в файл host. Разве не проще садить разные сайты на разные порты?
0
zeroed #
на вкус и цвет фломастеры разные
0
Wott #
Мне лично менять com на local проще чем менять полность сервер и еще номер порта прописывать.
Денвер не видел ни разу. Имхо сборки — для альтернативно одаренных.
0
bat #
В пути установки куки не содержится порт, могут быть накладки.
+1
sesharim #
Касаясь некоторых комментариев по поводу Денвера. Безусловно, это удобно, но лишь для начальных разработчик. Далее, когда будете писать серьёзные приложения, по любому надо знать, как устроены конфиги, и за что отвечают каждые параметры.
+1
flaresun #
Кроме начинающих денвер удобен простотой равёртывания… т.е. когда просто надо быстро развернуть LAMP и что-то напрограммить… ну т.е. эдакое быстро разворачиваемое разовое решение.
НЛО прилетело и опубликовало эту надпись здесь
+1
zeroed #
хоть кто-то узнал!
НЛО прилетело и опубликовало эту надпись здесь
+1
develop7 #
Скажите, а вот smtp-заглушку (в комплекте IIS) из висты убрали?
0
megav0lt #
тот же денвер или xampp штука коварная. например, не так давно столкнулся с проблемой — элементарный sql-запрос на выборку из таблицы ни в какую не захотел выполняться из под денвера, но отлично заработал на связке апач+пхп+мускул. Так и не дошли руки докопаться до этой проблемы, но сам факт несколько озадачил.

денвер подходит скорее для начинающих разработчиков, осваивающих азы. да и, чтобы на случай переноса сервера на другую машину, не терять времени, можно просто сохранить конфиги, и связка в таком случае, ставится за считанные минуты.

да и, думаю, веб-разработчика, не умеющего поднять апач+пхп+мускул можно считать дилетантом :)
0
zeroed #
аналогично. сталкиваясь очередной раз с проблемой очередной сборки решил что проще сделать свою «сборку», чем разбираться в тех проблемах, которые не помогут в дальнейшем. для этого и топик.
0
xames #
Имхо, без Perl это не полноценная девелоперская среда
0
flaresun #
Кстати, а кто-нить знает что-то типа денвера, но с перлом в комплекте? А то «LAMP» разворачивается быстро, а Perl всё равно вручную ставить надо…
0
ilyuha #
Денвер для маленьких — antsar.info/denwer
0
sidorenko #
Постепенно все переводят свои приложения/сайты на utf-8 и я рекомендую выбрать эту кодировку по-умолчанию.

можете объяснить это? Мне эта тенденция непонятна…
0
zeroed #
Вы понимаете что такое кодировки? cp1251, koi8, и т.д. и т.п. и чем отличается от них utf-8?
Ну и + стандарт.
0
sidorenko #
понимаю, идёт речь о унификации. К примеру, если кто-то пишет исключительно под русскоязычную аудиторию, чем недостаточна 1251?
0
zeroed #
так а в чем проблема использовать utf-8? =)
0
sidorenko #
ну мне, к примеру, неудобно открывать файлы в утф-8, приходится их перекодировать. ноутпадом если открывать на компе, где нет подготовленного софта — видишь кракозяблы…
0
zeroed #
Ну так давайте не будем приходить к стандарту потому, что у вас чего-то где-то нет, да? =)

А я уверен, что рано или поздно utf-8 будет стандартном. Тогда исчезнут вообще какие-либо проблемы с русификацией, кодировками и т.д. и т.п.

Разве вам этого не хочется?
0
sidorenko #
не где-то у меня, а в стандартном надобе ОС Windows XP
0
zeroed #
ну и что мешает поставить нужную софтину?

в стандартном наборе вообще ничего нет. тупо ось и куча бесполезного софта.
0
sidorenko #
поставлю вопрос по-другому, зачем мне использовать UTF-8? Для создания неудобств? Меня всё устраивает в 1251, в конкретно моём случае. Очень хотелось бы услышать о приимуществах УТФ-8, при неиспользовании языков русского и английского… Мне просто задали вопрос, вот пытаюсь найти истину, пока не пойму…
0
zeroed #
Эм… хз даже что сказать.

Я не очень компетентен в этом вопросе, но вот такой вопрос с ходу:

I ♥ Habrahabr

Это можно сделать с помощью cp1251?
0
sidorenko #
теперь кажись понимаю в чём прикол. У Вас есть опыт работы с юникодом и большими базами данных? Разница в размере БД большая?
0
zeroed #
В последнее относительно долгое время только с utf-8 работаю, поэтому не с чем сравнить. Да, я понимаю о чем вы. По идее и в два раза больше может быть, но все равно нужно замерять.

Можно тестик сделать какой-нибудь с mysql, но уж очень лениво, если честно :)

Сейчас дисковое пространство стоит очень дешево и давно уже не заморачивался этим вопросом.
0
sidorenko #
да я к тому как размер базы будет влиять на высоконагруженные проекты, дело даже не в интернет-магазинах…
0
sidorenko #
сталкивался с проблемами для голландцев, они просят кодировать их сайты под ISO-8859-1 т.к. в их языке есть спец символы и 1251 их не понимает. ладно, не проблема им сделать свою кодировку, это нормально использовать кодировку, которая предназначена для региона…
0
roller #
ну и как поставить APC на PHP/Windows? хорошая отзывчивость страниц (например при разработке по тот же друпал) — залог крепких нервов и спокойного сна.

зы APC на винде роняет как минимум phpmyadmin (
0
vitalikk #
У меня была проблема — не логинился phpMyAdmin. Полдня промучился, потом раскомментировал 127.0.0.1 localhost в файле system32\drivers\etc\hosts и все заработало.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.