web-dev-qa-db-ja.com

Apacheと複数のPHP-FPMプール

Ubuntu 12.04でPHP-FPM 5.4を使用してApache 2.2 vhostsから実行する2つのサイトがあります。これまではサーバー全体(ストック)のmod_fastcgi構成を使用してきましたが、これを2つのFPMプールに分割して、それぞれに異なるPHP設定を使用できるようにします(たとえば1つ)開発サイトなので、エラー表示が有効になっています)。

次のように、ドキュメントに従って、名前とソケットの場所が異なる2つのFPMプールをセットアップし、グローバルfastcgi構成を無効にして、vhostsにコピーし、各vhostの異なるプールを指すように変更しました。

<IfModule mod_fastcgi.c>
    <FilesMatch \.php$>
        SetHandler php-script
    </FilesMatch>
    Action php-script /php5.fcgi virtual
    Alias /php5.fcgi /var/fastcgi/php5.fcgi
    FastCGIExternalServer /var/fastcgi/php5.fcgi -socket /var/run/php5-fpm-www.sock
    <Directory "/var/fastcgi">
        Order allow,deny
        <Files "php5.fcgi">
            Order deny,allow
            Deny from all
            Allow from env=REDIRECT_STATUS
        </Files>
    </Directory>
</IfModule>

各ホスト名には通常のSSLフレーバーがあり、各ペアは1つのFPMプールを指すため、実際には4つのvhostがあります。

私が遭遇する問題は、Apacheが次のようなエラーをスローすることです。

FastCgiExternalServer: redefinition of previously defined class "/var/fastcgi/php5.fcgi"

これはどのように行う必要がありますか?

4
Synchro

トリックは、アクションとエイリアスも「再定義」しないように名前を変更する必要があるということです。したがって、「www」プールの場合、vhost設定は次のようになります。

<IfModule mod_fastcgi.c>
    <FilesMatch \.php$>
        SetHandler php-script
    </FilesMatch>
    Action php-script /php5-www.fcgi virtual
    Alias /php5-www.fcgi /var/fastcgi/php5-www.fcgi
    FastCGIExternalServer /var/fastcgi/php5-www.fcgi -socket /var/run/php5-fpm-www.sock
    <Directory "/var/fastcgi">
        Order allow,deny
        <Files "php5-www.fcgi">
            Order deny,allow
            Deny from all
            Allow from env=REDIRECT_STATUS
        </Files>
    </Directory>
</IfModule>

同じプールでのSSLの場合:

<IfModule mod_fastcgi.c>
    <FilesMatch \.php$>
        SetHandler php-script
    </FilesMatch>
    Action php-script /php5-www-ssl.fcgi virtual
    Alias /php5-www-ssl.fcgi /var/fastcgi/php5-www-ssl.fcgi
    FastCGIExternalServer /var/fastcgi/php5-www-ssl.fcgi -socket /var/run/php5-fpm-www.sock
    <Directory "/var/fastcgi">
        Order allow,deny
        <Files "php5-www-ssl.fcgi">
            Order deny,allow
            Deny from all
            Allow from env=REDIRECT_STATUS
        </Files>
    </Directory>
</IfModule>

つまり、異なる名前を使用していますが、同じソケットを指しています。

10
Synchro