Dieses Tutorial zeigt, wie man PHP 5.6 als PHP-FPM und eine FastCGI-Version auf Ubuntu 16.04 (Xenial Xerus) baut. Ubuntu 16.04 wird standardmäßig mit PHP 7 ausgeliefert, aber es gibt immer noch viele Websites, die PHP 7 nicht unterstützen. Dieses Tutorial zeigt Ihnen, wie Sie PHP 5.6 als zusätzliche PHP-Version auf Ubuntu 16.04 installieren, damit Sie zwischen beiden Versionen wechseln können jede Website einzeln in ISPConfig.
1 Vorbemerkung
Ich werde PHP 5.6 in /opt installieren, damit das Haupt-PHP 7 von Ubuntu nicht betroffen ist und PHP 7 das Standard-PHP unseres Servers bleibt, während PHP 5.6 als Option in ISPConfig (Website-Einstellungen) verfügbar ist. Bitte beachten Sie, dass PHP-FPM sowohl auf Apache- als auch auf Nginx-Servern verwendet werden kann, während FastCGI nur für Apache-Server in ISPConfig verfügbar ist.
Bei älteren PHP-Versionen schlossen sich PHP-FPM und FastCGI gegenseitig aus, sodass eine FPM- und FastCGI-Binärdatei separat erstellt werden musste. Mit PHP 5.6 kann eine einzelne Binärdatei erstellt werden, die den FPM- und FCGI-Modus unterstützt.
2 Kompilieren Sie PHP 5.6 mit PHP-FPM und Fastcgi
Installieren Sie die Voraussetzungen zum Erstellen von PHP 5.6, wget und des Nano-Editors, den ich zum Bearbeiten der Konfigurationsdateien verwenden werde:
apt-get install build-essential wget nano
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-dev libxml2-dev libbz2-dev libcurl4-openssl-dev libjpeg-dev libpng12-dev libfreetype6-dev libkrb5-dev libpq-dev libxml2-dev libxslt1-dev
ln -s /usr/lib/libc-client.a /usr/lib/x86_64-linux-gnu/libc-client.a
(Der letzte Befehl wird benötigt, wenn Sie PHP mit --with-imap erstellen, da sonst ./configure mit folgendem Fehler stoppt:
checking for crypt in -lcrypt... yes
configure: error: Cannot find imap library (libc-client.a). Please check your c-client installation.
[email protected]:/usr/local/src/php5-build/php-5.6.30#
)
Laden Sie PHP 5.6 von php.net herunter und extrahieren Sie es:
mkdir /opt/php-5.6.30
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de.php.net/get/php-5.6.30.tar.bz2/from/this/mirror -O php-5.6.30.tar.bz2
tar jxf php-5.6.30.tar.bz2
cd php-5.6.30/
Konfigurieren und bauen Sie PHP 5.6.30 wie folgt (Sie können den ./configure-Befehl an Ihre Bedürfnisse anpassen, werfen Sie einen Blick auf
./configure --help
um alle verfügbaren Optionen zu sehen; Wenn Sie einen anderen ./configure-Befehl verwenden, werden möglicherweise zusätzliche Bibliotheken benötigt oder der Erstellungsprozess schlägt fehl):
./configure --prefix=/opt/php-5.6.30 --with-pdo-pgsql --with-zlib-dir --with-freetype-dir --enable-mbstring --with-libxml-dir=/usr --enable-soap --enable-calendar --with-curl --with-mcrypt --with-zlib --with-gd --with-pgsql --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --enable-exif --enable-bcmath --with-mhash --enable-zip --with-pcre-regex --with-mysql --with-pdo-mysql --with-mysqli --with-jpeg-dir=/usr --with-png-dir=/usr --enable-gd-native-ttf --with-openssl --with-fpm-user=www-data --with-fpm-group=www-data --with-libdir=/lib/x86_64-linux-gnu --enable-ftp --with-imap --with-imap-ssl --with-gettext --with-xmlrpc --with-xsl --with-kerberos --enable-fpm
Die obige Zeichenfolge ist nur ein langer Befehl, fügen Sie keine Zeilenumbrüche hinzu. Der letzte Schalter (--enable-fpm) stellt sicher, dass diese PHP-Version mit PHP-FPM funktioniert.
make
make install
Kopieren Sie php.ini und php-fpm.conf an die richtigen Stellen:
cp /usr/local/src/php5-build/php-5.6.30/php.ini-production /opt/php-5.6.30/lib/php.ini
cp /opt/php-5.6.30/etc/php-fpm.conf.default /opt/php-5.6.30/etc/php-fpm.conf
Erstellen Sie das Pool-Dateiverzeichnis php-fpm.d.
mkdir /opt/php-5.6.30/etc/php-fpm.d
Öffnen Sie /opt/php-5.6.30/etc/php-fpm.conf und passen Sie die folgende Einstellung an (entfernen Sie das; vor der PID-Zeile):
nano /opt/php-5.6.30/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...] user = www-data group = www-data [...] listen = 127.0.0.1:8999 [...] include=/opt/php-5.6.30/etc/php-fpm.d/*.conf
2.1 xDebug-Erweiterung installieren (optional)
Das xDebug-Modul ist eine Debugging-Erweiterung für PHP. Die Installation ist optional.
Installieren Sie xDebug mit diesen Befehlen.
cd /opt/php-5.6.30/etc
pecl -C ./pear.conf update-channels
pecl -C ./pear.conf install xdebug
Bearbeiten Sie dann die php.ini-Datei mit einem Editor:
nano /opt/php-5.6.30/lib/php.ini
und fügen Sie am Ende der Datei die folgende Zeile hinzu:
zend_extension=/opt/php-5.6.30/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so
3 Erstellen Sie die systemd-Unit-Datei
Ubuntu 16.04 verwendet systemd als Init-System. Ich werde eine systemd-Unit-Datei erstellen, um den PHP-FPM-Dienst starten/stoppen und neu starten zu können.
nano /lib/systemd/system/php-5.6.30-fpm.service
mit folgendem Inhalt:
[Unit]
Description=The PHP 5.6 FastCGI Process Manager
After=network.target
[Service]
Type=simple
PIDFile=/opt/php-5.6.30/var/run/php-fpm.pid
ExecStart=/opt/php-5.6.30/sbin/php-fpm --nodaemonize --fpm-config /opt/php-5.6.30/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
Aktivieren Sie den Dienst und laden Sie systemd neu:
systemctl enable php-5.6.30-fpm.service
systemctl daemon-reload
Starten Sie schließlich PHP-FPM.
systemctl start php-5.6.30-fpm.service
Um den Zend OPcache zu aktivieren, öffnen Sie /opt/php-5.6.30/lib/php.ini...
nano /opt/php-5.6.30/lib/php.ini
... und am Ende folgende Zeile hinzufügen:
[...] zend_extension=opcache.so
Testen Sie die PHP-Version:
cd /opt/php-5.6.30/bin
./php --version
Die Ausgabe sollte diesem Screenshot ähneln.
4 Aktivieren Sie PHP 5.6 in ISPConfig
In ISPConfig 3.1 können Sie die neue PHP-Version unter System> Zusätzliche PHP-Versionen konfigurieren. Auf der Registerkarte Name geben Sie einfach einen Namen für die PHP-Version ein (z. B. PHP 5.6.30) - diese PHP-Version wird unter diesem Namen in den Website-Einstellungen in ISPConfig aufgeführt:
Gehen Sie zur Registerkarte FastCGI-Einstellungen und füllen Sie die Felder wie folgt aus:
Path to the PHP FastCGI binary: /opt/php-5.6.30/bin/php-cgi
Path to the php.ini directory: /opt/php-5.6.30/lib
Gehen Sie dann zum Tab „PHP-FPM-Einstellungen“ und füllen Sie die Felder wie folgt aus:
Path to the PHP-FPM init script: php-5.6.30-fpm
Path to the php.ini directory: /opt/php-5.6.30/lib
Path to the PHP-FPM pool directory: /opt/php-5.6.30/etc/php-fpm.d
5 Links
- PHP:http://www.php.net/
- ISPConfig:http://www.ispconfig.org/
- Ubuntu:http://www.ubuntu.com/