我希望这里有人可以对下面的内容有所了解:
我正忙于使用NGINX和HHVM以及PHP-FPM故障转移设置共享托管服务器。我计划在服务器上托管100到200个Wordpress站点。
HHVM配置为使用FastCGI。是否可以让一个HHVM实例运行多个网站,每个网站都是各自的Linux用户?或者我唯一的选择是将所有内容作为默认的www-data用户运行?
由于其明显的安全性和交叉污染风险,我希望避免后者的厨房环境。我已经看到提到运行单独的HHVM实例,每个网站一个,但这听起来像是一个相当资源密集的选项。
如果不可能有一个带有FastCGI的HHVM实例并且每个网站的PHP进程都作为相应的Linux用户运行,我可能会选择放弃HHVM以支持PHP- FPM将允许我实现后者。
任何提示或建议都将非常感谢!!
由于
答案 0 :(得分:2)
虽然可以让一个HHVM实例为许多共享站点提供服务(这是一个非常简单的nginx配置),但它仍然是为所有这些配置服务的单个HHVM进程 - 即,以同一个用户身份运行all。如果您需要在每个站点之间进行完全分离,则必须为每个站点运行单独的HHVM实例。使这个共享主机设置更加顺畅是团队希望在某些时候继续工作的。
这是性能权衡。默认情况下,HHVM作为单个进程运行,其中每个请求都是该进程内的线程。这允许HHVM更有效地处理请求:它不会为每个请求分配新进程,并且,如果您向同一站点提供大量请求,请求可以共享数据,例如编译的字节码和程序集( “翻译缓存”)。
PHP-FPM模型实际上类似于您建议解决问题的后一种想法:PHP-FPM 始终为每个请求分配一个新进程。它没有HHVM所做的线程模型的选择。当然,无论如何,进程可能都是你想要的共享托管环境。
然而,与HHVM相比,PHP-FPM每个进程的启动成本和内存开销略低。这种权衡取决于您和您的客户。正如我上面所说的那样,让HHVM在这样的共享主机设置中更好地工作,团队希望在某些时候能够更顺利地完成工作。