在过去一年半的时间里,我一直停留在 MS 堆栈架构/开发职位上,这使我无法在基于开源堆栈的 Web 服务器最近的发展中保持领先地位,这超出了我的预期。然而,我现在正在构建一个基于开源堆栈的应用程序/系统架构,遗憾的是我没有时间对上述每个 Web 服务器进行彻底的测试来决定。所以我想我会从最知名的系统架构社区那里获得意见。
这是一个站点,它是有关特定域和目标受众的信息资源,其功能不仅可以帮助用户找到信息,而且还可以出于各种原因以各种方式相互交互。
我选择开源堆栈是因为它拥有丰富的资源以及比 MS 堆栈更好的产品(即 WordPress 与 BlogEngine.NET)。我觉得 Java 在这方面更多地处于这些堆栈的中间,尽管我不排除在与实际 Web 应用程序本身无关的某些领域(例如后台进程)使用它的可能性。
我已经得出在 CentOS 上使用 PHP(使用 CodeIgniter 框架和 APC)、MySQL(InnoDB)和 Memcached 的结论。我肯定在 Nginx 上提供静态内容。然而,提到的 3 个服务器在性能方面哪个最适合动态内容并没有达成共识。似乎 LightTPD 仍然存在泄漏问题,如果它确实存在,则排除它,Nginx 似乎在这方面还不够成熟,当然 Apache 试图成为所有人的一切。
我仍然会编译选择的一个,尽可能多地进行性能调整,例如静态链接等。我相信我可以让 Apache 在通过这个过程提供动态内容而不是让它提供任何静态内容方面与其他 2 相匹配。然而,在我的研究中,其他的似乎仍然值得考虑。
因此,考虑到所有事情,我很想听听这里的每个人对此事的看法。谢谢!
对此有点怀疑,但我的印象是,Apache 将比其他两台服务器更容易配置为服务 PHP。如果你正确设置了 Apache,即不加载不必要的模块,控制进程/线程的数量等,那么我认为你可以在效率上合理地接近 nginx 或 lighttpd。我认为许多人对使用 lighttpd 或 nginx 而非 Apache 来动态生成页面的改进意见有些夸大。
我个人认为 nginx 比 Apache 更容易配置。查看 Apache 配置往往会让我头疼。
就配置而言,我目前首选的设置是 nginx + php-fpm + APC。我有几个客户端使用这个配置运行得非常愉快,他们通常已经从基于 Apache 的设置中迁移出来。显然,YMMV。=)
既然你提到了 CodeIgniter,你可能想看看 Kohana,它最初是 CodeIgniter 的一个分支,但是已经在 php5 的改进的 OO 概念上实现了所有的 OO。我并不是说哪个更好,最终它是一个问题个人喜好。