Содержание

Apache 2 & PHP 5 в Ubuntu

Все дальнейшие действия выполнялись в Ubuntu версии 10.

В конфиге apache2.conf идут ссылки на другие конфигурационные файлы, в которых также могут быть директивы. К примеру:

Include /etc/apache2/conf.d/
Include /etc/apache2/sites-enabled/ 
...
#ls /etc/apache2/conf.d/
apache2-doc  charset  localized-error-pages  security
...
#cat apache2-doc 
Alias /manual /usr/share/doc/apache2-doc/manual/

<Directory "/usr/share/doc/apache2-doc/manual/">
  Options Indexes FollowSymlinks
  AllowOverride None
  Order allow,deny
  Allow from all
  AddDefaultCharset off
</Directory>
# ls /etc/apache2/sites-enabled/
000-default

В файле 000-default прописан путь к стартовой странице html, которую пользователь видит при переходе по ссылке http://localhost. По-умолчанию, страница располагается в /var/www.

Включаем поддержку PHP 5

Если PHP не установлен, устанавливаем (проверить установлен или нет можно так: dpkg-query -l php5):

  1. sudo apt-get install php5
  2. sudo /etc/init.d/apache2 restart

Проверим, подгружается ли на этапе конфигурационных файлов PHP:

# ls /etc/apache2/mods-enabled | grep php
php5.conf
php5.load
# cat etc/apache2/mods-enabledphp5.load
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so 

Подгружается. Создадим простенький файл в /var/www для проверки работы php модуля:

# touch /var/www/phptest.php
# cat /var/www/phptest.php < 
<?php
phpinfo();
?>

В браузере на локальном компьютере вводим адрес http://localhost/phptest.php и в случае отображения различной информации касательно php убеждаемся, что все работает корректно. Если это не так, то:

  1. убеждаемся, что apache перезапущен
  2. смотрим лог /var/log/apache2/error.log для доп. информации.

Включаем поддержку MySQL в PHP

  1. sudo apt-get install php5-mysql
  2. sudo /etc/init.d/apache2 restart

Убеждаемся, что в /etc/php5/apache2/conf.d появился файл mysql.ini содержания:

extension=mysql.so

Также убеждаемся, что в выводе phpinfo() содержатся сведения о загруженном модуле mysql.

Устанавливаем mod_perl для Apache

  1. apt-get install libapache2-mod-perl2
  2. sudo /etc/init.d/apache2 restart

Далее смотрим лог /var/log/apache2/error.log на предмет ошибок запуска mod_perl:

[Fri Aug 20 23:32:27 2010] [notice] Apache/2.2.14 (Ubuntu) PHP/5.3.2-1ubuntu4.2 with Suhosin-Patch mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations

В моем варианте все ОК (mod_perl/2.0.4 Perl/v5.10.1 configured).

Проверка работы mod_perl

1. Создадим в /var/www файл test.pm следующего содержания:

package Hello;
use strict;

use Apache2::RequestRec ();
use Apache2::RequestIO ();

use Apache2::Const -compile => qw(OK);

sub handler {
  my $r = shift;

  $r->content_type('text/plain');
  print "Hello World, the time here is " . localtime() . "\n";

  return Apache2::Const::OK;
}

1;

2.Проверяем синтаксис:

perl -c test.pm
test.pm syntax OK

3.Дописываем в конфиг. файл Apache /etc/apache2/apache2.conf строки:

PerlRequire /var/www/test.pm
<Location /time>
 SetHandler perl-script
 PerlResponseHandler Hello
</Location>

4.Перезапускаем Apache:

sudo /etc/init.d/apache2 restart

5.В браузере на локальной машине вводим адрес:

http://localhost/time

Если все нормально, вы должны увидеть что-то вроде:

Hello World, the time here is Fri Aug 20 23:46:10 201

Дополнительно

Веб-сервер Apache в Ubuntu работает от имени пользователя www-data (проверьте у себя так: «ps aux | grep apache»). Поэтому необходимо заменить владельца на каталоге DocumentRoot:

chown -R www-data: /var/www

TAG: