Apache + php5 + perl - установка, настройка и интеграция

Версия для печатиОтправить другуPDF version

Apache logo

На самом деле в установке и настройке связки apache + php + perl нету ничего сложного… Можете в этом убедиться сами. Итак, приступим.
Устанавливать будем apache22. Те кто дает предпочтение apache13 нужно будет только изменить директорию установки. В портах есть обе версии.

# cd /usr/ports/www/apache22/
# make install clean

Из опций изменяю только:

[X] THREADS Enable threads support in APR
[X] MYSQL Enable MySQL support for apr-dbd
[  ] IPV6 Enable IPv6 support

Кому необходимо, может включить поддержку PostgreSQL

[X] PGSQL Enable PostgreSQL support for apr-dbd

Итак… Установка завершена. Не забываем перечитать пути:

# rehash

Следуя указаниям порта, добавляем в /etc/rc.conf строку apache22_enable="YES"

# echo '# Web' >> /etc/rc.conf
# echo 'apache22_enable="YES"' >> /etc/rc.conf

 Приступаем к редактированию главного конфигурационного файла /usr/local/etc/apache22/httpd.conf

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

ServerAdmin – директива, позволяющая задать адрес e-mail, который будет указываться в страницах ошибок, возвращаемых пользователям (рекомендую установить адрес администратора web-сервера).

ServerName – директива, которая позволяет задать имя хоста. Таким образом, при обращению к серверу, все относительные ссылки будут строиться на основании данного имени. Желательно задать здесь официальное DNS-имя сервера. Если директиву не задать, то Apache попытается сам определить ее значение на основании IP-адреса машины, что не всегда приводит к успешному и правильному результату. Обратите внимание, что данная директива используется также при виртуальном хостинге и позволяет определить настройки для виртуального хоста, имя которого будет получено в заголовке Host: http-запроса.

Остальные опции будем менять уже по ходу работы в случае необходимости.

Проверяем, все ли нормально с конфигурационным файлом и если все нормально, запускаем веб-сервер.

# apachectl configtest
Syntax OK
# apachectl start

Проверяем, запустился ли демон:

# ps -ax | grep http
47234 ?? Ss 0:00.07 /usr/local/sbin/httpd -k start
47235 ?? I 0:00.00 /usr/local/sbin/httpd -k start
47236 ?? I 0:00.00 /usr/local/sbin/httpd -k start
47237 ?? I 0:00.00 /usr/local/sbin/httpd -k start
47238 ?? I 0:00.00 /usr/local/sbin/httpd -k start
47239 ?? I 0:00.00 /usr/local/sbin/httpd -k start

Все в норме… Приступаем к установке PHP.

# cd /usr/ports/lang/php5
# make install clean

Список опций:

Options for php5 5.2.10

[X] CLI Build CLI version
[X] CGI Build CGI version
[X] APACHE Build Apache module
[  ] DEBUG Enable debug
[X] SUHOSIN Enable Suhosin protection system (not for jails)
[X] MULTIBYTE Enable zend multibyte support
[  ] IPV6 Enable ipv6 support
[  ] MAILHEAD Enable mail header patch
[  ] REDIRECT Enable force-cgi-redirect support (CGI only)
[  ] DISCARD Enable discard-path support (CGI only)
[X] FASTCGI Enable fastcgi support (CGI only)
[X] PATHINFO Enable path-info-check support (CGI only)

По завершению установки перечитываем пути.

# rehash

Итак, для того, чтобы apache поддерживал php, необходимо сделать то, что предлагает сам PHP по завершению установки:

Make sure index.php is part of your DirectoryIndex.
You should add the following to your Apache configuration file:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Приступаем к редактированию /usr/local/etc/apache22/httpd.conf
Необходимо найти модуль dir_module и добавить для обработки index.php:

<IfModule dir_module>
DirectoryIndex index.htm index.html index.php index.php3 index.php4 index.php5
</IfModule>

Теперь ищем модуль mime_module и добавляем типы приложений:

<IfModule mime_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Создадим конфигурационный файл для PHP:

# cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini

Перезапускаем Apache и смотрим, подключился ли PHP:

# sh /usr/local/etc/rc.d/apache22 restart
Performing sanity check on apache22 configuration:
Syntax OK
Stopping apache22.
Waiting for PIDS: 47234.
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
# tail –f /var/log/httpd-error.log
[Mon Aug 10 01:37:37 2009] [notice] caught SIGTERM, shutting down
[Mon Aug 10 01:37:40 2009] [notice] Digest: generating secret for digest authentication ...
[Mon Aug 10 01:37:40 2009] [notice] Digest: done
[Mon Aug 10 01:37:41 2009] [notice] Apache/2.2.11 (FreeBSD) mod_ssl/2.2.11 OpenSSL/0.9.8e DAV/2 PHP/5.2.10 with Suhosin-Patch configured -- resuming normal operations

Поздравляю. Связка Apache + PHP работает. Пора научить Apache "понимать" скрипты perl. Для этого необходимо установить дополнительный модуль Apache. Если установлен Apache 1.3, то необходим модуль mod_perl, если же установлен Apache 2.x, то необходим модуль mod_perl2
Приступим к установке.

# cd /usr/ports/www/mod_perl2/
# make install clean
# rehash

Добавим в /usr/local/etc/apache22/httpd.conf загрузку модуля mod_perl.so. Строка подгрузки модуля имеет такой синтаксис:

LoadModule perl_module libexec/apache22/mod_perl.so

Куда именно разместить в конфигурационном файле Apache – думаю догадаться можно без проблем ;).
Также необходимо найти строку AddHandler cgi-script .cgi, расскоментировать ее и добавить обработку расширения pl. То есть после наших манипуляций данная строка должна иметь такой вид:

AddHandler cgi-script .cgi .pl

Перезапускаем Apache, чтобы изменения вступили в силу.

# sh /usr/local/etc/rc.d/apache22 restart

Смотрим что у нас получилось:

# tail –f /var/log/httpd-error.log
[Mon Aug 10 02:42:21 2009] [notice] Apache/2.2.11 (FreeBSD) mod_ssl/2.2.11 OpenSSL/0.9.8e DAV/2 PHP/5.2.10 with Suhosin-Patch mod_perl/2.0.4 Perl/v5.8.9 configured -- resuming normal operations

На этом все… Основная настройка закончена. "Косметические" заморочки не описываю. У кого есть время – в гугле информации предостаточно.

 

Ваша оценка: Нет Средняя: 4.3 (10 голосов)

Вставай, Україно!

Литература