我需要提供一个处理大量请求的 PHP 应用程序。我想知道与 Apache 以外的任何东西一起使用是否有任何真正的好处,以及替代方案的优缺点是什么。
我有一些在 Rails 应用程序中使用 lighttpd 和 nginx 的经验。他们也是 PHP 的有力竞争者吗?有什么重要的设置技巧吗?
PHP 加速器怎么样,它们可以与这些替代服务器一起使用,这是一个好主意吗?
我在一个 OpenSolaris 盒子上。
不确定是否相关,但稍后,我计划在此服务器前面放置一个 Varnish 代理/缓存。
编辑:
我想补充一点,我绝对无意触摸该应用程序。这是 PHP 著名的典型混乱,基本上没有时间。
Apache 是 mod-php 的良好基础 - 并为字节码缓存添加 APC,并且一些变量缓存将有很大帮助,事实上,这是您可以做的最明显的事情来加快 PHP 脚本的运行时间(另外,使用Yslow 以加速 HTML 前端并确保优化数据库)。
不过,我要添加一些建议,例如避免从 Apache 提供图像和其他静态内容。我有一个带有专用图像服务器的单独(子)域(我使用thttpd,但nginx也完全适合)。不过,从一个完全独立的域名(或 CDN)提供图像会更好。
NginX 还具有能够充当代理的优势,它可以处理入站连接,然后将结果反馈出来——这意味着 Apache2/Mod_php 的后端生产者进程可以在完全本地工作- 网络速度,而不必等待网络浏览器客户端赶上。
Varnish 可以执行 Nginx 无法执行的额外工作,但我不太了解 - 你可能只使用一个或另一个,但不太可能必须同时使用两者。
nginx与php-fpm和xcache相结合将比任何 Apache 解决方案提供巨大的速度改进。
根据您的应用程序,合并诸如memcache之类的东西也可能提供巨大的缓存优势。
由于 Wordpress 站点,我的带有 mod_php 的 Apache 服务器内存不足。所以在优化了 Wordpress 之后,我转向了 Apache。我发现 mod_fastcgi 比 mod_fcgi 效果更好。将 PHP 移出 Apache 减少了 Web 服务器的占用空间(每个进程从 38M 减少到 4M)。我还安装了 eAccelerators,发现 PHP 运行得更快。此外,如果您的页面有很多包含(CSS 和 javascript),我使用 Wordpress 所做的技巧之一是将包含压缩到一个文件中,该文件具有最少的空白(但这可能更像是 Wordpress 的产物)。
所以我建议看到将 PHP 从 Apache 中移出(并使用 mod_fastcgi [php-cgi] 进入一个单独的进程)会有所帮助。请注意,PHP 加速器会增加 PHP 进程的内存需求(这是将其移出 Apache 进程的另一个原因)。