9

そのため、1 つのサーバーで複数の php アプリ/サイトを実行する必要があります。1 つまたは多数は apache と mod_php5 を使用して実行する必要があり、1 つまたは多数は mod_fastcgi と php-fpm を使用して実行できる必要があります。mod_php5 のものは現在問題なく、mod_php5 を無効にすると fastcgi のものは機能しますが、それらを同時に機能させるのは困難です。

これは、apache で filesmatch、if.mod_fastcgi、if.mod_actions の組み合わせを使用して実現できると思いますが、それが何であるかはわかりません。必要に応じて、これを行うために必要な apache モジュールをインストールできます。

Apache 2.2以下の異なるバージョンのvhostがあり、そのスニペットも持っている場合、または少なくとも私が何をすべきかを知っている場合は、スーパーボーナスポイント

私が持っている仮想ホスト全体を投稿するつもりはありませんが、それらが間違っていることはわかっていますが、最初のデフォルトの mod_php ベースの仮想ホストは次のように見えます...

#NameVirtualHost 127.0.0.1:80     < Apache 2.2 or less    
 <VirtualHost 127.0.0.1:80>
   ServerAdmin webmaster@localhost
   ServerName some.site.tld
   DocumentRoot /var/www/some/site/
   <Directory /var/www/some/site/>
     Options Indexes FollowSymLinks MultiViews
     Require all granted
#               Order deny,allow     < Apache 2.2 or less
#               Allow from all     < Apache 2.2 or less
   </Directory>
   ErrorLog /var/log/apache2/error.log
   CustomLog /var/log/apache2/access.log combined
 </VirtualHost>

理想的には、これらは手付かずのままにしておき、必要に応じてさらに追加できるようにしたいと考えています。

私が望む結果は、最初の構成のようなものを使用して mod_php 用に構成された新しい vhosts をドロップできるようにすることと、高速 cgi 用に次のような vhosts をドロップできることです。

# NameVirtualHost 0.0.0.0:80  < Apache 2.2 or Less
<VirtualHost 0.0.0.0:80>
   ServerAdmin webmaster@localhost
   ServerName some.application.tld
   DocumentRoot /opt/some/app/dir/
   ErrorLog /var/log/apache2/error.log
   CustomLog /var/log/apache2/access.log combined
   <IfModule mod_fastcgi.c>
     #     php_admin_flag engine off    < I tried to use this to disable PHP
     AddType application/x-httpd-fastphp5 .php
     Action application/x-httpd-fastphp5 /php5-fcgi
     Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi_someapp
     FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi_someapp -socket /var/run/php5-fpm_ptbuild.sock -pass-header Authorization
     <Directory /usr/lib/cgi-bin>
       Options Indexes FollowSymLinks MultiViews ExecCGI
       Require all granted
     </Directory>
     <Directory /opt/some/app/dir/>
       #Options Indexes FollowSymLinks MultiViews ExecCGI
       Require all granted
     </Directory>         
   </IfModule>
#    I tried to use the below alongside mod_php, didnt work
#    <IfModule mod_php5.c>
#        php_admin_flag engine off
#        AddType application/x-httpd-fastphp5 .php
#       <Directory /opt/some/app/dir/>
#               Options Indexes FollowSymLinks MultiViews ExecCGI
#               Require all granted
#       </Directory>
#    </IfModule>
</VirtualHost>

2 番目の vhost を投稿するか、私が間違っていることを教えていただければ幸いです。

4

1 に答える 1

8

サーバー上で 2 つのバージョンの PHP を実行するための同様のセットアップがありますが、同じ仮想ホストの下にあります。基本的に、新しいバージョンへの移行中の古いバージョンのソフトウェア用です。1 つは元の Apache 構成を介して実行され、もう 1 つは CGI を介して実行されます。私たちのものはディレクトリベースなので、少し異なりますが、それでもあなたの状況でうまくいくはずです。

まず、別のファイル/etc/apache2/mods-enabled/fastcgi.confに fastCGI 構成があります。

<IfModule mod_fastcgi.c>
    #  AddHandler fastcgi-script .fcgi
    FastCgiWrapper /usr/lib/apache2/suexec
    FastCgiIpcDir /var/lib/apache2/fastcgi
    FastCgiConfig -idle-timeout 110 -killInterval 120 -pass-header HTTP_AUTHORIZATION -autoUpdate
    ScriptAlias /php-fcgi/ /var/www/cgi-bin/
</IfModule>

次に、仮想ホスト構成自体に次のように記述します。

<VirtualHost *:80>
    ServerName sitename
    ...
    # Original non-CGI site
    <Directory "/sites/webroot/site1/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride all
        Order allow,deny
        Allow from all
    </Directory>

    # FastCGI version
    <Directory "/sites/webroot/site2/">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
        AddHandler php-cgi .php
        Action php-cgi /php-fcgi/php562.fcgi
        <FilesMatch "\.php$">
            SetHandler php-cgi
        </FilesMatch>
    </Directory>
</VirtualHost>

あなたに必要な重要なことは、それを機能させるAddHandlerおよびSetHandlerディレクティブだと思います。次に、異なるディレクトリまたは個別の仮想ホストを使用して、個別のサイトをいくつでも追加できるはずです。

于 2015-09-09T00:42:35.593 に答える