PHP-FPM mit Apache 2.4 unter Ubuntu 14.04 LTS

Heute möchte ich einen Workaround präsentieren, um PHP-FPM mit Apache 2.4 unter Ubuntu 14.04 LTS via TCP-Socket zu konfigurieren.
Speziell geht es darum, dass man PHP-FPM nicht via Unix-Socket mit Apache 2.4 ansprechen kann.
Ein kleiner aber feiner Fehler in Apache vor Version 2.4.9 ist dafür verantwortlich.

Leider ist die aktuelle Version von Apache im offiziellen Ubuntu-Repository 2.4.7.

Da ich immer möglichst wenig manuelle Änderungen am Hauptsystem vorziehe, hier mein Lösungsweg.

PHP-FPM pool konfigurieren

Ich gehe davon aus, dass hier die Pakete apache2 und php-fpm bereits installiert habt.
Der Standard-Pfad zur PHP-FPM Konfiguration lautet /etc/php5/fpm.
Da die Standard-Konfiguration bereits für einen Unix-Socket hinterlegt ist müssen wir dies ändern. Allerdings habe ich bereits einige nginx Instanzen auf meinem Server konfiguriert, welcher PHP-FPM via Unix-Socket anspricht. Aus diesem Grund konfiguriere ich einfach eine zweite PHP-FPM Instanz.

sudo cp pool.d/www.conf pool.d/www-apache.conf

Die verschiedenen PHP-FPM Instanzen werden über so genannte pool Konfigurationen gesteuert.

Nun könnt Ihr die neu kopierte Datei mit VI bearbeiten und folgende Zeilen bearbeiten.

; Start a new pool named 'www'.
; the variable $pool can we used in any directive and will be replaced by the
; pool name ('www' here)
[www-apache]

Der Standard pool nennt sich schlicht www - diesen könnt Ihr einfach in Zeile vier zu www-apache ändern.
Dies dient nur um den originalen Prozess mit seinen Konfigurationen nicht zu überschreiben.
Die eigentliche Änderung erfolgt in Zeile 33.

; The address on which to accept FastCGI requests.
; Valid syntaxes are:
;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific address on
;                            a specific port;
;   'port'                 - to listen on a TCP socket to all addresses on a
;                            specific port;
;   '/path/to/unix/socket' - to listen on a unix socket.
; Note: This value is mandatory.
listen = 127.0.0.1:9000

Wie in der Syntax beschrieben ändern wir den Wert für listen zu einem TCP-Socket - in meinem Fall 127.0.0.1:9000 (localhost)
Die Änderungen werden nach einem Neustart des Dienstes aktiv.

sudo service php5-fpm restart

Apache vHost

Nun können wir innerhalb einer Apache vHost Konfiguration PHP-Dateien via PHP-FPM interpretieren lassen.

Ihr müsst unbedingt das Modul proxy_fcgi aktivieren - sudo a2enmod proxy_fcgi

Hier ein Beispiel wie ich meinen alten Wordpress Blog aus nostalgischen Gründen in meiner virtuellen Maschine abrufen kann.

<VirtualHost *:7071>
    ServerName localhost
    DocumentRoot /media/sf_workspaces/wordpress/sunlix.de
    DirectoryIndex index.php
    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/media/sf_workspaces/wordpress/sunlix.de/

    <Directory /media/sf_workspaces/wordpress/sunlix.de>
        Options FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/sunlix-wordpress-2012.error.log
    CustomLog ${APACHE_LOG_DIR}/sunlix-wordpress-2012.access.log combined
</VirtualHost>

Es ist im Grunde nicht viel was getan werden muss - alles weil es im Ubuntu-Repository keine aktuellere Apache-Version für 14.04 gibt.
Ich hoffe es hilft euch ein wenig weiter.

Viel Erfolg.

Kommentar schreiben

Benutzerdaten
Ihr Kommentar