В настоящее время я размещаю сайты для клиентов, использующих следующую настройку:
Apache использует рабочий MPM и обслуживает PHP через динамическую конфигурацию FastCGI:
FastCgiSuexec /usr/sbin/suexec FastCgiConfig -singleThreshold 0 -pass-header Authorization -idle-timeout 3600 SuexecUserGroup user group Action application/x-httpd-fastphp /cgi-bin/php.fcgi AddType application/x-httpd-fastphp .php
Это работает хорошо, но это создает экземпляр php-cgi для каждого VirtualHost (даже если каталог cgi-bin физически одинаков для данной учетной записи), поэтому, если у клиента есть несколько поддоменов, он начинает складываться, истощая сервер и уничтожая Это.
Итак, это подводит меня к собственному вопросу: можно ли обслуживать все запросы php для учетной записи через один экземпляр php-cgi? Желательно с сохранением бита suexec, чтобы клиенты не читали файлы за пределами своего каталога.
Есть ли у вас конфигурация fcgid для каждого виртуального хоста? (Кроме глобального конфига fcgid) то есть внутри тегов?
Я просто подумал, что это может быть одной из возможных причин проблемы, которую можно решить, добавив конфигурацию fcgid для некоторого пути файловой системы, который является общим для всех веб-учетных записей, что-то вроде этого (например, в / etc / apache2 / sites-enabled / 000-default, при использовании Ubuntu):
NameVirtualHost SOME-IP-ADDRESS:80
<Directory /some-path/webaccounts/>
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
</Directory>
<VirtualHost SOME-IP-ADDRESS:80>
...
По крайней мере, мы без проблем используем fcgid с 20-30 виртуальными хостами на машине с ОЗУ 2 Гб (Ubuntu 8.04) с настройкой, как указано выше.
Если можно добавить личное мнение ..
Используйте Nginx, он быстрее, проще и проще делать то, что вы хотите .. (и использует гораздо меньше памяти)
Это мое личное предпочтение ..: D
https://calomel.org/nginx.html хороший подробный пример