我只是用Apache,FastCGI和PHP-FPM设置我的服务器。 我的问题是关于/ cgi-bin /文件夹:是否真的有必要为每个使用不同用户/组运行apache的单个虚拟主机提供一个/ cgi-bin / php-fpm包装? 而且,如果用户删除了cgi-bin文件夹,那么fpm / fastcgi的好处将会丢失。 理想情况下,我想设置PHP-FPM,而不需要.conf文件之外的任何东西。
据我所知,php-cgi二进制文件(这就是php-fpm包装器执行的所有内容)可以被系统上的所有用户执行…那么为什么包装要运行的同一个可执行文件的麻烦用户呢? 更具体地说,我怎样才能改变这个configuration直接使用php-cgi二进制文件,而不是通过包装?
与我的问题有关的文件/结果是:
/etc/apache2/modules.d/20_mod_fpm.conf -------------------------------------------------- ------------------------------- ... FastCgiExternalServer / var / www / localhost / cgi-bin / php-fpm -host 127.0.0.1:9000 AddHandler php-fpm .php 动作php-fpm / cgi-bin / php-fpm DirectoryIndex index.php ...
在/ var / WWW /本地主机/ cgi-bin目录/ PHP-FPM -------------------------------------------------- ------------------------------- #!的/ usr / bin中/ PHP,CGI
phpinfo()函数 -------------------------------------------------- ------------------------------- ... 服务器API:FPM / FastCGI ...
可爱。 运行基准testing报告说,这个设置确实运行得非常好:每秒约135个请求,而不是使用默认的Apache / PHP解释器设置的每秒13个请求。 所以剩下的就是让多用户方面无缝衔接。
例如,在Redhat / centos机器上,php-fpm实际上是/ usr / sbin /目录下的一个二进制文件。 它拦截来自服务器(apache / nginx)的处理来处理php请求。 php-fpm的设置可以在php-fpm.conf( http://php-fpm.org/wiki/Configuration_File )中调整,它可以让你微调你的系统。 php-fpm是相当先进的,并给你很多的控制你的系统。
不知何故,你的系统上的php-fpm文件似乎更像一个正常的fastcgi / cgi包装。 如果你想绕过使用“你的php-fpm版本”并直接使用php-cgi,你可以使用一个自定义的fastcgi包装器。 自定义fastcgi包装的一个例子是:
#!/bin/bash ### Set PATH ### PHP_CGI=/usr/bin/php-cgi PHP_FCGI_MAX_REQUESTS=1000 export PHP_FCGI_MAX_REQUESTS exec $PHP_CGI
其中一个可以在php-fpm.conf中设置的选项是让你以另一个用户的身份执行php脚本。 Suexec也提供了这个function,Apache可以调用这个函数将请求传递给将处理php文件的fastcgi包装器。 suexec + fastcgi一起提供了php-fpm的一些关键function,因此可以作为替代scheme。
使用包装可以让你有select地进行额外的configuration,如设置环境variables,select一个php.ini文件等