使用Apache + mod_FastCGI设置PHPFPM

时间:2013-04-21 21:08:14

标签: php apache fastcgi

我最近接手了一个运行PHP和Apache的WebServer。 PHP目前通过Apache的mod_fastcgi使用PHPFPM。一切都运行良好,但在我的研究中,为了确保我理解实现的内部和外部,我遇到了令人费解的配置。在Apache WebServer上,使用以下内容:

ScriptAlias /php-cgi "/usr/local/bin/php-cgi"    
AddHandler php-fastcgi .php    
Action php-fastcgi /php-cgi
FastCGIExternalServer /usr/local/bin/php-cgi -socket /tmp/php-fpm.sock -idle-timeout 60 -pass-header Authorization

现在,如上所述,上述配置工作正常。但似乎这种配置使用的是两种解决方案 - PHP-CGI解决方案和PHP-FPM解决方案。根据我的阅读和理解,PHP-FPM提供了PHP-CGI的替代品,而不是与它一起运行的东西。因此,我认为应该采用以下配置:

ScriptAlias /php-cgi "/usr/local/sbin/php-fpm"    
AddHandler php-fastcgi .php    
Action php-fastcgi /php-cgi
FastCGIExternalServer /usr/local/sbin/php-fpm -socket /tmp/php-fpm.sock -idle-timeout 60 -pass-header Authorization

第二种配置(使用PHP-FPM)也有效。我没有注意到两者之间的任何事情,但它让我担心一个或另一个实际上是错误的。

有人会介意分享他们的想法,发现或回答哪些配置已经到位?当我应该运行php-fpm时,我不喜欢运行php-cgi的想法。

提前谢谢, 杰森

1 个答案:

答案 0 :(得分:2)

您正在查看错误的参数。在这种情况下,FastCGI使用套接字与PHP-FPM进行通信。您将看到在PHP-FPM配置中配置的套接字。

所以这不是FastCGIExternalServer的第一个重要参数,而是第二个参数。第一个是愚弄Apache。

所以处理程序发生的事情是,为php创建一个Handler,为该Handler创建一个Action,该路径是别名的。完成此操作后,FastCGI可以将该路径指向套接字。

在Apache 2.4中使用mod_proxy_fcgi会更好。

干杯, 约瑟夫