среда, 7 марта 2012 г.

куда делся режим "PHP как FastCGI"

forum.ruweb.net/viewthread.php?fid=18&tid=2813

В шаблонах VDS для FreeBSD-6 имелось 3 режима работы PHP:
- PHP как модуль Apache;
- PHP как CGI;
- PHP как FastCGI.

Во FreeBSD-8 их осталось только два:
- PHP как модуль Apache;
- PHP как CGI.

Поэтому часто приходится слышать вопрос: куда делся режим "PHP как FastCGI"?

Дело в том, что режим "PHP как модуль Apache" на новых VDS претерпел изменения. Теперь Apache там собран с поддержкой MPM-ITK, который позволяет запуск каждого виртуального хоста под отдельными uid и gid. Иными словами, php-скрипты в этом режиме будут обрабатываться от имени владельца домена, что повышает безопасность и снимает некоторые ограничения (например, safe mode - отключен).
Таким образом, в большинстве случаев оптимальным режимом работы PHP на VDS с FreeBSD-8 теперь является "PHP как модуль Apache".


Что делать, если для сайта крайне необходим режим "PHP как FastCGI"?

К сожалению, просто так вернуть его не получится - в частности нужно пересобрать Apache без поддержки MPM-ITK. Это означает, что он перестанет обновляться автоматически вместе с шаблоном, и забота об актуальности Apache в дальнейшем целиком ложится на плечи владельца VDS.

Если вы понимаете последствия данного шага, вернуть "PHP как FastCGI" можно следующим образом:

1) открываем файл /etc/make.conf и удаляем строчку "WITH_MPM=itk" из блока:

.if ${.CURDIR:N*/usr/ports/www/apache22} == ""
WITH_MPM=itk
WITH_SUEXEC=yes
SUEXEC_DOCROOT=/
WITH_PROXY_MODULES=yes
.endif

2) удаляем apache-itk:
# pkg_delete -f apache-itk-2.2.21

3) устанавливаем apache (без itk):
# cd /usr/ports/www/apache22 && make install clean

4) устанавливаем mod_fcgid:
# cd /usr/ports/www/mod_fcgid && make install clean

5) открываем файл /usr/local/etc/apache22/httpd.conf и добавляем строчку:
LoadModule fcgid_module libexec/apache22/mod_fcgid.so

6) в том же файле во всех виртуальных хостах (если они уже есть) меняем:
AssignUserID имя_юзера имя_юзера
на
SuexecUserGroup имя_юзера имя_юзера

7) открываем файл /usr/local/ispmgr/etc/ispmgr.conf и удаляем оттуда строчку:
Option ApacheMPM

8) убиваем все процессы ISPmanager:
# killall ispmgr

9) если после этого режим "PHP как FastCGI" не появился, добавляем строчку:
Option ForcePhpFastCgi
в файл /usr/local/ispmgr/etc/ispmgr.conf и повторяем пункт 8.

Комментариев нет:

Отправить комментарий