Apache2 ставим PHP5 как FastCGI

Материал из Lblss.ru
Перейти к: навигация, поиск

Всё нижеизложенное сделано на дистрибутиве ALT Linux Desktop 4.1.1, для других возможны некоторые расхождения в деталях. Предполагаем так же, что вебсервер Apache2 уже установлен и сконфигурирован для работы с виртуальными хостами. Кроме того, полагаем что директория с пользовательскими файлами вебсервера /home/www (принадлежит webdev:webdev), а сами сайты лежат в директориях вида /home/www/test.local с теми же владельцем/группой.

Для начала, устанавливаем требуемые пакеты: php5-cgi, apache2-suexec и apache2-mod_fcgid.

$ sudo apt-get install php5-cgi apache2-suexec apache2-mod_fcgid

Затем подключаем к Апачу модули, сделав симлинки из /etc/httpd2/conf/mods-enabled на соответствующие файлы:

$ cd /etc/httpd2/conf/mods-enabled/
$ sudo ln -s ../mods-available/fcgid.conf fcgid.conf
$ sudo ln -s ../mods-available/fcgid.load fcgid.load
$ sudo ln -s ../mods-available/suexec.load suexec.load


Конфиг виртхоста получился примерно такой:

$ cat test.local.conf

<VirtualHost *>
    ServerAdmin webmaster@webserver.local
    DocumentRoot /home/www/test.local
    ServerName test.local
    ServerAlias www.test.local
    ErrorLog  /home/www/.log/test.local-error_log
    CustomLog /home/www/.log/test.local-access_log common
    AddDefaultCharset utf-8
    SuexecUserGroup webdev webdev
    <IfModule mod_fcgid.c>
        Options +ExecCGI
        AddHandler fcgid-script .php
        FCGIWrapper /home/www/.sites/fcgid.sh .php
    </IfModule>
</VirtualHost>

Логи будут складываться в директорию /home/www/.log

SuexecUserGroup указывает от имени какого юзера/группы будут работать скрипты. Имеет смысл сделать идентично владельцу/группе (простите за каламбур) файлов.

Скрипт враппера:

$ cat /home/www/.sites/fcgid.sh

#!/bin/sh
PHPRC=/home/www/.sites/php.ini
export PHPRC
export PHP_FCGI_MAX_REQUESTS=100
exec /usr/bin/php-cgi

Его нужно сделать исполняемым:

$ chmod +x /home/www/.sites/fcgid.sh

Там же рядом лежит php.ini, предназначенный для этого режима. Его можно тупо копирнуть

$ cp /etc/php/5.2.5/cgi/php.ini /home/www/.sites/php.ini

и поправить по вкусу.

Рестартуем Апач:

$ sudo /etc/init.d/httpd2 restart
Stopping httpd2 service:                                        [ DONE ]
Checking configuration sanity for httpd2:  Syntax OK            [ DONE ]
Starting httpd2 service:                                        [ DONE ]

Собственно, всё.

Персональные инструменты