Dieser Artikel ist bereits über 2 Jahre alt. Das gezeigte Vorgehen ist vielleicht nicht mehr aktuell.
Copyright bei Patrick Froch und easy Solutions IT. Dieses Werk ist lizenziert unter Creative Commons BY-NC-SA.
.htaccess
.
Für dieses Tutorial sind ausgeprägte Linux-Kenntnisse von Vorteil!
Installation der nötigen Komponenten
Zunächst werden die Build-Tools installiert. Diese sind nötig, um Programme kompilieren zu können.user@host:~$ sudo apt-get build-essentialDamit man die PHP-Versionen erstellen kann, müssen ein paar Abhängigkeiten installiert werden. Dies geht am einfachsten mit folgendem Befehl:
user@host:~$ sudo apt-get build-dep php5Für das hier gezeigte Setup sind noch weitere Pakete erforderlich. Es handelt sich um eine gute Grundkonfiguration, die den meisten Ansprüchen genügen sollte. Wenn unter "Build-Prozess der PHP-Versionen konfigurieren" andere Einstellungen verwendet werden, sind ggf. hier auch andere Pakete nötig.
user@host:~$ sudo apt-get install mcrypt libmcrypt4 libmcrypt-dev libreadline-dev libc-client2007e user@host:~$ sudo apt-get install libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libjpeg-dev user@host:~$ sudo apt-get install libjpeg8-dev libjpeg8 libgd-dev libgd3 libxpm4 libltdl7 libltdl-devAls letztes wird
phpfarm
installiert. In diesem Artikel wird als Speicherort
/usr/local/bin/phpfarm
gewählt. Oft wird auch
/opt/phpfarm
verwendet.
user@host:~$ sudo git clone https://github.com/cweiske/phpfarm.git /usr/local/bin/phpfarm
Apache konfigurieren
Damit Apache nachher die installierten PHP-Versionen auch nutzen kann, müssen erst einige Module installiert und aktiviert werden.user@host:~$ sudo apt-get install libapache2-mod-fastcgi apache2-mpm-worker apache2-suexec php5-fpm user@host:~$ sudo a2enmod fastcgi actions suexecJetzt wird die Konfiguration des Apache unter
/etc/apache2/sites-enabled/000-default.conf
wie folgt angepasst.
In Zeile 6 wird ein extra Verzeichnis für zusätzliche Konfigurationsdateien angegeben. Dort werden später die
Einstellungen der FastCGI-Server für jede Version gespeichert. Da alle
*.conf
-Dateien aus diesem Verzeichnis eingelesen
werden, muss nach der Installation einer PHP-Version nur der Apache neu gestartet werden. Es sind keine weiteren
Konfigurationen am Apache selber nötig! Die Zeile 20 kann später durch Einstellungen in der
.htaccess
überschrieben werden. So kann dann pro vHost die PHP-Version eingestellt
werden.
Build-Prozess der PHP-Versionen konfigurieren
Damit PHP den meisten grundlegenden Bedürfnissen genügt, wird folgende Konfiguration vorgeschlagen. Sie wird unter/usr/local/bin/phpfarm/src/custom-options.sh
gespeichert.
Nun werden noch einige Standardeinstellungen getätigt, die für alle erstellten PHP-Versionen gelten. Sie werden unter
/usr/local/bin/phpfarm/src/custom-php.ini
gespeichert.
FastCGI
Erstellen des FastCGI-Wrappers
An dieser Stelle greife ich etwas vor und erstelle ein Skript, welches später für das Delegieren der Anfragen
zuständig ist. Dies hat den Vorteil, dass der Erstellungsprozess einer PHP-Version später zusammenhängend
erläutert werden kann.
Das Skript macht zwei Dinge: zuerst versucht es aus dem eigenen Dateinamen eine Version auszulesen. Wenn dies gelingt,
wird die Anfrage an die entsprechende PHP-Version weitergeleitet. Heißt die Datei z.B.
php-cgi-5.5.0
, so wird die Anfrage an den Interpreter der Version 5.5.0
weitergeleitet. Wenn keine entsprechende Version gefunden wird, oder der Name der Datei
php-cgi-current
lautet, wird die höchstmögliche Version benutzt. Um die
FastCGI-Wrapper zentral speichern zu können, wird der Ordner
/usr/local/bin/phpfarm/bin
erstellt:
user@host:~$ sudo mkidr /usr/local/bin/phpfarm/binNun wird die "Fallback"-Datei unter dem Namen
/usr/local/bin/phpfarm/inst/php-cgi-current
erstellt. Sie wird immer dann verwendet,
wenn kein Eintrag in der jeweiligen .htaccess
vorhanden ist.
Nun muss die Datei ausführbar gemacht werden:
user@host:~$ sudo chmod +x /usr/local/bin/phpfarm/bin/php-cgi-currentFür alle neuen PHP-Versionen wird einfach die Datei kopiert und die Versionsnummer in den Dateinamen geschrieben. Für die Version
5.5.20
wird die Datei von php-cgi-current
nach
php-cgi-5.5.20
kopiert. Das Skript liest die Version dann aus dem Dateinamen aus und
ruft die entsprechende PHP-Version auf.
Konfiguration der FastCGI-Server
Wie bereits unter "Apache konfigurieren" erwähnt wurde, sollen die Konfigurationen der FastCGI-Server in einem seperaten Verzeichnis gespeichert werden. Dies wird nun erstellt:user@host:~$ sudo mkidr /usr/local/bin/phpfarm/confWie die Konfigurationen aussehen, wird im nächsten Abschnitt erläutert.
Erstellen der ersten PHP-Version
Nun sind die Vorbereitungen abgeschlossen und es ist an der Zeit die erste PHP-Version zu installieren. Als Beispiel wird hier die Version 5.4.38 installiert.Kompilieren der Version
user@host:~$ cd /usr/local/bin/phpfarm/src user@host:~$ ./compile 5.4.38
Erstellen des FastCGI-Wrappers
user@host:~$ sudo cp /usr/local/bin/phpfarm/bin/php-cgi-current /usr/local/bin/phpfarm/bin/php-cgi-5.4.38 user@host:~$ sudo chmod +x /usr/local/bin/phpfarm/bin/php-cgi-5.4.38
Konfiguration des FastCGI-Servers
Die Konfiguration wird nun in dem unter FastCGI > Konfiguration der FastCGI-Server erstellten Verzeichnis gespeichert und zwar in der Datei/usr/local/bin/phpfarm/conf/php-5.4.38.conf
.
Update: 14.06.2015
Damit man nicht ständig in die FastCGI-Idle-Time läuft und einen Error 500 erhält, sollte an die oben stehende Zeile folgendes anzuhängen werden:
Damit man nicht ständig in die FastCGI-Idle-Time läuft und einen Error 500 erhält, sollte an die oben stehende Zeile folgendes anzuhängen werden:
-idle-timeout 300
.
Services neu starten
Nun muss noch der Apache-Server und die PHP-Prozesse neu gestartet werden.user@host:~$ sudo service apache2 restart user@host:~$ sudo service php5-fpm restart
Wahl der PHP-Version
Hat man nun mehrere Versionen installiert und möchte für einen vHost eine bestimmte auswählen, reicht folgender Eintrag am Ende der entsprechenden.htaccess
:
Hier wird als Beispiel auf die Version 5.5.0
umgestellt. Diese müsste natürlich installiert sein, damit
es funktioniert. Aber dies sollte jetzt ja kein Problem mehr sein.
Kommentare
Einen Kommentar schreiben