当将 php-fpm 与 php(5.3.8) 和 apache2 一起使用时,如何设置 httpd.conf?

当将 php-fpm 与 php(5.3.8) 和 apache2 一起使用时,如何设置 httpd.conf?

我想在 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

相关内容