lighttpd和mod_proxy与PHP

我正在尝试使用lighttpd,一些自定义Ruby代理,rails / ramaze(在Thin上运行)和PHP的组合来创build相当复杂的设置。 目前它是这样设置的:

  1. 浏览器发出点击lighttpd前端的请求。 lighttpd是用mod_proxy设置的,将这个请求路由到我自定义devise的许多Ruby代理之一。

    proxy.balance = "fair" proxy.server = ( "" => ( ( "host" => "127.0.0.1", "port" => 9090 ), ( "host" => "127.0.0.1", "port" => 9091 ) ) ) 
  2. 该请求被转发到其中一个Ruby进程,然后打开一个新的连接到运行应用程序的许多瘦实例之一。 它使用了一些负载均衡魔术以及一组networking服务器。

  3. 瘦实例生成页面,将其发送回代理,代理将该页面发回给lighttpd,由lighttpd将其提供给浏览器。

我的问题是,鉴于上述体系结构,将PHP支持添加到此群集中的最佳方式是什么? PHP需要在Ruby代理之后运行,这样我就可以区分PHP和Ruby请求,并将它们路由到正确的位置,但是我找不到适用于PHP的精简型服务器。 我应该手动启动群集上的php-cgi,然后添加FCGI支持到我的Ruby代理? 还是应该在每台服务器上启动一个新的lighttpd实例来专门生成PHP页面(我觉得这与使用Ruby的瘦模型最接近,但是担心开销和缺乏控制)。

请记住,每个应用程序都需要入侵它自己的* nix帐户,一些应用程序在多个服务器上占用10多个帐户。 我还需要一种方法来正确地限制PHP应用程序使用的服务器资源的数量(也许通过每个* nix acount启动一个或两个php-cgi实例?)。

你可能需要php-fpm。

在最近的Ubuntu版本上: apt-get install php5-fpm

安装完成后,您应该有一个可用的默认configuration – 如果它尚未运行: /etc/init.d/php5-fpm start

php-fpm将为您启动PHP进程。 如果您有多个站点,请考虑使用不同的工作人员池。 configuration应该在/etc/php/php-fpm.d (或类似的)中。 检查你的/etc/php5/fpm.conf是否包含指令。 多个池允许您分开应用程序,例如以不同方式扩展。

一旦这些进程正在运行,它们将监听一个localhost:端口或一个unix域套接字。 我猜测默认是TCP。

那么在lighttpd中的configuration应该和你的瘦configuration非常相似。

让我知道这是否有帮助,或者如果你需要更多的指针!