GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Panels

Verwendung mehrerer PHP-Versionen (PHP-FPM &FastCGI) mit ISPConfig 3 (Debian Wheezy)

So verwenden Sie mehrere PHP-Versionen (PHP-FPM und FastCGI) mit ISPConfig 3 ( Debian Wheezy)

Seit ISPConfig 3.0.5 ist es möglich, mehrere PHP-Versionen auf einem Server zu verwenden und die optimale PHP-Version für eine Website auszuwählen. Diese Funktion funktioniert mit PHP-FPM (ab PHP 5.3) und FastCGI (alle PHP 5.x-Versionen). Dieses Tutorial zeigt, wie man PHP 5.3 und PHP 5.4 als PHP-FPM- und FastCGI-Version auf einem Debian Wheezy-Server erstellt. Diese PHP-Versionen können zusammen mit dem Standard-PHP (installiert über apt) in ISPConfig verwendet werden.

Ich gebe keine Garantie dafür, dass dies bei Ihnen funktioniert!

1 Vorbemerkung

Ich werde PHP 5.3.22 und PHP 5.4.12 installieren, die neuesten Versionen von PHP 5.3 und 5.4 zum Zeitpunkt des Schreibens dieses Artikels. Ich werde auch zeigen, wie man einige zusätzliche PHP-Erweiterungen wie APC, Memcache, Memcached und Ioncube erstellt.

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 verfügbar ist.

PHP-FPM und FastCGI schließen sich in PHP 5.3 und 5.4 gegenseitig aus, deshalb zeige ich zwei Möglichkeiten, PHP zu bauen, eine für PHP-FPM, eine für FastCGI, aber Sie können PHP zweimal kompilieren, um beide zu bekommen, einmal mit --enable -fpm und einmal mit --enable-cgi (stellen Sie sicher, dass Sie unterschiedliche Basisverzeichnisse verwenden, z. B. /opt/php-5.3.22 für PHP-FPM und /opt/phpfcgi-5.3.22 für FastCGI).

2 Erstellen von PHP 5.3.22 (PHP-FPM)

Laden Sie PHP 5.3.22 herunter und extrahieren Sie es:

mkdir /opt/php-5.3.22
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de. php.net/get/php-5.3.22.tar.bz2/from/this/mirror -O php-5.3.22.tar.bz2
tar jxf php-5.3.22.tar.bz2

cd php-5.3.22/

Installieren Sie die Voraussetzungen zum Erstellen von PHP5:

apt-get install build-essential 
apt-get build-dep php5
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-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:

Suche nach crypt in -lcrypt... yes
configure:error:Cannot find imap library (libc-client.a). Bitte überprüfen Sie Ihre C-Client-Installation.
[email protected]:/usr/local/src/php5-build/php-5.3.22#

)

Konfigurieren und bauen Sie PHP 5.3.22 wie folgt (Sie können den Befehl ./configure Ihren Bedürfnissen 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.3.22 \
--with-pdo-pgsql \
--with-zlib-dir \
- -with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable- Kalender \
--mit-curl \
--mit-mcrypt \
--mit-zlib \
--mit-gd \
--mit- 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 \
--mit-mysql \
--mit-pdo-mysql \
--mit-mysqli \
--mit-jpeg-dir=/usr \
--mit -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 \
--mit-imap-ssl \
--mit-kerber os \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-fpm

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.3.22/php.ini-production /opt/php-5.3.22/lib/php.ini
cp /opt/php-5.3.22/etc/php-fpm.conf.default /opt/php-5.3.22/etc/php-fpm.conf

Öffnen Sie /opt/php-5.3.22/etc/php-fpm.conf und passen Sie die folgenden Einstellungen an - in der Listen-Zeile müssen Sie einen unbenutzten Port verwenden (z. B. 8999; Port 9000 könnte bereits von Debians Standard-PHP-FPM verwendet werden ), und Sie müssen am Ende die Zeile include=/opt/php-5.3.22/etc/pool.d/*.conf hinzufügen:

vi /opt/php-5.3.22/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.3.22/etc/pool.d/*.conf

Erstellen Sie das Pool-Verzeichnis für PHP-FPM:

mkdir /opt/php-5.3.22/etc/pool.d

Erstellen Sie als Nächstes ein Init-Skript für PHP-FPM:

vi /etc/init.d/php-5.3.22-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-5.3.22-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-5.3.22-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-5.3.22/sbin/php-fpm
php_fpm_CONF=/opt/php-5.3.22/etc/php-fpm.conf
php_fpm_PID=/opt/php-5.3.22/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                       echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac

Machen Sie das Init-Skript ausführbar und erstellen Sie die Systemstart-Links:

chmod 755 /etc/init.d/php-5.3.22-fpm
insserv php-5.3.22-fpm

Zum Schluss PHP-FPM starten:

/etc/init.d/php-5.3.22-fpm start

Solange es keine Pools in /opt/php-5.3.22/etc/pool.d gibt, erhalten Sie diese Warnung, die Sie ignorieren können:

[email protected]:/usr/local/src/php5-build/php-5.3.22# /etc/init.d/php-5.3.22-fpm start
Starten von php-fpm [04 -2013 14:58:41] WARNUNG:Nichts stimmt mit dem Include-Muster '/opt/php-5.3.22/etc/pool.d/*.conf' aus /opt/php-5.3.22/etc/php-fpm überein .conf in Zeile 512.
erledigt
[email protected]:/usr/local/src/php5-build/php-5.3.22#

Das ist es - wenn Sie möchten, können Sie jetzt einige zusätzliche Module wie APC, Memcache, Memcached und Ioncube installieren.

Die Module APC, Memcache und Memcached können über PEAR installiert werden, das wir zuerst installieren und initialisieren müssen:

apt-get -y install php-pear
cd /opt/php-5.3.22/etc
pecl -C ./pear.conf update-channels

APC kann nun wie folgt installiert werden:

pecl -C ./pear.conf install apc

Akzeptieren Sie alle Standardwerte. Öffnen Sie danach /opt/php-5.3.22/lib/php.ini...

vi /opt/php-5.3.22/lib/php.ini

... und fügen Sie die Zeile extension=apc.so am Ende der Datei hinzu (Sie können auch einige zusätzliche APC-Einstellungen konfigurieren):

[...]
extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
apc.gc_ttl=600
apc.enable_cli=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5

Die Memcache-Erweiterung kann wie folgt installiert werden:

pecl -C ./pear.conf install memcache   

Öffnen Sie /opt/php-5.3.22/lib/php.ini...

vi /opt/php-5.3.22/lib/php.ini

... und fügen Sie am Ende der Datei die Zeile extension=memcache.so hinzu:

[...]
extension=memcache.so

Die memcached-Erweiterung kann wie folgt installiert werden:

apt-get install libmemcached-dev
pecl -C ./pear.conf install memcached

Öffnen Sie /opt/php-5.3.22/lib/php.ini...

vi /opt/php-5.3.22/lib/php.ini

... und fügen Sie am Ende der Datei die Zeile extension=memcached.so hinzu:

[...]
extension=memcached.so

Der ionCube Loader kann wie folgt installiert werden:

cd /tmp

Laden Sie als Nächstes das richtige ionCube Loader-Paket für Ihre Architektur (x86_64 oder x86) herunter und entpacken Sie es.

Für x86_64:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfvz ioncube_loaders_lin_x86-64.tar.gz

Für x86:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz

Gehen Sie wie folgt vor:

cp ioncube/ioncube_loader_lin_5.3.so /opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
vi /opt/php-5.3.22/ lib/php.ini

Fügen Sie die Zeile zend_extension =/opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so direkt am Anfang der Datei hinzu (vor der Zeile [PHP]):

zend_extension = /opt/php-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
[PHP]
[...]

Anschließend PHP-FPM neu laden:

/etc/init.d/php-5.3.22-fpm reload

In ISPConfig 3.0.5 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.3.22) – unter diesem Namen wird diese PHP-Version in den Website-Einstellungen in ISPConfig aufgeführt:

Gehen Sie zur Registerkarte „PHP-FPM-Einstellungen“ (die Registerkarte „FastCGI-Einstellungen“ kann leer bleiben) und füllen Sie die Felder wie folgt aus:

So verwenden Sie mehrere PHP-Versionen (PHP-FPM &FastCGI) mit ISPConfig 3 (Debian Wheezy) – Seite 2

3 Erstellen von PHP 5.3.22 (FastCGI)

Laden Sie PHP 5.3.22 herunter und extrahieren Sie es:

mkdir /opt/phpfcgi-5.3.22
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de. php.net/get/php-5.3.22.tar.bz2/from/this/mirror -O php-5.3.22.tar.bz2
tar jxf php-5.3.22.tar.bz2

cd php-5.3.22/

Installieren Sie die Voraussetzungen zum Erstellen von PHP5:

apt-get install build-essential 
apt-get build-dep php5
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-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:

Suche nach crypt in -lcrypt... yes
configure:error:Cannot find imap library (libc-client.a). Bitte überprüfen Sie Ihre C-Client-Installation.
[email protected]:/usr/local/src/php5-build/php-5.3.22#

)

Konfigurieren und bauen Sie PHP 5.3.22 wie folgt (Sie können den Befehl ./configure Ihren Bedürfnissen 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/phpfcgi-5.3.22 \
--with-pdo-pgsql \
--with-zlib-dir \
- -with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable- Kalender \
--mit-curl \
--mit-mcrypt \
--mit-zlib \
--mit-gd \
--mit- 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 \
--mit-mysql \
--mit-pdo-mysql \
--mit-mysqli \
--mit-jpeg-dir=/usr \
--mit -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 \
--mit-imap-ssl \
--mit-ke rberos \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-cgi

Der letzte Schalter (--enable-cgi) stellt sicher, dass diese PHP-Version mit FastCGI funktioniert.

make
make install

Kopieren Sie php.ini an die richtige Stelle:

cp /usr/local/src/php5-build/php-5.3.22/php.ini-production /opt/phpfcgi-5.3.22/lib/php.ini

Das ist es - wenn Sie möchten, können Sie jetzt einige zusätzliche Module wie APC, Memcache, Memcached und Ioncube installieren.

Die Module APC, Memcache und Memcached können über PEAR installiert werden, das wir zuerst installieren und initialisieren müssen:

apt-get -y install php-pear
cd /opt/phpfcgi-5.3.22/etc
pecl -C ./pear.conf update-channels

APC kann nun wie folgt installiert werden:

pecl -C ./pear.conf install apc

Akzeptieren Sie alle Standardwerte. Öffnen Sie danach /opt/phpfcgi-5.3.22/lib/php.ini...

vi /opt/phpfcgi-5.3.22/lib/php.ini

... und fügen Sie die Zeile extension=apc.so am Ende der Datei hinzu (Sie können auch einige zusätzliche APC-Einstellungen konfigurieren):

[...]
extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
apc.gc_ttl=600
apc.enable_cli=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5

Die Memcache-Erweiterung kann wie folgt installiert werden:

pecl -C ./pear.conf install memcache   

Öffnen Sie /opt/phpfcgi-5.3.22/lib/php.ini...

vi /opt/phpfcgi-5.3.22/lib/php.ini

... und fügen Sie am Ende der Datei die Zeile extension=memcache.so hinzu:

[...]
extension=memcache.so

Die memcached-Erweiterung kann wie folgt installiert werden:

apt-get install libmemcached-dev
pecl -C ./pear.conf install memcached

Öffnen Sie /opt/phpfcgi-5.3.22/lib/php.ini...

vi /opt/phpfcgi-5.3.22/lib/php.ini

... und fügen Sie am Ende der Datei die Zeile extension=memcached.so hinzu:

[...]
extension=memcached.so

Der ionCube Loader kann wie folgt installiert werden:

cd /tmp

Laden Sie als Nächstes das richtige ionCube Loader-Paket für Ihre Architektur (x86_64 oder x86) herunter und entpacken Sie es.

Für x86_64:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfvz ioncube_loaders_lin_x86-64.tar.gz

Für x86:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz

Gehen Sie wie folgt vor:

cp ioncube/ioncube_loader_lin_5.3.so /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
vi /opt/phpfcgi-5.3.22/ lib/php.ini

Fügen Sie die Zeile zend_extension =/opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so direkt am Anfang der Datei hinzu (vor der Zeile [PHP]):

zend_extension = /opt/phpfcgi-5.3.22/lib/php/extensions/no-debug-non-zts-20090626/ioncube.so
[PHP]
[...]

In ISPConfig 3.0.5 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.3.22) – unter diesem Namen wird diese PHP-Version in den Website-Einstellungen in ISPConfig aufgeführt:

Gehen Sie zur Registerkarte FastCGI-Einstellungen (die Registerkarte PHP-FPM-Einstellungen kann leer gelassen werden) und füllen Sie die Felder wie folgt aus:

So verwenden Sie mehrere PHP-Versionen (PHP-FPM &FastCGI) mit ISPConfig 3 (Debian Wheezy) – Seite 3

4 Erstellen von PHP 5.4.12 (PHP-FPM)

Laden Sie PHP 5.4.12 herunter und extrahieren Sie es:

mkdir /opt/php-5.4.12
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de. php.net/get/php-5.4.12.tar.bz2/from/this/mirror -O php-5.4.12.tar.bz2
tar jxf php-5.4.12.tar.bz2

cd php-5.4.12/

Installieren Sie die Voraussetzungen zum Erstellen von PHP5:

apt-get install build-essential 
apt-get build-dep php5
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-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:

Suche nach crypt in -lcrypt... yes
configure:error:Cannot find imap library (libc-client.a). Bitte überprüfen Sie Ihre C-Client-Installation.
[email protected]:/usr/local/src/php5-build/php-5.4.12#

)

Konfigurieren und bauen Sie PHP 5.4.12 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.4.12 \
--with-pdo-pgsql \
--with-zlib-dir \
- -with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable- Kalender \
--mit-curl \
--mit-mcrypt \
--mit-zlib \
--mit-gd \
--mit- 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 \
--mit-mysql \
--mit-pdo-mysql \
--mit-mysqli \
--mit-jpeg-dir=/usr \
--mit -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 \
--mit-imap-ssl \
--mit-kerber os \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-fpm

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.4.12/php.ini-production /opt/php-5.4.12/lib/php.ini
cp /opt/php-5.4.12/etc/php-fpm.conf.default /opt/php-5.4.12/etc/php-fpm.conf

Öffnen Sie /opt/php-5.4.12/etc/php-fpm.conf und passen Sie die folgenden Einstellungen an - in der Listen-Zeile müssen Sie einen unbenutzten Port verwenden (z. B. 8998; Port 9000 könnte bereits von Debians Standard-PHP-FPM verwendet werden ), und Sie müssen am Ende die Zeile include=/opt/php-5.4.12/etc/pool.d/*.conf hinzufügen:

vi /opt/php-5.4.12/etc/php-fpm.conf
[...]
pid = run/php-fpm.pid
[...]
user = www-data
group = www-data
[...]
listen = 127.0.0.1:8998
[...]
include=/opt/php-5.4.12/etc/pool.d/*.conf

Erstellen Sie das Pool-Verzeichnis für PHP-FPM:

mkdir /opt/php-5.4.12/etc/pool.d

Erstellen Sie als Nächstes ein Init-Skript für PHP-FPM:

vi /etc/init.d/php-5.4.12-fpm
#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-5.4.12-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-5.4.12-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO
php_fpm_BIN=/opt/php-5.4.12/sbin/php-fpm
php_fpm_CONF=/opt/php-5.4.12/etc/php-fpm.conf
php_fpm_PID=/opt/php-5.4.12/var/run/php-fpm.pid
php_opts="--fpm-config $php_fpm_CONF"
wait_for_pid () {
        try=0
        while test $try -lt 35 ; do
                case "$1" in
                        'created')
                        if [ -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                        'removed')
                        if [ ! -f "$2" ] ; then
                                try=''
                                break
                        fi
                        ;;
                esac
                echo -n .
                try=`expr $try + 1`
                sleep 1
        done
}
case "$1" in
        start)
                echo -n "Starting php-fpm "
                $php_fpm_BIN $php_opts
                if [ "$?" != 0 ] ; then
                        echo " failed"
                        exit 1
                fi
                wait_for_pid created $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        stop)
                echo -n "Gracefully shutting down php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -QUIT `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed. Use force-exit"
                        exit 1
                else
                        echo " done"
                       echo " done"
                fi
        ;;
        force-quit)
                echo -n "Terminating php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -TERM `cat $php_fpm_PID`
                wait_for_pid removed $php_fpm_PID
                if [ -n "$try" ] ; then
                        echo " failed"
                        exit 1
                else
                        echo " done"
                fi
        ;;
        restart)
                $0 stop
                $0 start
        ;;
        reload)
                echo -n "Reload service php-fpm "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload}"
                exit 1
        ;;
esac

Machen Sie das Init-Skript ausführbar und erstellen Sie die Systemstart-Links:

chmod 755 /etc/init.d/php-5.4.12-fpm
insserv php-5.4.12-fpm

Zum Schluss PHP-FPM starten:

/etc/init.d/php-5.4.12-fpm start

Solange es keine Pools in /opt/php-5.4.12/etc/pool.d gibt, erhalten Sie diese Warnung, die Sie ignorieren können:

[email protected]:/usr/local/src/php5-build/php-5.4.12# /etc/init.d/php-5.4.12-fpm start
Starten von php-fpm [04 -2013 16:03:35] WARNUNG:Nichts stimmt mit dem Include-Muster '/opt/php-5.4.12/etc/pool.d/*.conf' aus /opt/php-5.4.12/etc/php-fpm überein .conf in Zeile 512.
erledigt
[email protected]:/usr/local/src/php5-build/php-5.4.12#

Das ist es - wenn Sie möchten, können Sie jetzt einige zusätzliche Module wie APC, Memcache, Memcached und Ioncube installieren.

Die Module APC, Memcache und Memcached können über PEAR installiert werden, das wir zuerst installieren und initialisieren müssen:

apt-get -y install php-pear
cd /opt/php-5.4.12/etc
pecl -C ./pear.conf update-channels

APC kann nun wie folgt installiert werden:

pecl -C ./pear.conf install apc

Akzeptieren Sie alle Standardwerte. Öffnen Sie danach /opt/php-5.4.12/lib/php.ini...

vi /opt/php-5.4.12/lib/php.ini

... und fügen Sie die Zeile extension=apc.so am Ende der Datei hinzu (Sie können auch einige zusätzliche APC-Einstellungen konfigurieren):

[...]
extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
apc.gc_ttl=600
apc.enable_cli=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5

Die Memcache-Erweiterung kann wie folgt installiert werden:

pecl -C ./pear.conf install memcache   

Öffnen Sie /opt/php-5.4.12/lib/php.ini...

vi /opt/php-5.4.12/lib/php.ini

... und fügen Sie am Ende der Datei die Zeile extension=memcache.so hinzu:

[...]
extension=memcache.so

Die memcached-Erweiterung kann wie folgt installiert werden:

apt-get install libmemcached-dev
pecl -C ./pear.conf install memcached

Öffnen Sie /opt/php-5.4.12/lib/php.ini...

vi /opt/php-5.4.12/lib/php.ini

... und fügen Sie am Ende der Datei die Zeile extension=memcached.so hinzu:

[...]
extension=memcached.so

Der ionCube Loader kann wie folgt installiert werden:

cd /tmp

Laden Sie als Nächstes das richtige ionCube Loader-Paket für Ihre Architektur (x86_64 oder x86) herunter und entpacken Sie es.

Für x86_64:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfvz ioncube_loaders_lin_x86-64.tar.gz

Für x86:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz

Gehen Sie wie folgt vor:

cp ioncube/ioncube_loader_lin_5.4.so /opt/php-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
vi /opt/php-5.4.12/ lib/php.ini

Fügen Sie die Zeile zend_extension =/opt/php-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so direkt am Anfang der Datei hinzu (vor der Zeile [PHP]):

zend_extension = /opt/php-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
[PHP]
[...]

Anschließend PHP-FPM neu laden:

/etc/init.d/php-5.4.12-fpm reload

In ISPConfig 3.0.5 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.4.12) – unter diesem Namen wird diese PHP-Version in den Website-Einstellungen in ISPConfig aufgeführt:

Gehen Sie zur Registerkarte „PHP-FPM-Einstellungen“ (die Registerkarte „FastCGI-Einstellungen“ kann leer bleiben) und füllen Sie die Felder wie folgt aus:

So verwenden Sie mehrere PHP-Versionen (PHP-FPM &FastCGI) mit ISPConfig 3 (Debian Wheezy) – Seite 4

5 Erstellen von PHP 5.4.12 (FastCGI)

Laden Sie PHP 5.4.12 herunter und extrahieren Sie es:

mkdir /opt/phpfcgi-5.4.12
mkdir /usr/local/src/php5-build
cd /usr/local/src/php5-build
wget http://de. php.net/get/php-5.4.12.tar.bz2/from/this/mirror -O php-5.4.12.tar.bz2
tar jxf php-5.4.12.tar.bz2

cd php-5.4.12/

Installieren Sie die Voraussetzungen zum Erstellen von PHP5:

apt-get install build-essential 
apt-get build-dep php5
apt-get install libfcgi-dev libfcgi0ldbl libjpeg62-dbg libmcrypt-dev libssl-dev libc-client2007e libc-client2007e-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:

Suche nach crypt in -lcrypt... yes
configure:error:Cannot find imap library (libc-client.a). Bitte überprüfen Sie Ihre C-Client-Installation.
[email protected]:/usr/local/src/php5-build/php-5.4.12#

)

Konfigurieren und bauen Sie PHP 5.4.12 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/phpfcgi-5.4.12 \
--with-pdo-pgsql \
--with-zlib-dir \
- -with-freetype-dir \
--enable-mbstring \
--with-libxml-dir=/usr \
--enable-soap \
--enable- Kalender \
--mit-curl \
--mit-mcrypt \
--mit-zlib \
--mit-gd \
--mit- 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 \
--mit-mysql \
--mit-pdo-mysql \
--mit-mysqli \
--mit-jpeg-dir=/usr \
--mit -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 \
--mit-imap-ssl \
--mit-ke rberos \
--with-gettext \
--with-xmlrpc \
--with-xsl \
--enable-cgi

Der letzte Schalter (--enable-cgi) stellt sicher, dass diese PHP-Version mit FastCGI funktioniert.

make
make install

Kopieren Sie php.ini an die richtige Stelle:

cp /usr/local/src/php5-build/php-5.4.12/php.ini-production /opt/phpfcgi-5.4.12/lib/php.ini

Das ist es - wenn Sie möchten, können Sie jetzt einige zusätzliche Module wie APC, Memcache, Memcached und Ioncube installieren.

Die Module APC, Memcache und Memcached können über PEAR installiert werden, das wir zuerst installieren und initialisieren müssen:

apt-get -y install php-pear
cd /opt/phpfcgi-5.4.12/etc
pecl -C ./pear.conf update-channels

APC kann nun wie folgt installiert werden:

pecl -C ./pear.conf install apc

Akzeptieren Sie alle Standardwerte. Öffnen Sie danach /opt/phpfcgi-5.4.12/lib/php.ini...

vi /opt/phpfcgi-5.4.12/lib/php.ini

... und fügen Sie die Zeile extension=apc.so am Ende der Datei hinzu (Sie können auch einige zusätzliche APC-Einstellungen konfigurieren):

[...]
extension=apc.so
apc.enabled=1
apc.shm_size=128M
apc.ttl=0
apc.user_ttl=600
apc.gc_ttl=600
apc.enable_cli=1
apc.mmap_file_mask=/tmp/apc.XXXXXX
;apc.mmap_file_mask=/dev/zero
;apc.shm_segments = 5

Die Memcache-Erweiterung kann wie folgt installiert werden:

pecl -C ./pear.conf install memcache   

Öffnen Sie /opt/phpfcgi-5.4.12/lib/php.ini...

vi /opt/phpfcgi-5.4.12/lib/php.ini

... und fügen Sie am Ende der Datei die Zeile extension=memcache.so hinzu:

[...]
extension=memcache.so

Die memcached-Erweiterung kann wie folgt installiert werden:

apt-get install libmemcached-dev
pecl -C ./pear.conf install memcached

Öffnen Sie /opt/phpfcgi-5.4.12/lib/php.ini...

vi /opt/phpfcgi-5.4.12/lib/php.ini

... und fügen Sie am Ende der Datei die Zeile extension=memcached.so hinzu:

[...]
extension=memcached.so

Der ionCube Loader kann wie folgt installiert werden:

cd /tmp

Laden Sie als Nächstes das richtige ionCube Loader-Paket für Ihre Architektur (x86_64 oder x86) herunter und entpacken Sie es.

Für x86_64:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar xfvz ioncube_loaders_lin_x86-64.tar.gz

Für x86:

wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz

Gehen Sie wie folgt vor:

cp ioncube/ioncube_loader_lin_5.4.so /opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
vi /opt/phpfcgi-5.4.12/ lib/php.ini

Fügen Sie die Zeile zend_extension =/opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so direkt am Anfang der Datei hinzu (vor der Zeile [PHP]):

zend_extension = /opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so
[PHP]
[...]

In ISPConfig 3.0.5 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.4.12) – unter diesem Namen wird diese PHP-Version in den Website-Einstellungen in ISPConfig aufgeführt:

Gehen Sie zur Registerkarte FastCGI-Einstellungen (die Registerkarte PHP-FPM-Einstellungen kann leer gelassen werden) und füllen Sie die Felder wie folgt aus:

  • PHP:http://www.php.net/
  • ISPConfig:http://www.ispconfig.org/
  • Debian:http://www.debian.org/

Über den Autor

Falko Timme ist der Inhaber von Timme Hosting (ultraschnelles Nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Kernentwickler von ISPConfig (seit 2000). Er hat auch zum O'Reilly-Buch "Linux System Administration" beigetragen.


Panels
  1. So bauen Sie PHP 5.6 (PHP-FPM &FastCGI) mit Zend OPcache und APCu für ISPConfig 3 auf Debian 7 (Wheezy)

  2. So installieren Sie PHP 7 (PHP-FPM &FastCGI) für ISPConfig 3 auf Debian 8 (Jessie)

  3. So installieren Sie PHP 7 als PHP-FPM &FastCGI für ISPConfig 3 auf Debian 8 (Jessie)

  4. Erzwungene Werbung auf ISPConfig mit Debian Etch

  5. Wie führe ich mehrere PHP-Versionen mit Nginx unter Ubuntu aus?

Verwendung mehrerer PHP-Versionen (PHP-FPM &FastCGI) mit ISPConfig 3 (Ubuntu 13.04)

Verwendung mehrerer PHP-Versionen (PHP-FPM &FastCGI) mit ISPConfig 3 (Ubuntu 12.10)

So verwenden Sie mehrere PHP-Versionen (PHP-FPM und FastCGI) mit ISPConfig 3 (CentOS 6.3)

Verwendung mehrerer PHP-Versionen (PHP-FPM &FastCGI) mit ISPConfig 3 (Ubuntu 12.04 LTS)

So erstellen Sie PHP 5.5 (PHP-FPM &FastCGI) mit ionCube Loader, Zend OPcache und APCu für ISPConfig 3 (Debian Wheezy)

Verwendung von PHP 4.4.9 (FastCGI) mit Apache &ISPConfig 3 (Debian Wheezy)