我想在 apache2 和 php(5.3.8) 中使用 fastcgi。
我在apache中安装了fastcgi_module,并在编译php时加上了--enable-fpm。我也找了一些教程,他们的设置里有两种方法:
FastCgi服务器 /usr/local/apache2/fcgi-bin/php-cgi -processes 10
或者
FastCgiExternalServer /usr/local/apache2/fcgi-bin/php-cgi -host 127.0.0.1:9000
但我找不到php-cgi在 php 5.3.8 中。下一步我该怎么做?在 php(5.3.8) 和 apache2 中使用 php-fpm 时如何设置 httpd.conf?
答案1
这里的秘密是,这php-cgi
不是一个真正的文件,而是 Apache 内部使用的一个错误文件名。您也可以这样称呼它:false-php-cgi-catcher-which-do-not-exists
。
我写了一个完整的 php-fpm+apache2.2+chroot 安装指南几天前在这里。你可以看看。但首先尝试让它在没有 chroot 的情况下工作。请注意,从 apache 2.3 开始,php-fpm 的最佳工具将是修改代理服务器
这是完整安装指南的摘录。我php5.external
在您想使用的地方使用了php-cgi
。
# phpfpm/fastcgi
# Here we catch the 'false' Location used to inexistent php5.external
# and push it to the external FastCgi process via a socket
# note: socket path is relative to FastCgiIpcDir
# which is set in Main configuration /etc/apache2/mods-available/fastcgi.conf
<IfModule mod_fastcgi.c>
# all .php files will be pushed to a php5-fcgi handler
AddHandler php5-fcgi .php
#action module will let us run a cgi script based on handler php5-fcgi
Action php5-fcgi /fcgi-bin/php5.external
# and we add an Alias to the fcgi location
Alias /fcgi-bin/php5.external /php5.external
# now we catch this cgi script which in fact does not exists on filesystem
# we catch it on the url (Location)
<Location /fcgi-bin/php5.external>
# here we prevent direct access to this Location url,
# env=REDIRECT_STATUS will let us use this fcgi-bin url
# only after an internal redirect (by Action upper)
Order Deny,Allow
Deny from All
Allow from env=REDIRECT_STATUS
</Location>
</IfModule>
FastCgiExternalServer /php5.external -socket myapplication.sock -appConnTimeout 30 -idle-timeout 60