Имеем сервер с центосом на борту и панелькой управления ISPmanager Pro (разницы нет, инструкция подойдет и для Lite). Задача: запускать PHP от имени пользователя. Для реализации есть два варианта:
- MPM-ITK + mod_php (PHP как модуль apache)
- MPM-Prefork + mod_fcgi (PHP в режиме FastCGI)
Я выбрал первый вариант по своим соображениям. На втором варианте особого смысла останавливаться нет, т.к. с ним можно работать из ISP, а вот с первым вариантом придется поработать руками.. Итак, начнем. После установки ISPmanager имеем apache 2 с MPM-prefork.
1) Проверяем, есть ли нужный модуль в установленной сборке веб-сервера apache командой:
apachectl -t -D DUMP_MODULES | grep itk
Если получаем: mpm_itk_module (static), значит нужный нам модуль уже установлен и второй пункт можно пропустить.
2) Добавляем репо CentALT:
rpm -ihv http://centos.alt.ru/repository/centos/6/i386/centalt-release-6-1.noarch.rpm — для 32 битных систем rpm -ihv http://centos.alt.ru/repository/centos/6/x86_64/centalt-release-6-1.noarch.rpm - для 64 битных систем
После добавления репо, его необходимо отключить, чтобы не было конфликта в системе. Открываем /etc/yum.repos.d/centalt.repo, в строке: enabled=1 меняем значение на 0.
3) Обновляем apache из нового репо:
yum --enablerepo=CentALT update httpd
4) Настраиваем:
4.1) Открываем: /etc/sysconfig/httpd, и вставляем (расскоментируем, если она есть)строчку HTTPD=/usr/sbin/httpd.itk
4.2) Открываем: /etc/httpd/conf/httpd.conf, вставляем:
<IfModule itk.c> StartServers 1 MinSpareServers 1 MaxSpareServers 15 ServerLimit 180 MaxClients 180 MaxRequestsPerChild 4000 </IfModule>
Внимание! Эти настройки для моего сервера и под мои задачи. Неправильная настройка этих параметров может привести к утечке ОЗУ на сервере!
4.3) Открываем: /etc/httpd/conf.d/php.conf, вставляем:
<IfModule itk.c> LoadModule php5_module modules/libphp5.so </IfModule>
4.4) Открываем: /usr/local/ispmgr/etc/ispmgr.conf, добавляем строку:
Option ApacheMPM
Далее в этом же файле находим строку: ApacheProcName httpd и меняем на ApacheProcName httpd.itk
4.5) Выполняем команды (по порядку!):
perl -p -i -e 's/SuexecUserGroup/AssignUserID/g' /etc/httpd/conf/httpd.conf killall -9 ispmgr killall -9 httpd service httpd restart ps ax | grep httpd
Последняя команда должна показать список процессов в конце названия которых красуется .itk.