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

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:bed6d5856f3b37b17f9059fb798ec813' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><img alt=\"Apache logo\" width=\"220\" height=\"66\" src=\"http://muff.kiev.ua/files/apache.png\" /></p>\n<p class=\"rtejustify\">На самом деле в установке и настройке связки <strong>apache + php + perl </strong>нету ничего сложного&hellip; Можете в этом убедиться сами. Итак, приступим.<br />\nУстанавливать будем <strong>apache22</strong>. Те кто дает предпочтение <strong>apache13 </strong>нужно будет только изменить директорию установки. В портах есть обе версии.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cd /usr/ports/www/apache22/<br />\n </strong># <strong>make install clean</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Из опций изменяю только:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>[X] THREADS Enable threads support in APR<br />\n [X] MYSQL Enable MySQL support for apr-dbd<br />\n [ &nbsp;] IPV6 Enable IPv6 support</td>\n</tr>\n</tbody>\n</table>\n<p>Кому необходимо, может включить поддержку <strong>PostgreSQL</strong></p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>[X] PGSQL Enable PostgreSQL support for apr-dbd</td>\n</tr>\n</tbody>\n</table>\n<p>Итак&hellip; Установка завершена. Не забываем перечитать пути:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>rehash</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Следуя указаниям порта, добавляем в /etc/rc.conf строку <strong>apache22_enable=&quot;YES&quot;</strong></p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>echo \'# Web\' &gt;&gt; /etc/rc.conf<br />\n </strong># <strong>echo \'apache22_enable=&quot;YES&quot;\' &gt;&gt; /etc/rc.conf</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Приступаем к редактированию главного конфигурационного файла<strong> /usr/local/etc/apache22/httpd.conf</strong></p>\n<p class=\"rtejustify\">По умолчанию, он готов к использованию, но я рекомендую все-таки внести некоторые изменения.</p>\n<p class=\"rtejustify\"><strong>ServerAdmin</strong> &ndash; директива, позволяющая задать адрес e-mail, который будет указываться в страницах ошибок, возвращаемых пользователям (рекомендую установить адрес администратора web-сервера).</p>\n<p class=\"rtejustify\"><strong>ServerName </strong>&ndash; директива, которая позволяет задать имя хоста. Таким образом, при обращению к серверу, все относительные ссылки будут строиться на основании данного имени. Желательно задать здесь официальное DNS-имя сервера. Если директиву не задать, то Apache попытается сам определить ее значение на основании IP-адреса машины, что не всегда приводит к успешному и правильному результату. Обратите внимание, что данная директива используется также при виртуальном хостинге и позволяет определить настройки для виртуального хоста, имя которого будет получено в заголовке Host: http-запроса.</p>\n<p class=\"rtejustify\">Остальные опции будем менять уже по ходу работы в случае необходимости.</p>\n<p class=\"rtejustify\">Проверяем, все ли нормально с конфигурационным файлом и если все нормально, запускаем веб-сервер.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># apachectl configtest</strong><br />\n Syntax OK<br />\n <strong># apachectl start</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Проверяем, запустился ли демон:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># ps -ax | grep http<br />\n </strong>47234 ?? Ss 0:00.07 /usr/local/sbin/httpd -k start<br />\n 47235 ?? I 0:00.00 /usr/local/sbin/httpd -k start<br />\n 47236 ?? I 0:00.00 /usr/local/sbin/httpd -k start<br />\n 47237 ?? I 0:00.00 /usr/local/sbin/httpd -k start<br />\n 47238 ?? I 0:00.00 /usr/local/sbin/httpd -k start<br />\n 47239 ?? I 0:00.00 /usr/local/sbin/httpd -k start</td>\n</tr>\n</tbody>\n</table>\n<p>Все в норме&hellip; Приступаем к установке <strong>PHP</strong>.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cd /usr/ports/lang/php5<br />\n </strong># <strong>make install clean</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Список опций:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p class=\"rtecenter\">Options for php5 5.2.10</p>\n<p class=\"rteleft\">\n [X] CLI Build CLI version<br />\n [X] CGI Build CGI version<br />\n [X] APACHE Build Apache module<br />\n [ &nbsp;] DEBUG Enable debug<br />\n [X] SUHOSIN Enable Suhosin protection system (not for jails)<br />\n [X] MULTIBYTE Enable zend multibyte support<br />\n [ &nbsp;] IPV6 Enable ipv6 support<br />\n [&nbsp; ] MAILHEAD Enable mail header patch<br />\n [&nbsp; ] REDIRECT Enable force-cgi-redirect support (CGI only)<br />\n [&nbsp; ] DISCARD Enable discard-path support (CGI only)<br />\n [X] FASTCGI Enable fastcgi support (CGI only)<br />\n [X] PATHINFO Enable path-info-check support (CGI only)</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>По завершению установки перечитываем пути.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>rehash</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Итак, для того, чтобы apache поддерживал php, необходимо сделать то, что предлагает сам PHP по завершению установки:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p>Make sure index.php is part of your DirectoryIndex.<br />\n You should add the following to your Apache configuration file:<br />\n AddType application/x-httpd-php .php<br />\n AddType application/x-httpd-php-source .phps</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Приступаем к редактированию <strong>/usr/local/etc/apache22/httpd.conf<br />\n</strong>Необходимо найти модуль dir_module и добавить для обработки<strong> index.php</strong>:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>\n<p>&lt;IfModule dir_module&gt;<br />\n DirectoryIndex index.htm index.html index.php index.php3 index.php4 index.php5<br />\n &lt;/IfModule&gt;</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Теперь ищем модуль<strong> mime_module </strong>и добавляем типы приложений:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>&lt;IfModule mime_module&gt;<br />\n AddType application/x-httpd-php .php<br />\n AddType application/x-httpd-php-source .phps</td>\n</tr>\n</tbody>\n</table>\n<p>Создадим конфигурационный файл для <strong>PHP</strong>:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cp /usr/local/etc/php.ini-dist /usr/local/etc/php.ini</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Перезапускаем Apache и смотрим, подключился ли <strong>PHP</strong>:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># sh /usr/local/etc/rc.d/apache22 restart</strong><br />\n Performing sanity check on apache22 configuration:<br />\n Syntax OK<br />\n Stopping apache22.<br />\n Waiting for PIDS: 47234.<br />\n Performing sanity check on apache22 configuration:<br />\n Syntax OK<br />\n Starting apache22.<br />\n <strong># tail &ndash;f /var/log/httpd-error.log<br />\n </strong>[Mon Aug 10 01:37:37 2009] [notice] caught SIGTERM, shutting down<br />\n [Mon Aug 10 01:37:40 2009] [notice] Digest: generating secret for digest authentication ...<br />\n [Mon Aug 10 01:37:40 2009] [notice] Digest: done<br />\n [Mon Aug 10 01:37:41 2009] [notice] Apache/2.2.11 (FreeBSD) mod_ssl/2.2.11 OpenSSL/0.9.8e DAV/2 <span style=\"color: #ff0000\">PHP/5.2.10 with Suhosin-Patch </span><span style=\"color: #000000\">configured </span>-- resuming normal operations</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Поздравляю. Связка <strong>Apache + PHP </strong>работает. Пора научить <strong>Apache </strong>&quot;понимать&quot; скрипты <strong>perl</strong>. Для этого необходимо установить дополнительный модуль <strong>Apache</strong>. Если установлен <strong>Apache 1.3</strong>, то необходим модуль <strong>mod_perl</strong>, если же установлен <strong>Apache 2.x</strong>, то необходим модуль <strong>mod_perl2<br />\n</strong>Приступим к установке.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>cd /usr/ports/www/mod_perl2/<br />\n </strong># <strong>make install clean<br />\n </strong># <strong>rehash</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Добавим в <strong>/usr/local/etc/apache22/httpd.conf </strong>загрузку модуля <strong>mod_perl.so</strong>. Строка подгрузки модуля имеет такой синтаксис:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>LoadModule perl_module libexec/apache22/mod_perl.so</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Куда именно разместить&nbsp;в конфигурационном файле&nbsp;<strong>Apache&nbsp;</strong>&ndash; думаю догадаться можно без проблем ;).<br />\nТакже необходимо найти строку <strong>AddHandler cgi-script .cgi</strong>, расскоментировать ее и добавить обработку расширения <strong>pl</strong>. То есть после наших манипуляций данная строка должна иметь такой вид:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td>AddHandler cgi-script .cgi .pl</td>\n</tr>\n</tbody>\n</table>\n<p>Перезапускаем <strong>Apache</strong>, чтобы изменения вступили в силу.</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>sh /usr/local/etc/rc.d/apache22 restart</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Смотрим что у нас получилось:</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td><strong># tail &ndash;f /var/log/httpd-error.log<br />\n </strong>[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 <span style=\"color: #ff0000\">mod_perl/2.0.4 Perl/v5.8.9</span> configured -- resuming normal operations</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">На этом все&hellip; Основная настройка закончена. &quot;Косметические&quot; заморочки не описываю. У кого есть время &ndash; в гугле информации предостаточно.</p>\n<p>\n&nbsp;</p>\n', created = 1767383940, expire = 1767470340, headers = '', serialized = 0 WHERE cid = '2:bed6d5856f3b37b17f9059fb798ec813' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767383940, expire = 1767470340, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767383940, expire = 1767470340, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другу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 голосов)

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

Литература

Всегда не хватает денег, времени и оперативной памяти...