...
...

Веб-сервер на домашнем компьютере

Веб-сервер на домашнем компьютере

У моих знакомых, по совместительству начинающих веб-мастеров, часто возникают просьбы помочь установить Apache, PHP, Perl, MySQL. Эти программы могут понадобиться не только системным администраторам, но и веб-программистам и веб-мастерам, например, для отладки скриптов. В данной статье рассмотрено, как устанавливать последние версии этих программ на Win32. Я не ставлю целью описать все аспекты web-администрирования, а лишь помогу установить конфигурацию, позволяющую освоить и изучить основные возможности Apache 2.x, PHP, Perl и MySQL.

Где скачать?
Официальный сайт Apache: http://www.apache.org .
Официальный сайт PHP: http://www.php.net .
Официальный сайт MySQL: http://www.mysql.com .
Официальный сайт ActivePerl: http://www.activestate.com .

Установка Apache 2.x
Стоит сказать, что на данный момент существуют две ветки Apache: 1.3.x и 2.x. По установке и настройке версии 1.3.x можно найти довольно много информации, а вот с версией 2.x дела обстоят хуже. Все дело в том, что системных администраторов устраивает версия 1.3.x, а с настройкой версии 2.x часто возникают проблемы. Поэтому я рассказываю о версии 2.x, хотя и не претендую на полное описание.
Первым делом надо скачать дистрибутив сервера с http://www.apache.org . Скачиваем версию для Windows из раздела Win32/Binaries. Выбирайте последнюю версию сервера.
Запустите скачанный файл. Появится окно установщика. Нажимайте далее до тех пор, пока не увидите следующее окно:

Введите ваш e-mail: он будет отображаться как e-mail администратора в ответах сервера. Заполните поля Network Domain и Server Name. Если вы работаете локально, то можно написать в эти поля что угодно — не забудьте только это слово, если оно отлично от слова localhost, внести в файл hosts. Файл hosts (без расширения) расположен в корневом каталоге Windows, если ваша система Win98, и в каталоге %SystemRoot%\system32\drivers\etc, если ваша система Win2k. Если файла там нет, его следует создать и записать в нем:
127.0.0.1 localhost имя_сервера_2 имя_сервера_3 имя_сервера_n
Далее: внимание! Если устанавливаемая версия сервера Apache является единственной на вашей машине, лучше выбрать первый (рекомендуемый) вариант установки: for All Users on Port 80, as a Service — Recommended. В этом случае вам не придется стартовать сервер вручную: он будет запускаться как сервис вместе со стартом системы. Если же на вашей машине уже имеется web-сервер, например, Apache 1.3.х, то необходимо выбрать второй вариант установки: Only for the Current User, on Port 8080, whem started Manually, в противном случае установить второй сервер вам не удастся. При последнем варианте установки вам придется стартовать сервер вручную (Пуск -> Программы -> Apache HTTP Server 2.0.40 -> Configure Apache Server-Start Apache in Console).
Вы также можете перед установкой второго сервера остановить сервис первого. Тогда появится возможность установить и второй Apache как сервис, стартующий вместе с системой. В этом случае в конфигурационном файле второго сервера необходимо изменить порт со стандартного 80 на другой, например, 8080:
Listen 8080
Все адреса, обрабатываемые сервером, который работает на порту, отличном от 80, имеют вид: http://адрес:порт, например: http://127.0.0.1:8080.
В следующем окне можете смело выбирать Typical.

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

Нажимайте далее, пока не начнется копирование файлов.
Поздравляю: установка Apache закончена!

Конфигурирование Apache 2.x
Определитесь с каталогом для файлов вашего сайта. Я использую C:\Inet, но можно выбрать другой.
Все настройки сервера можно менять, редактируя один-единственный файл httpd.conf:
Пуск -> Программы -> Apache HTTP Server 2.0.40 -> Configure Apache Server -> Edit the Apache httpd.conf Configuration File. Можно также открыть этот файл с помощью любого текстового редактора, httpd.conf расположен в папке conf-каталога, в который вы установили Apache, по умолчанию это: C:\Program Files\Apache Group\Apache2\conf.
Внимание! Для вступления настроек в силу необходимо перезапускать Apache.
В этой же папке находится файл httpd.default.conf, в котором содержатся установки сервера по умолчанию, так что всегда все можно вернуть в первоначальное состояние, если вы окончательно испортите httpd.conf.

Приступим к настройке
Как и в версии 1.3.х, конфигурационный файл Apache 2.x имеет три секции: Global Environment (глобальное окружение), Main server configuration (конфигурация главного сервера) и Virtual Hosts (виртуальные хосты). Для расшифровки директив пользуйтесь русским переводом конфигурационного файла.
На локалхосте настройки глобального окружения имеет смысл оставить без изменений.
Настраиваем главный сервер.
Найдите строчку DocumentRoot.
Измените ее значение на путь к тому каталогу, в котором вы будете хранить свои html-файлы (по умолчанию это папка htdocs каталога, в который установлен сервер). Для моего случая:
DocumentRoot "C:/Inet/localhost/www"
Ниже расположен блок <Directory /> ... </Directory > . Он содержит минимальные настройки для корня сайта и всех его подкаталогов. Т.е. по умолчанию это настройки для папки htdocs и всех ее подкаталогов. Имеет смысл оставить данный блок без изменений, а ниже написать настройки для DocumentRoot, т.е. в нашем случае для "C:/Inet/localhost/www"
<Directory "C:/Inet/localhost/www">
Options Indexes Includes
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Эти настройки обеспечивают возможность автоматической генерации списка содержимого каталога при просмотре его в браузере (опция Indexes), а также поддержку SSI (опция Includes) и разрешение использовать все директивы файла .htaccess для настроек отдельных папок (значение All директивы AllowOverride).
Директивы:
Order allow,deny
Allow from all
на локалхосте имеют мало значения. Первая строчка указывает серверу, в какой последовательности проверять разрешения и запреты на отдаваемые файлы (в данном случае — allow,deny — сначала разрешения, потом запреты), а вторая (Allow from all) разрешает брать с сервера файлы всем.
Опцию Indexes имеет смысл включать в папках, содержащих что-то типа архива файлов или картинок. Тогда пользователь, введя имя папки и не введя имя страницы, получит список файлов данной папки.

Если не включить эту опцию, то пользователь, введя имя папки и не введя имя страницы, получит ошибку 403 — доступ запрещен (таким образом рекомендуется настраивать большинство web-папок).

Если вы хотите, чтобы в сообщениях об ошибках отображался e-mail администратора, замените опцию On директивы ServerSignature на опцию EMail:
ServerSignature
EMail

Инициализируйте параметр DirectoryIndex (файлы, автоматически возвращаемые сервером при обращении к каталогу, если не указано имя файла):
DirectoryIndex index.html index.htm index.php
Чуть ниже расположены строчки:
ErrorLog logs/error.log
CustomLog logs/access.log common
Первая определяет расположение и имя файла журнала ошибок (путь сервер отсчитывает относительно ServerRoot), вторая — файла журнала обращений к серверу. Возможно, вы захотите иметь эти файлы под рукой, в каталоге с вашим сайтом, тогда измените строчки на такие:
ErrorLog C:/Inet/localhost/www/logs/ error.log
CustomLog C:/Inet/localhost/www/logs/ access.log common
В этом случае не забудьте создать папку logs, файлы журналов сервер создаст самостоятельно.
По умолчанию Apache сам правильно настраивает директорию с документацией:
Alias /manual "E:/usr/local/Apache2/manual"
<Directory "E:/usr/local/Apache2/manual">
Options Indexes FollowSymLinks MultiViews IncludesNoExec
AddOutputFilter Includes html
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Не меняйте эти установки: они позволят вам читать мануалы по серверу:

Находим строчку ScriptAlias (имя папки, где будут храниться скрипты) и меняем ее на следующую:
ScriptAlias /cgi-bin/ "C:/Inet/localhost/cgi/"
После этого идет блок <Directory.> ... </Directory > с конфигурацией папки скриптов. Для разрешения исполнения cgi-скриптов установите такие директивы:
<Directory "C:/Inet/localhost/cgi/">
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory>
Собственно, в этом блоке за разрешение исполнения скриптов отвечает только опция ExecCGI директивы Options.
Для того, чтобы Apache нормально понимал русский язык, найдите строчку AddDefaultCharset... (добавить кодировку по умолчанию) и замените ее на:
AddDefaultCharset WINDOWS-1251
Находим строчку:
#AddHandler cgi-script.cgi
и меняем ее на следующую:
AddHandler cgi-script.cgi.pl.exe.bat
Это говорит Apache о том, что файлы с расширениями .cgi.pl.exe и .bat надо рассматривать как CGI-скрипты.
Для установки поддержки SSI найдите и раскомментируйте следующие строчки:
#AddType text/html.shtml
#AddOutputFilter INCLUDES.shtml
SSI (Server-Side Include) — директивы, исполняемые на стороне сервера. Они позволяют собирать документ из нескольких файлов, например, для того, чтобы во все страницы вставить одинаковую шапку или блок баннеров. Можете добавить расширения файлов, которые сервер будет просматривать на предмет наличия в них директив SSI:
AddType text/html.shtml.shtm.html.htm
AddOutputFilter INCLUDES.shtml. shtm. html.htm
Однако учтите, что чем больше добавлено расширений, тем больше процессорных ресурсов сервер будет запрашивать при своей работе.

Остальные настройки сервера можно оставить без изменений; таким образом, основное конфигурирование Apache завершено! Более подробно о директивах читайте в каталоге с документацией:
http://127.0.0.1/manual/mod/directives.html ;
http://127.0.0.1:8080/manual/mod/directives.html .

Установка PHP
Скачайте последнюю версию PHP с сайта http://www.php.net в разделе Win32 Binaries. Файл должен иметь расширение .zip.
Распакуйте архив в папку, где у вас будет располагаться PHP, например, C:PHP или C:\usrlocalphp. Переименуйте файл php.ini-recommended в php.ini и скопируйте в каталог Windows. В этом файле можно устанавливать различные настройки PHP. Для запуска простого php-скрипта менять в php.ini ничего не надо. Также скопируйте файл php4ts.dll в каталог System или System32.
Далее обратите внимание на следующее: PHP можно устанавливать как самостоятельную программу (в этом случае скрипты будут исполняться файлом php.exe) либо как модуль Apache (скрипты будут исполняться самим сервером с помощью файла модуля). Рекомендуется выбрать второй вариант, т.к. он обеспечивает более быструю работу скриптов (а на удаленном сервере еще и более безопасную). Для установки PHP как модуля Apache откройте httpd.conf и добавьте две строчки в секцию конфигурации главного сервера:
LoadModule php4_module c:phpsapiphp4apache2.dll
AddType application/x-httpd-php php php3 php4 phtml
Первая строчка загружает модуль (необходимо указать точный путь к нему), вторая — указывает серверу, файлы с каким расширением нужно рассматривать как php-скрипты. Обратите внимание на обратные слэши в пути к модулю PHP.
В отличие от версии 1.3.x, в версии 2.x добавление модуля к серверу осуществляется только одной директивой (LoadModule). Для настройки php больше никаких действий производить не нужно, класть php-скрипты можно в любые папки вашего сайта.

Установка Perl
Скачиваем последнюю версию ActivePerl с сайта http://www.activestate.com . Устанавливаем в директорию C:\usr. Это позволит работать большинству web-скриптов. Чтобы навсегда снять проблемы с поиском сервером пути к "Перл", следует в реестре Windows ассоциировать файлы .cgi с программой Perl.exe. Делается это очень просто: кликаете правой кнопкой мыши на любом файле с расширением .cgi, в выпадающем меню выбираете Открыть с помощью, указываете Perl.exe, ставите галочку на Использовать программу для всех файлов этого типа. На всякий случай, чтобы сервер не искал путь к "Перл", а брал его из реестра системы, в httpd.conf в секцию конфигурации главного сервера добавьте такую строчку:
ScriptInterpreterSource registry

Установка MySQL
Скачиваем последнюю версию с сайта http://www.mysql.com . Установка не отличается от установки любой другой программы. Рекомендуется ставить в каталог по умолчанию, чтобы не было проблем с совместимостью. Для завершения установки запустите программу MySQLAdmin, которая находится в C:mysqlbinwinmysqladmin.exe, введите имя пользователя и пароль для доступа к базе данных.
По окончании установки рекомендуется перезагрузить компьютер!
На этом установка программного обеспечения завершена!

Тестирование
Тестирование проводилось на Apache 2.0.40, PHP 4.2.3, MySQL 3.23.52 и Active Perl 5.8.0.802 под WinXP.
Тестируем Apache. В каталог, указанный как DocumentRoot, положите HTML-файл с именем index.html, наберите в браузере: http://127.0.0.1/ или http://127.0.0.1:8080/ (если вы выбрали второй вариант установки сервера). Браузер должен отобразить страницу index.html.
Тестируем SSI. В каталог, указанный как DocumentRoot, положите HTML-файл с именем test.shtml. В самом верху этого файла — до директивы <html> — поместите следующую строчку:
<!-#set var="test" value="Проверка SSI прошла успешно!" ->
В теле файла (после директивы <body> ) поместите строчку:
<!-#echo var="test" ->
В адресной строке наберите: http://127.0.0.1/test.shtml, браузер должен вывести текст "Проверка SSI прошла успешно!"
Тестируем PHP. Создайте в папке C:\Inet\localhost\www файл index.php и напишите в нем следующее:
<?
phpinfo();
?>
В браузере наберите http://localhost/ index.php. Если все правильно сконфигурировано, то в результате выведется информация о версии PHP и глобальных переменных.
Теперь проверка Perl. Создайте файл test.cgi со следующим содержанием и поместите его в C:\Inetlocalhostcgi:
#!/usr/bin/perl
print "Content-type: text/htmlnn";
print "Hello world!<br> n";
Наберите в браузере http://localhost/cgi-bin/test.cgi — выведется строчка "Hello World".
Если что-то не заработает, не отчаивайтесь, проверьте все еще раз. Если это не принесет результата, попробуйте мой конфиг (заявки оставляйте на форуме http://board.ohct.com) или пишите мне! Автор выражает благодарность raven'у за помощь в подготовке статьи и за ценные советы.
Удачи вам!

Жуковский Сергей http://www.ohct.com


© Компьютерная газета

полезные ссылки
Аренда ноутбуков
Ремонт ноутбуков в центре Минска