2015-09-08 8 views
7

したがって、1つのサーバーで複数のPHPアプリケーション/サイトを実行する必要があります。 1人または複数の人がapacheとmod_php5を使用して実行する必要があり、1人または複数がmod_fastcgiとphp-fpmを使用して実行できるはずです。私はmod_php5を無効にすると、mod_php5のものは現在問題なく動作していますが、同時に動作させるのが難しいです。Apache mod_phpとmod_fastcgiを1台のApacheサーバー上で別々のvhostsで実行する

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

スーパーボーナスポイントがあるのApache 2.2以下のためのバーチャルホストの別のバージョンがあり、あなたはあまりにもそのスニペットを持っている、または少なくとも私が何をすべきかを知っていれば

イムは、私が持っている全体のバーチャルホストを投稿するつもりはない

私は彼らが間違っている知っているが、最初、デフォルトとして、mod_phpをベースバーチャルホストがそうのように探しています...理想的

#NameVirtualHost 127.0.0.1:80  < Apache 2.2 or less  
<VirtualHost 127.0.0.1:80> 
    ServerAdmin [email protected] 
    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用に設定された新しい仮想ホストにドロップできることです。また、高速CGIの場合は以下のような仮想ホストをドロップします。

# NameVirtualHost 0.0.0.0:80 < Apache 2.2 or Less 
<VirtualHost 0.0.0.0:80> 
    ServerAdmin [email protected] 
    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番目の仮想ホストを投稿したり、私が間違っていることを教えてもらえれば、前もっておかげです。

答えて

7

私たちは、2つのバージョンのPHPを同じ仮想ホストの下で実行するように私たちのサーバーで同様の設定をしています。基本的には古いバージョンのソフトウェアで、新しいバージョンに移行します.1は元のApache設定を、もう1つはCGIを実行します。 私たちはディレクトリベースなので、やや異なっていますが、私はあなたの状況のた​​めにはうまくいくはずです。我々はこれを持っている仮想ホストの設定自体に、そして、

<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> 

まず、我々は別のファイルでのFastCGIの設定/etc/apache2/mods-enabled/fastcgi.confを持って

<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それを動作させるディレクティブだと思います。次に、別のディレクトリまたは個別の仮想ホストのいずれかで別々のサイトを追加できます。

+0

ありがとうございました。乾杯 –

+0

それはうまくいっていることを聞きました:) 私たちはPHPFarmでこのすべてを扱うためにたくさんの詰め物をしなければなりませんでした。 – JeremyB

関連する問題