пятница, 16 ноября 2007 г.

Установка Apache2.2 и PHP-5.1.4

Автор: Голышев С.В. (glsv)

В данной статье описывается установка связки Apache2.2.2 и PHP-5.1.4.

Версии программного обеспечения:

Apache2.2.2
PHP-5.1.4
Каталог установки:

PHP: c:/php-5.1.4
Apache: c:/Apache2.2
Используемые дистрибутивы:

Apache: www.sai.msu.su/apache/dist/httpd/binaries/win32/apache_2.2.2-win32-x86-no_ssl.msi
PHP: www.php.net/get/php-5.1.4-Win32.zip/from/a/mirror
Установка Apache2.2.2
Загрузите с сайта http://www.apache.org/дистрибутив Apache2.2.2 с в виде инсталлятора с именем apache_2.2.2-win32-x86-no_ssl.msi. Вы сможете найти его по адресу www.sai.msu.su/apache/dist/httpd/binaries/win32/

Запустите загруженный инсталлятор на выполнение. Когда установщик спросит Вас о том, куда установить Apache укажите ему директорию c:/Apache2.2

Примечание
Все дальнейшие инструкции будут основываться на предположении, что Apache устанавливается именно в каталог c:/Apache2.2. Если Вы устанавливаете Apache в другой каталог, то Вы должны соответствующим образом адаптировать инструкции к своей ситуации.

Установка Apache из инсталлятора достаточно прозрачна и не вызывает особых трудностей, вследствие чего не рационально приводить ее полное описание в данной статье. Приведем лишь одно диалоговое окно, которые пользователю требуется заполнить в процессе установки. Это окно выбора имени сервера. В поля «Network Domain» и «ServerName» запишите имя сервера, на работу с которым Apache будет настроен по умолчанию.




Примечание
Данная инструкция описывает установку сервера Apache в предположении, что он будет использоваться только для локального тестирования сайтов и не будет работать в сетях Интранет и Интернет. Для работы сервера в сетях Интранет и Интернет Вы должны ввести реальное доменное имя, которые будет использоваться сервером.

Если процесс установки прошел корректно, то по ее завершению Apache2.2 у Вас уже должен быть запущен в качестве службы. Чтобы проверить так ли это откройте список служб Windows («Пуск» | «Панель управления» | «Администрирование» | «Службы») и найди в нем строку Apache2.2. (или Apache2). Состояние службы: работает или нет отображается в третьем столбце.

Если Вы не можете найти в списке служб строчку Apache2.2, то вероятно в процессе установки произошел сбой и Apache не установился в качестве службы. В этом случае, Вам необходимо установить Apache, в качестве службы самостоятельно. Для выполнения этого понадобится программа с консолью, например FAR, WindowsCommander, TotalCommander и т.п.

Откройте программу с консолью, перейдите в каталог c:/Apache2.2/bin и выполните команду:

C:/Apache2.2/bin/httpd.exe -k install

В ответ Вам должно быть выдано сообщение «The Apache2 service is successfully installed». Внешний вид консольного окна приведен на рисунке.




Первый запуск
Управление Apache-ем (пуск, остановка, перезапуск) осуществляется либо через графический интерфейс управления службами Windows, либо в консоли выполнением файла httpd.exe с определенными ключами.

Управление службами Windows осуществляется через контекстное меню, открываемое по нажатию правой кнопки мыши на имени службы. Если Apache еще не запущен, то выполните команду «Пуск» из контекстного меню.




Если Вам нравится работать в консоли то для управления Apache используются ключи, приведенные ниже.

Команды управления Apache через консоль
httpd.exe -k start (Запуск службы)
httpd.exe -k stop (Остановка службы)
httpd.exe -k restart (Перезапуск)

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




По умолчанию, корневой директорией сервера установлена директория c:/Apache2.2/htdocs. Именно в ней расположен файл index.html отображаемый по имени localhost. За определение корневой директории сайта отвечает директива DocumentRoot в файле c:/Apache2.2/conf/httpd.conf.

DocumentRoot "C:/Apache2.2/htdocs"

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

Однако, перед тем как делать это следует провести минимальную настройку конфигурационного файла httpd.conf. По умолчанию, Apache настроен так, чтобы запретить любой доступ к директориям сайтов и разрешения должны быть установлены явно для каждой директории, как это сделано для директории C:/Apache2.2/htdocs. Если же Вы перенесете корневую директорию сервера в другой каталог, не настроив соответствующие разрешения, то в ответ Вам будет выдана ошибка 403 Forbidden и страница, изображенная на рисунке.




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

Найдите в файле С:/Apache2.2/conf/httpd.conf строки:


Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Satisfy all


Обратите внимание на строку Deny from all.

Она запрещает всякий доступ к директориям, в том числе и к директориям виртуальных хостов. При попытке обращения к ним Apache ответит ошибкой 403 Forbidden. Противовесом ей является директива «Allow from all». Установка этой директивы отменяет действие директивы «Deny from all».

Можно устанавливать директиву Allow from all для каждой директории и для каждого виртуального хоста, но можно поступить проще и убрать (или закомментировать) директиву «Deny from all» из контейнера .


Options FollowSymLinks
AllowOverride None
Order deny,allow
# Deny from all
Satisfy all


После выполнения этих нехитрых действий перезапустите Apache. Как это сделать описывается выше.

Установка PHP
Cовременный web-сервер уже немыслим без поддержки динамически-генерируемых страниц. В России лидером среди технологий создания динамических страниц и web-приложений является технология PHP. Ниже будет рассмотрен процесс подключения PHP на примере версии 5.1.4. Если у Вас уже установлена эта версия PHP, то можете сразу переходить к разделу «Подключение PHP к Apache2.2.2».

Дистрибутивы с PHP Вы можете загрузить с сайта http://www.php.net/по адресу http://www.php.net/downloads.php . Найдите на странице раздел «Windows Binaries» с размещенными дистрибутивами для Windows и загрузите себе полную версию PHP в zip-архиве (PHP 5.1.4 zip package). Размер данного дистрибутива около 9Мб.

Примечание
Кроме полного zip-архива на сайте также доступна для загрузки облегченная версия PHP в виде инсталлятора. Ее размер значительно меньше – около 2,5 Мб из-за того, что в ней отсутствует множество библиотек-расширений и если Вы хотите серьезно заниматься разработкой web-приложений на PHP, то рекомендуется не поскупиться на трафик и все таки загрузить полный zip-архив.

Распакуйте zip-архив с php в директорию c:/php-5.1.4. На этом установка PHP завершена. Дальнейшие действия будут касаться настройки связки PHP+Apache и конфигурирования самого PHP.

Примечание
Все дальнейшие инструкции будут основываться на предположении, что Вы используете php-5.1.4, который установлен в каталог c:/php-5.1.4. Если у Вас другая версия PHP или Вы устанавливаете php в другой каталог, то Вы должны соответствующим образом адаптировать приводимые инструкции к своей ситуации.

Подключение PHP к Apache2.2.2
Проблемы с подключением PHP к Apache2.2
Если Вы попытаетесь подключить штатный модуль php5apache2.dll к Apache2.2.2, то Вас ожидает неудача. Apache не захочет запускаться, выдавая сообщение, изображенное на рисунке.




А в журналах системы и приложений появятся следующие сообщения

The Apache service named reported the following error:
>>> httpd.exe: Syntax error on line 115 of C:/Apache2.2/conf/httpd.conf:
Cannot load C:/php-5.1.4/php5apache2.dll into server: \xcd\xe5 \xed\xe0\xe9
\xe4\xe5\xed \xf3\xea\xe0\xe7\xe0\xed\xed\xfb\xe9 \xec\xee\xe4\xf3\xeb\xfc.


К сожалению, штатная библиотека php5apache2.dll не может пока работать с Apache2.2. Поэтому библиотеку php5apache2.dll, предназначенную для работы с Apache2.2 необходимо загрузить отдельно.

Установка библиотеки php5apache2.dll с поддержкой Apache2.2
Для того, чтобы получить новейшие версии PHP с поддержкой Apache2.2., которую еще не имеют стабильные релизы, вам необходимо скачать их с сайта http://snaps.php.net/ , где публикуются для загрузки самые свежие обновления php - так называемые snapshot-ы – это промежуточные рабочие версии, обновления которых происходит, практически ежедневно. Выберите последний snapshot для 5-ой версии php и загрузите себе на машину.

Теперь для подключения php5 версии в Apache2.2 достаточно переписать файл php5apache2_2.dll в директорию c:/php-5.1.4. Для того, чтобы Вам не пришлось выкачивать полный 8Мб-ый архив с последним snapshot-ом PHP необходимую библиотеку мы опубликовываем отдельно: скачать http://www.softtime.ru/files/php5apache2_2.dll
Примечание
Альтернативный вариант решения проблемы связки PHP и Apache2.2 приведен на сайте http://www.apachelounge.com/ . В разделе download http://www.apachelounge.com/download/ данного сайта размещена обновленная библиотека php5apache2.dll с поддержкой Apache2.2. Zip-архив включающий данную библиотеку, инструкцию по установке и другие необходимые файлы называется php5apache2.dll-php5.1.x.zip (для PHP5) или php4apache2.dll-php4.4.x.zip (для PHP4).

Конфигурирование httpd.conf для подключения PHP
Для подключения php, в качестве модуля, необходимо добавить всего 3 инструкции в файл httpd.conf

Инструкции для подключения PHP в httpd.conf
LoadModule php5_module c:/php-5.1.4/php5apache2_2.dll
AddType application/x-httpd-php phtml php
PHPIniDir "c:/php-5.1.4/"

Эти строки следует поместить в примерно в середину файла httpd.conf, например, сразу после директив LoadModule. Конкретное расположение этих директив не имеет принципиального значения, однако нельзя помещать их в начале, а также и в самом конце файла httpd.conf.


Первая строка загружает модуль PHP, реализованный в библиотеке php5apache2_2.dll
Вторая строка устанавливает соответствие между файлами с расширением php и mime-типом application/x-httpd-php, который обрабатывается модулем PHP.
Третья строка позволяет явно указать расположением конфигурационного файла php.ini.
Примечание
Директивы PHPIniDir сильно не хватало в Apache1.3, так как часто возникала путаница в настройке php при наличии нескольких копий файла php.ini, либо при размещении его в неподходящей директории.

Следующим шагом необходимо создать конфигурационный файл для PHP. В httpd.conf в директиве PHPIniDir местом расположения конфигурационного файла php была указана директория c:/php-5.1.4. Сам конфигурационный файл должен называться php.ini

В директории c:/php-5.1.4 находятся несколько шаблонов конфигурационных файлов. В качестве основы возьмем файл c:/php-5.1.4/php.ini-recommended и переименуем его в php.ini. Таким образом, конфигурационный файл PHP (php.ini) будет располагаться в директории c:/php-5.1.4 и именно в него должны вносится все изменения конфигурации PHP.

После внесения изменений в httpd.conf и создания файла php.ini перезагрузите Apache.

Создайте тестовый php-скрипт под именем phpinfo.php, выполняющий одноименную функцию и сохраните его в директорию c:/Apache2.2/htdocs.

Скрипт phpinfo.php
echo phpinfo();

// Обратите внимание, что использован полный синтаксис записи
// php-скрипта. ?>

Примечание
В тестовом скрипте phpinfo.php для определения PHP-скрипта использован полный синтаксис. В дистрибутивах PHP последних версий синтаксис короткой записи по умолчанию отключен. За включение режима короткой записи отвечает директива short_open_tag в файле php.ini. Ее нужно установить в значение On.

Теперь обратитесь к данному скрипту через браузер введя в адресной строке http://localhost/phpinfo.php. В ответ Вам должны быть отображены широко известные фиолетовые страницы, отображающие настройки php и его расширений.




Если "фиолетовые таблицы" отобразились - значит php успешно выполняется Apache-ем.

Возможные ошибки
Apache загружается, но вместо "фиолетовых таблиц" открывается пустая страница.

Проверьте: тестовый скрипт записан в через полный синтаксис или через сокращенный? Т.е.:

должно быть записано
echo phpinfo();
?>
вместо
echo phpinfo();
?>