So verwenden Sie mehrere PHP-Versionen (PHP-FPM und FastCGI) mit ISPConfig 3 (CentOS 6.3 )
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 eine PHP-FPM- und eine FastCGI-Version auf einem CentOS 6.3-Server erstellt. Diese PHP-Versionen können zusammen mit dem Standard-PHP (installiert über yum) 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:
yum groupinstall 'Development Tools'
yum install libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel
Konfigurieren und bauen Sie PHP 5.3.22 wie folgt (Sie können den Befehl ./configure 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.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 \
-- 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=nginx \
--with-fpm-group=nginx \
--with-libdir=lib64 \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
-- with-gettext \
--enable-fpm
Der letzte Schalter (--enable-fpm) stellt sicher, dass diese PHP-Version mit PHP-FPM funktioniert. Wenn Sie diese PHP-FPM-Version mit Apache verwenden möchten, verwenden Sie bitte --with-fpm-user=apache und --with-fpm-group=apache; Wenn Sie diese PHP-FPM-Version mit nginx verwenden möchten, verwenden Sie bitte --with-fpm-user=nginx und --with-fpm-group=nginx.
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 wird möglicherweise vom Standard-CentOS-PHP-FPM verwendet bereits), und Sie müssen am Ende die Zeile include=/opt/php-5.3.22/etc/pool.d/*.conf hinzufügen. Wenn Sie diese PHP-FPM-Version mit Apache verwenden möchten, verwenden Sie bitte user =apache und group =apache; Wenn Sie diese PHP-FPM-Version mit nginx verwenden möchten, verwenden Sie bitte user =nginx und group =nginx.
vi /opt/php-5.3.22/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...] user = nginx group = nginx [...] 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
chkconfig --levels 235 php-5.3.22-fpm on
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] php-5.3.22]# /etc/init.d/php-5.3.22-fpm start
Start von php-fpm [05. März 2013 17:34:54] 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.conf in Zeile 511 überein.
erledigt
[[email protected] 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:
yum 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:
yum install libmemcached-devel
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 und FastCGI) mit ISPConfig 3 (CentOS 6.3) – 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:
yum groupinstall 'Development Tools'
yum install libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel
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 \
-- 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=apache \
--with-fpm-group=apache \
--with-libdir=lib64 \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
-- with-gettext \
--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:
yum 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:
yum install libmemcached-devel
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 und FastCGI) mit ISPConfig 3 (CentOS 6.3) – 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:
yum groupinstall 'Development Tools'
yum install libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel
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 \
-- 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=nginx \
--with-fpm-group=nginx \
--with-libdir=lib64 \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
-- with-gettext \
--enable-fpm
Der letzte Schalter (--enable-fpm) stellt sicher, dass diese PHP-Version mit PHP-FPM funktioniert. Wenn Sie diese PHP-FPM-Version mit Apache verwenden möchten, verwenden Sie bitte --with-fpm-user=apache und --with-fpm-group=apache; Wenn Sie diese PHP-FPM-Version mit nginx verwenden möchten, verwenden Sie bitte --with-fpm-user=nginx und --with-fpm-group=nginx.
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 wird möglicherweise vom Standard-CentOS-PHP-FPM verwendet bereits), und Sie müssen am Ende die Zeile include=/opt/php-5.4.12/etc/pool.d/*.conf hinzufügen. Wenn Sie diese PHP-FPM-Version mit Apache verwenden möchten, verwenden Sie bitte user =apache und group =apache; Wenn Sie diese PHP-FPM-Version mit nginx verwenden möchten, verwenden Sie bitte user =nginx und group =nginx.
vi /opt/php-5.4.12/etc/php-fpm.conf
[...] pid = run/php-fpm.pid [...] user = nginx group = nginx [...] 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
chkconfig --levels 235 php-5.4.12-fpm on
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] php-5.4.12]# /etc/init.d/php-5.4.12-fpm start
Start von php-fpm [05. März 2013 19:37:55] 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.conf in Zeile 511 überein.
erledigt
[[email protected] 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:
yum 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:
yum install libmemcached-devel
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 und FastCGI) mit ISPConfig 3 (CentOS 6.3) – 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:
yum groupinstall 'Development Tools'
yum install libxml2-devel libXpm-devel gmp-devel libicu-devel t1lib-devel aspell-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libvpx-devel libpng-devel freetype-devel readline-devel libtidy-devel libxslt-devel libmcrypt-devel pcre-devel curl-devel mysql-devel ncurses-devel gettext-devel net-snmp-devel libevent-devel libtool-ltdl-devel libc-client-devel postgresql-devel
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 \
-- 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=apache \
--with-fpm-group=apache \
--with-libdir=lib64 \
--enable-ftp \
--with-imap \
--with-imap-ssl \
--with-kerberos \
-- with-gettext \
--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:
yum 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. Afterwards, open /opt/phpfcgi-5.4.12/lib/php.ini...
vi /opt/phpfcgi-5.4.12/lib/php.ini
... and add the line extension=apc.so at the end of the file (you can also configure some additional APC settings):
[...] 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 |
The memcache extension can be installed as follows:
pecl -C ./pear.conf install memcache
Open /opt/phpfcgi-5.4.12/lib/php.ini...
vi /opt/phpfcgi-5.4.12/lib/php.ini
... and add the line extension=memcache.so at the end of the file:
[...] extension=memcache.so |
The memcached extension can be installed as follows:
yum install libmemcached-devel
pecl -C ./pear.conf install memcached
Open /opt/phpfcgi-5.4.12/lib/php.ini...
vi /opt/phpfcgi-5.4.12/lib/php.ini
... and add the line extension=memcached.so at the end of the file:
[...] extension=memcached.so |
The ionCube Loader can be installed as follows:
cd /tmp
Next download and unpack the correct ionCube Loader package for your architecture (x86_64 or x86).
For 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
For x86:
wget http://downloads2.ioncube.com/loader_downloads/ioncube_loaders_lin_x86.tar.gz
tar xfvz ioncube_loaders_lin_x86.tar.gz
Proceed as follows:
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
Add the line zend_extension =/opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so right at the beginning of the file (before the [PHP] line):
zend_extension = /opt/phpfcgi-5.4.12/lib/php/extensions/no-debug-non-zts-20100525/ioncube.so [PHP] [...] |
In ISPConfig 3.0.5, you can configure the new PHP version under System> Additional PHP Versions. On the Name tab, you just fill in a name for the PHP version (e.g. PHP 5.4.12) - this PHP version will be listed under this name in the website settings in ISPConfig:
Go to the FastCGI Settings tab (the PHP-FPM Settings tab can be left empty) and fill out the fields as follows:
6 Links
- PHP:http://www.php.net/
- ISPConfig:http://www.ispconfig.org/
- CentOS:http://www.centos.org/
About The Author
Falko Timme is the owner of Timme Hosting (ultra-fast nginx web hosting). He is the lead maintainer of HowtoForge (since 2005) and one of the core developers of ISPConfig (since 2000). He has also contributed to the O'Reilly book "Linux System Administration".