Я пытаюсь создать довольно сложную настройку, используя комбинацию lighttpd, некоторых настраиваемых прокси Ruby, rails / ramaze (работает на Thin) и PHP. В настоящее время он настроен так:
Браузер выдает запрос, который попадает в интерфейс lighttpd. lighttpd настроен с помощью mod_proxy для маршрутизации этого запроса в один из многих прокси Ruby, которые были специально разработаны мной.
proxy.balance = "fair"
proxy.server = ( "" =>
(
( "host" => "127.0.0.1", "port" => 9090 ),
( "host" => "127.0.0.1", "port" => 9091 )
)
)
Запрос перенаправляется в один из процессов Ruby, который затем открывает новое соединение с одним из множества тонких экземпляров, запускающих приложение. Он использует некоторую магию балансировки нагрузки вместе с кластером сетевых серверов.
Тонкий экземпляр генерирует страницу, отправляет ее обратно на прокси, а прокси отправляет страницу обратно в lighttpd, который передает ее браузеру.
У меня вопрос: с учетом вышеупомянутой архитектуры, как лучше всего добавить поддержку PHP в этот кластер? PHP должен работать за прокси-сервером Ruby, чтобы я мог различать запросы PHP и Ruby и направлять их в нужное место, но я не могу найти тонкий сервер для PHP. Должен ли я вручную запускать php-cgi в кластере, а затем добавлять поддержку FCGI в свой прокси-сервер Ruby? Или мне следует запустить новый экземпляр lighttpd на каждом сервере специально для создания страниц PHP (я чувствую, что это было бы ближе всего к моей тонкой модели с Ruby, но меня беспокоят накладные расходы и отсутствие контроля, которое это дает мне)?
Имейте в виду, что каждое приложение должно быть помещено в свою собственную учетную запись * nix, а некоторые приложения занимают более 10 учетных записей на нескольких серверах. Мне также нужен способ правильно ограничить количество ресурсов сервера, которые использует приложение PHP (возможно, путем запуска только одного или двух экземпляров php-cgi для каждой учетной записи * nix?).
Вероятно, вам нужен php-fpm.
В последних версиях Ubuntu: apt-get install php5-fpm
.
После установки у вас должна быть доступна конфигурация по умолчанию - если она еще не запущена: /etc/init.d/php5-fpm start
.
php-fpm запустит за вас процессы PHP. Если у вас несколько сайтов, подумайте об использовании разных пулов рабочих. Конфигурация должна быть в /etc/php/php-fpm.d
(или похожие). Проверьте свои /etc/php5/fpm.conf
для директивы include. Несколько пулов позволяют разделять приложения, например масштабировать иначе.
Когда процессы запущены, они будут прослушивать порт localhost: или сокет домена unix. Я предполагаю, что по умолчанию используется TCP.
Тогда конфигурация в lighttpd должна быть очень похожа на вашу конфигурацию для thin.
Дайте мне знать, поможет ли это или вам понадобятся дополнительные указатели!