我将APC用于与4-cpu许可证Litespeed相同的操作码。 在性能优先和安全性方面,这种情况最好的PHP处理程序是什么?
是suphp / dso / fcgi / cgi吗? (我读过,如果其中一个脚本有错误,DSO会留下漏洞)?
myusername@mybox [~]# /usr/local/cpanel/bin/rebuild_phpconf --available
Available handlers: suphp dso fcgi cgi none
PHP4 SAPI: cgi
PHP5 SAPI: not installed
SUEXEC: available
RUID2: not available
谢谢。
答案 0 :(得分:9)
在Servint博客上有一篇很棒的文章:http://blog.servint.net/2011/10/28/the-tech-bench-all-about-php-handlers/
一定要访问那里的网站,它也有比较图表。
PHP处理程序列表
DSO
也称为mod_php。虽然这是一种较旧的配置,但其主要优点是速度。它通常被认为是最快的处理程序。它直接从Apache运行PHP,而不必将其传递给单独的服务进行处理。这意味着PHP脚本将作为Apache用户运行,默认情况下,我们的服务器上的用户是'nobody'。
DSO在切换到它之前需要考虑两件事。首先,Web服务器需要写入的任何文件都必须具有“nobody”用户的写入权限,并且Web服务器创建的任何文件都将由“nobody”拥有。需要通过PHP上传文件的网站可能会遇到权限问题,因为设置并不像其他处理程序那样明确。这对于通过WordPress界面上传文件或使用自动更新功能的WordPress用户来说很常见。
关于上述内容的特别说明:文件需要使777模式可写是一种常见的误解。这不是真的,通常是一个坏主意,因为这意味着文件可由任何人写入。要使文件可由Web服务器写入,所需的最高权限应为664,并由“用户”和“无人”组拥有。对于目录,这将是775和user:nobody。这应该足以允许Web服务器写入该位置,而不会让每个人都可写,并引入潜在的关键安全漏洞。
另外,要知道DSO提供了不同类型的安全性,而不是suPHP / FastCGI。由于服务器将其作为“nobody”运行,任何能够利用服务器上的文件获得提升权限的人都可以访问Web服务器可以直接访问的任何其他文件。这仅仅意味着入侵者可以访问多个帐户中的文件,但只能访问“nobody”所拥有的文件。有关详细信息,请参阅下面的“安全性”部分。
DSO的主要优势是速度和资源使用。通过安装eAccelerator或APC等操作码缓存扩展,与其他处理程序相比,DSO运行速度更快,占用空间更小。它也是我们服务器上的默认设置。
一个好的经验法则是,DSO最适合运行一个或两个大型高性能网站的服务器,这些网站需要关注效率和速度。
CGI
CGI处理程序将PHP作为CGI模块而不是Apache模块运行。 CGI方法旨在作为DSO不可用时的后备处理程序。无论是否启用suEXEC,此方法既不快也不安全。因此,ServInt不建议使用CGI。
suPHP
suPHP将PHP作为一个单独的服务运行,然后将编译后的代码传递回Apache进行服务。它在技术上是一个CGI模块,但它与上面提到的CGI处理程序有很大的不同。 suPHP的主要区别和优势在于,启用suEXEC后,它会在用户调用PHP脚本时运行PHP脚本,而不是“nobody”用户。例如,如果某个帐户由Spock用户拥有,那么为该用户的网站提供服务的所有Apache实例都将以Spock用户身份运行。这里的优势在于它可以更轻松地使用过多的资源来跟踪网站。
以用户身份运行流程的另一个优点是它简化了整体权限方案。 Web服务器将能够写入用户拥有的文件,而不仅仅是“nobody”。从长远来看,这意味着许多CMS解决方案中的自动更新/安装功能将更容易工作,文件/目录的一般权限更加明确:644并由用户和组用户拥有文件,类似的755和user:用户的目录。
suPHP和DSO之间的安全区别在于suPHP将入侵者限制在他/她受影响的特定用户。漏洞利用不能跨帐户,但它可以影响用户拥有的每个文件,而不仅仅是网络服务器可写的文件。有关详细信息,请参阅下面的“安全性”部分。
suPHP的主要缺点是速度和CPU负载。 suPHP运行速度比其他处理程序慢得多,并且当切换到它时,您将看到整体CPU负载显着增加。 suPHP也无法使用操作码缓存扩展,例如eAccelerator或APC,这是CPU使用率增加的部分原因。因此,如果您在CMS中使用此插件,建议您实施缓存插件,例如WordPress的W3-Total-Cache。对于较小的经销商客户端,建议使用此处理程序。这是因为它将攻击锁定到一个受影响的帐户,并且CPU负载增加在繁忙的站点较少或单个cPanel帐户数量较少时不会那么显着。
的FastCGI
FastCGI(aka:mod_fcgid)类似于suPHP,因为它是一个单独的进程,它编译PHP然后发送回Apache。它也是一个CGI模块,这意味着在启用suEXEC的情况下,PHP以用户身份运行该过程。这允许您具有上述suPHP相同的权限优势。然而,两者之间的区别在于它们如何控制PHP进程。每次需要编译PHP进程时都会运行suPHP,而FastCGI会保持打开的持久连接,可以通过相同的PHP进程调用。这允许您使用操作码缓存扩展(如eAcceleartor或APC)来提高性能。
缺点是FastCGI具有很高的内存使用率。由于上面提到的持久连接存储在内存中,您将看到FastCGI占用更多可用内存。
FastCGI和suPHP的一个很好的类比是想出一本有几章的书。使用suPHP,这本书将没有目录,也没有索引,所以每次你想要找到的东西你都要通过书来查看它。这需要时间(增加的CPU使用率)并且很慢。通过FastCGI,本书具有广泛的索引和目录,因此您可以快速轻松地找到所需内容;但是这些额外的页面会使书更厚(增加内存使用量)。