Назад | Перейти на главную страницу

Один сервер fastcgi / php-cgi для нескольких виртуальных хостов?

В настоящее время я размещаю сайты для клиентов, использующих следующую настройку:

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 хороший подробный пример