2015-09-08 12 views
7

Also muss ich mehrere php apps/sites auf einem Server ausführen. Eine oder mehrere sollten mit Apache und mod_php5 laufen, und eine oder mehrere sollten mit mod_fastcgi und php-fpm laufen können. Die Mod_php5 sind derzeit in Ordnung, und die Fastcgi funktionieren, wenn ich mod_php5 deaktiviere, aber ich habe Schwierigkeiten, sie zur gleichen Zeit zur Arbeit zu bringen.Ausführen von Apache mod_php und mod_fastcgi in separaten Vhosts auf einem Apache-Server

Ich denke, das kann mit einer Kombination von filesmatch, if.mod_fastcgi und if.mod_actions in Apache erreicht werden, aber ich kann nicht herausfinden, was es ist. Wir können alle erforderlichen Apache-Module bei Bedarf installieren.

Super-Bonuspunkte, wenn es eine andere Version des vhost für Apache 2.2 oder weniger ist, und Sie haben diese Schnipsel zu, oder zumindest wissen, was soll ich

tun

Im ich nicht die gesamten vhosts gehen posten wie ich weiß, dass sie falsch sind, aber die ersten, die standardmäßig mod_php basierend vhosts suchen wie so ...

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

Idealerweise weise~~POS=HEADCOMP würde ich mag diese unberührt bleiben, und dass wir mehr, wenn wir hinzufügen brauche mehr davon.

Das Ergebnis, das ich möchte, ist in der Lage, neue vhosts für mod_php mit etwas wie die erste Konfiguration einzufügen, und auch in vhosts wie folgt für schnelle cgi fallen lassen.

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

Wenn Sie die zweite vHost posten könnte, oder mir sagen, was ich falsch mache, vielen Dank im Voraus.

Antwort

7

Wir haben ein ähnliches Setup auf unseren Servern, um 2 PHP-Versionen auszuführen, aber unter demselben virtuellen Host. Im Wesentlichen ist es für eine alte Version der Software beim Übergang zu einer neuen Version - 1 läuft durch die ursprüngliche Apache-Konfiguration und die andere über CGI. Unser Verzeichnis basiert, so etwas anders, aber ich denke, es sollte für Ihre Situation noch funktionieren.

Zuerst haben wir die FastCGI-config in einer separaten Datei /etc/apache2/mods-enabled/fastcgi.conf:

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

Dann wird in der virtuellen Host-Config selbst wir dieses:

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

ich denke, der Schlüssel, was für Sie erforderlich ist, ist die AddHandler und SetHandler Richtlinien, die es funktioniert. Dann sollten Sie in der Lage sein, so viele separate Sites entweder mit verschiedenen Verzeichnissen oder einzelnen virtuellen Hosts hinzuzufügen.

+0

Danke Kumpel, es dreht sich alles um die Handler. Prost –

+0

Gut zu hören es funktionierte :) Wir mussten viel stuffing um dies alles mit PHPFarm arbeiten. – JeremyB

Verwandte Themen