CentOS 6.4 – obsługa kilku wersji PHP jednocześnie dzięki PHP-FPM (5.3.x, 5.4.x oraz 5.5)

CentOS 6.4 – obsługa kilku wersji PHP jednocześnie dzięki PHP-FPM (5.3.x, 5.4.x oraz 5.5)Obsługa kilku różnych wersji PHP zawsze była pewnym problemem. Domyślnym rozwiązaniem jest użycie mod_php (libphp5.so). Problem w tym, że ograniczeni jesteśmy tylko do jednej wersji na serwer www (np. apache). Na szczęście wszystko da się zrobić i popularnym rozwiązaniem była instalacja kilku instancji serwera www, każda z nich nasłuchiwała na innym porcie i do każdej z nich mogliśmy przypisać inną wersję PHP. Do tego dochodziło „trochę magii” z opcją ProxyPass etc, ale najważniejsze było to że działało (zobacz wpis Suse 9.3 z php 5.0.x i 5.2.x). No ale nie o tym ten wpis.
Zaczynając od wersji 5.3.3 w PHP dostępny jest dodatek PHP-FPM (FastCGI Process Manager), który jest alternatywną implementacją FastCGI zawartą już bezpośrednio w jądrze PHP. Potrafi on samemu zarządzać procesami FastCGI, dostarcza nam wszelkich statystyk (podobnie do mod_status w Apache), każdy z procesów możemy uruchomić z innym uid/gid/chroot lub plikiem php.ini etc etc. W skrócie rozwiązanie zalecane dla większych i bardziej wymagających stron. A ponieważ procesy PHP uruchamiane są dynamicznie poprzez FastCGI możemy właśnie użyć różnych wersji w per virtual host. I nie potrzebujemy do tego kolejnych instancji serwera www.

Przygotowanie systemu

Tyle słowem wstępu, przejdźmy wreszcie do konkretów. Jako bazę użyjemy systemu CentOS w wersji 6.4 (64 bity), świeżo zainstalowany z pliku CentOS-6.4-x86_64-minimal.iso. Selinux jest wyłączony:

[root@centos ~]# cat /etc/selinux/config 
SELINUX=disabled
SELINUXTYPE=targeted

[root@centos ~]# sestatus 
SELinux status:                 disabled

Pakiet php-fpm jest dostępny w domyślnych repozytoriach systemu (wersja 5.3.3). Wersje 5.4 i 5.5 skompilujemy ręcznie. Na starcie musimy zainstalować pliki nagłówkowe, kompilator, aby nie mieć problemów później podczas kompilacji. Doinstalujemy też MySQL:

yum install mysql mysql-devel mysql-server mysql-libs

Narzędzia developerskie:

yum groupinstall 'Development Tools'

oraz pakiety -devel

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

Nie zapominamy oczywiście o apache:

yum install httpd

Na koniec musimy jeszcze zainstalować mod_fastcgi. Pakiet nie jest dostępny w oficjalnym repozytorium, ale można go znaleźć np. w rpmforge:

rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
rpm -ihv rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

yum install mod_fastcgi

PHP-FPM 5.3

Instalacja PHP-FPM z repozytorium

Dodajemy pakiet php-fpm oraz kilka innych. Yum sam rozwiąże wszelkie zależności:

yum install php-fpm php-mysql php-gd php-pear php-mbstring php-cli php-xml

Konfiguracja Apache

Pierwszą wersje php mamy już zainstalowaną, przygotujemy teraz całą konfigurację. Nasz serwer ma adres IP 192.168.1.248. Utworzymy 3 różne virtualhost’y:

  • php53.tech-itcore.pl (DocumentRoot w /var/www/php53/root/)
  • php54.tech-itcore.pl (DocumentRoot w /var/www/php54/root/)
  • php55.tech-itcore.pl (DocumentRoot w /var/www/php55/root/)

Dodajemy odpowiednie wpisy do pliku /etc/hosts:

[root@centos ~]# cat /etc/hosts
192.168.1.248   php53.tech-itcore.pl
192.168.1.248   php54.tech-itcore.pl
192.168.1.248   php55.tech-itcore.pl

Pliki konfiguracyjne vhost’ów będziemy dodawać do katalogu /etc/httpd/conf/vhost.d/

[root@centos ~]# mkdir  /etc/httpd/conf/vhost.d/

Na końcu pliku /etc/httpd/conf/httpd.conf dodajemy:

NameVirtualHost 192.168.1.248:80
Include /etc/httpd/conf/vhost.d/

W pliku /etc/httpd/conf.d/fastcgi.conf ustawiamy opcję FastCgiWrapper na Off:

cat /etc/httpd/conf.d/fastcgi.conf
FastCgiWrapper Off

Konfigurację php-fpm znajdziemy w:

  • /etc/php-fpm.conf
  • /etc/php-fpm.d/

Zostawiamy ją bez zmian, proces domyślnie nasłuchuje na 127.0.0.1:9000, logi znajdziemy w /var/log/php-fpm.
Na koniec przygotujemy konfigurację dla php53.tech-itcore.pl, zrestartujemy proces httpd oraz php-fpm:

cat /etc/httpd/conf/vhost.d/php53.tech-itcore.pl.conf 
<VirtualHost 192.168.1.248:80>
    ServerName  php53.tech-itcore.pl

    DocumentRoot /var/www/php53.tech-itcore.pl/root
    ErrorLog /var/log/httpd/php53.tech-itcore.pl-error_log
    CustomLog /var/log/httpd/php53.tech-itcore.pl-access_log combined

    DirectoryIndex      index.html index.php
    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /var/www/php53.tech-itcore.pl/cgi-bin/php5-fcgi-php53.tech-itcore.pl
    FastCgiExternalServer /var/www/php53.tech-itcore.pl/cgi-bin/php5-fcgi-php53.tech-itcore.pl -idle-timeout 300 -host 127.0.0.1:9000 -pass-header Authorization

    <Directory "/var/www/php53.tech-itcore.pl/root">
          Options FollowSymLinks
          AllowOverride All
          Order allow,deny
          Allow from all
    </Directory>

    <Directory "/var/www/php53.tech-itcore.pl/cgi-bin">
          Order allow,deny
          Allow from all
    </Directory>

</VirtualHost>

Musimy utworzyć jeszcze odpowiednie katalogi:

mkdir -p /var/www/php53.tech-itcore.pl/root/
mkdir -p /var/www/php53.tech-itcore.pl/cgi-bin/

oraz plik index.php (phpinfo();):

echo -e "<?php\nphpinfo();\n?>" > /var/www/php53.tech-itcore.pl/root/index.php 

Restart procesów:

[root@centos ~]# /etc/init.d/httpd restart
[root@centos ~]# /etc/init.d/php-fpm restart

Apache nasłuchuje na porcie 80 a proces php-fpm na 9000.

Test

Sprawdzamy czy strona numer 1 działa:

[root@centos ~]# links -dump php53.tech-itcore.pl | head
   [1]PHP Logo

   PHP Version 5.3.3

   System             Linux centos 2.6.32-358.2.1.el6.x86_64 #1 SMP Wed Mar
                      13 00:26:49 UTC 2013 x86_64
   Build Date         Feb 22 2013 02:52:56
                      './configure' '--build=x86_64-redhat-linux-gnu'
                      '--host=x86_64-redhat-linux-gnu'
                      '--target=x86_64-redhat-linux-gnu' '--program-prefix='

centos 6.4 + php-fpm-5.3.3

Wygląda dobrze (Server API – FPM/FastCGI). Przechodzimy do PHP 5.4.

PHP-FPM 5.4

Kompilacja

Ściągamy najnowszą wersję z oficjalnej strony php.net (obecnie jest to 5.4.13) i rozpakujemy ją w katalogu /usr/src:

[root@centos ~]# cd /usr/src/
[root@centos src]# wget "http://de3.php.net/get/php-5.4.13.tar.bz2/from/pl1.php.net/mirror" -O php-5.4.13.tar.bz2
[root@centos src]# tar xf php-5.4.13.tar.bz2
[root@centos src]# cd php-5.4.13

Wszystkie możliwe opcję kompilacji można wyświetlić wpisując:

[root@centos php-5.4.13]# ./configure --help

Całość wrzucimy do katalogu /opt/php54 (–prefix=/opt/php54). Musimy też ustawić właściwego użytkownika i grupę. Dla systemu CentOS będzie to apache (opcje: –with-fpm-user=apache oraz –with-fpm-group=apache). Ostatnia linia aktywuje FPM (–with-fpm)

[root@centos php-5.4.13]# ./configure \
--prefix=/opt/php54 \
--with-config-file-scan-dir=/opt/php54/etc/php.d \
--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 \
--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=/usr \
--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-fpm

Następnie:

[root@centos php-5.4.13]# make
[root@centos php-5.4.13]# make install

Konfiguracja

Zaczynamy od skopiowania plików php.ini oraz php-fpm.conf:

[root@centos php-5.4.13]# cp php.ini-production /opt/php54/lib/php.ini
[root@centos php-5.4.13]# cp /opt/php54/etc/php-fpm.conf.default /opt/php54/etc/php-fpm.conf

W drugim z nich wprowadzimy parę zmian:

[root@centos etc]# cat /opt/php54/etc/php-fpm.conf

[global]
; Pid file
; Note: the default prefix is /opt/php54/var
; Default Value: none
pid = run/php-fpm.pid
....
listen = 127.0.0.1:9001
...
include=/opt/php54/etc/pool.d/*.conf

Proces ten będzie nasłuchiwać na porcie 9001 (port 9000 jest użyty przez php-fpm 5.3). Na samym dole dodajemy opcję include=/opt/php54/etc/pool.d/*.conf. Musimy jeszcze utworzyć ten katalog:

[root@centos php-fpm.d]# mkdir  /opt/php54/etc/pool.d

Skrypt startowy (init.d)

Dodamy teraz skrypt startowy, który automatycznie uruchomi proces php-fpm podczas startu systemu:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-5.4.13-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-5.4.13-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO

# Source function library.
. /etc/init.d/functions

php_fpm_BIN=/opt/php54/sbin/php-fpm
php_fpm_CONF=/opt/php54/etc/php-fpm.conf
php_fpm_PID=/opt/php54/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-fpm54 "
                $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-fpm54 "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm54 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-fpm54 "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm54 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-fpm54 "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm54 is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        status)
    		status -p ${php_fpm_PID} ${php_fpm_BIN}
        	RETVAL=$?
	;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload|status}"
                exit 1
        ;;
esac 

Nadajemy mu odpowiednie prawa oraz dodajemy do runlevel 2, 3 i 5:

[root@centos ~]# chmod 755 /etc/init.d/php-fpm54
[root@centos ~]# chkconfig --levels 235 php-fpm54 on

Na koniec uruchamiamy skrypt:

[root@centos ~]# /etc/init.d/php-fpm54 start

Ignorujemy wiadomość: WARNING: Nothing matches the include pattern ‚/opt/php54/etc/pool.d/*.conf’ from /opt/php54/etc/php-fpm.conf at line 513.. W naszym systemie działają teraz dwa daemony php-fpm. Jeden z nich nasłuchuje na porcie 9000 a drugi na 9001:

[root@centos ~]# netstat -anpt | grep php-fpm
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      9929/php-fpm        
tcp        0      0 127.0.0.1:9001              0.0.0.0:*                   LISTEN      9989/php-fpm 

Konfiguracja Apache

Skonfigurujemy teraz wirtualnego hosta dla strony php54.tech-itcore.pl. Najpierw stworzymy niezbędne katalogi w DocumentRoot oraz plik index.php:

mkdir -p /var/www/php54.tech-itcore.pl/root/
mkdir -p /var/www/php54.tech-itcore.pl/cgi-bin/
echo -e "<?php\nphpinfo();\n?>" > /var/www/php54.tech-itcore.pl/root/index.php 

Poniżej plik php54.tech-itcore.pl.conf. Pamiętajmy, żeby zmienić port na 9001:

<VirtualHost 192.168.1.248:80>
    ServerName  php54.tech-itcore.pl

    DocumentRoot /var/www/php54.tech-itcore.pl/root

    ErrorLog /var/log/httpd/php54.tech-itcore.pl-error_log
    CustomLog /var/log/httpd/php54.tech-itcore.pl-access_log combined

    DirectoryIndex      index.html index.php
    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /var/www/php54.tech-itcore.pl/cgi-bin/php5-fcgi-php54.tech-itcore.pl
    FastCgiExternalServer /var/www/php54.tech-itcore.pl/cgi-bin/php5-fcgi-php54.tech-itcore.pl -idle-timeout 300 -host 127.0.0.1:9001 -pass-header Authorization

    <Directory "/var/www/php54.tech-itcore.pl/root">
          Options FollowSymLinks
          AllowOverride All
          Order allow,deny
          Allow from all
    </Directory>

    <Directory "/var/www/php54.tech-itcore.pl/cgi-bin">
          Order allow,deny
          Allow from all
    </Directory>

</VirtualHost>

Pozostaje nam tylko przeładować httpd:

[root@centos ~]# /etc/init.d/httpd reload

Test

Podobnie jak poprzednio testujemy stronę numer 2 korzystając z polecenia links:

[root@centos vhost.d]# links -dump php54.tech-itcore.pl | head
   [1]PHP Logo

   PHP Version 5.4.13

   System                Linux centos 2.6.32-358.2.1.el6.x86_64 #1 SMP Wed
                         Mar 13 00:26:49 UTC 2013 x86_64
   Build Date            Apr 11 2013 11:11:38
                         './configure' '--prefix=/opt/php54'
                         '--with-pdo-pgsql' '--with-zlib-dir'
                         '--with-freetype-dir' '--enable-mbstring'

centos 6.4 + php-fpm-5.4.13

Świetnie PHP Version 5.4.13 oraz Server API – FPM/FastCGI!

PHP-FPM 5.5

Prace nad wersją 5.5 wciąż trwają, dostępna jest tylko w wersja beta. Najnowsza z nich (beta3) wydana została 9 kwietnia 2013 roku.

Kompilacja

Podobnie jak poprzednio ściągamy paczkę z oficjalnej strony, następnie rozpakowujemy ją w katalogu /usr/src

[root@centos ~]# cd /usr/src/
[root@centos src]# wget http://downloads.php.net/dsp/php-5.5.0beta3.tar.xz
[root@centos src]# tar xf php-5.5.0beta3.tar.xz
[root@centos src]# cd php-5.5.0beta3

Wersję tę zainstalujemy w katalogu /opt/php55 (–prefix=/opt/php54). Reszta tak samo jak w wersji 5.4:

./configure \
--prefix=/opt/php55 \
--with-config-file-scan-dir=/opt/php55/etc/php.d \
--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 \
--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=/usr \
--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-fpm
[root@centos php-5.5.0beta3]# make && make install

Po dłuższej (lub krótszej w zależności od sprzętu) PHP 5.5 będzie zainstalowane:

[root@centos php-5.5.0beta3]# ls -1 /opt/php55/
bin
etc
include
lib
php
sbin
var

Konfiguracja

Postępujemy dokładnie tak samo jak przy poprzedniej wersji. Kopiujemy pliki php.ini oraz php-fpm.conf w odpowiednie miejsca oraz wprowadzamy niezbędne zmiany w tym drugim:

[root@centos php-5.5.0beta3]# cp php.ini-production /opt/php55/lib/php.ini
[root@centos php-5.5.0beta3]# cp /opt/php55/etc/php-fpm.conf.default /opt/php55/etc/php-fpm.conf
[root@centos etc]# cat /opt/php55/etc/php-fpm.conf

[global]
; Pid file
; Note: the default prefix is /opt/php54/var
; Default Value: none
pid = run/php-fpm.pid
....
listen = 127.0.0.1:9002
...
include=/opt/php55/etc/pool.d/*.conf

Tym razem proces będzie nasłuchiwać na porcie 9002. Na końcu pliku dodaliśmy opcję include=/opt/php55/etc/pool.d/*.conf, tworzymy też wskazany katalog:

[root@centos php-fpm.d]# mkdir  /opt/php55/etc/pool.d

Skrypt startowy (init.d)

Skrypt startowy jest taki sam jak w przypadku php-fpm54 musimy tylko zmienić niektóre ścieżki:

[root@centos ~]# cat /etc/init.d/php-fpm55

#! /bin/sh
### BEGIN INIT INFO
# Provides:          php-5.5beta3-fpm
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts php-5.5beta3-fpm
# Description:       starts the PHP FastCGI Process Manager daemon
### END INIT INFO

# Source function library.
. /etc/init.d/functions

php_fpm_BIN=/opt/php55/sbin/php-fpm
php_fpm_CONF=/opt/php55/etc/php-fpm.conf
php_fpm_PID=/opt/php55/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-fpm55 "
                $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-fpm55 "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm55 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-fpm55 "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm55 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-fpm55 "
                if [ ! -r $php_fpm_PID ] ; then
                        echo "warning, no pid file found - php-fpm55 is not running ?"
                        exit 1
                fi
                kill -USR2 `cat $php_fpm_PID`
                echo " done"
        ;;
        status)
    		status -p ${php_fpm_PID} ${php_fpm_BIN}
        	RETVAL=$?
	;;
        *)
                echo "Usage: $0 {start|stop|force-quit|restart|reload|status}"
                exit 1
        ;;
esac 

Nadajemy mu odpowiednie prawa oraz dodajemy do runlevel 2, 3 i 5:

[root@centos ~]# chmod 755 /etc/init.d/php-fpm55
[root@centos ~]# chkconfig --levels 235 php-fpm55 on

Uruchamiamy go:

[root@centos ~]# /etc/init.d/php-fpm55 start

Teraz w naszym systemie powinny działać trzy procesy php-fpm. Wersja 5.3 nasłuchuje na porcie 9000, 5.4 na 9001 i 5.5. na porcie 9002:

[root@centos ~]# netstat -anpt | grep php-fpm
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      9929/php-fpm        
tcp        0      0 127.0.0.1:9001              0.0.0.0:*                   LISTEN      9989/php-fpm        
tcp        0      0 127.0.0.1:9002              0.0.0.0:*                   LISTEN      6415/php-fpm

Konfiguracja Apache

Pozstał nam tylko virtualhost. Tworzymy katalogi:

[root@centos ~]# mkdir -p /var/www/php55.tech-itcore.pl/root
[root@centos ~]# mkdir -p /var/www/php55.tech-itcore.pl/cgi-bin

Oraz plik index.php:

echo -e "<?php\nphpinfo();\n?>" > /var/www/php55.tech-itcore.pl/root/index.php 

Oraz plik php55.tech-itcore.pl.conf. Ponownie możemy skopiować wersję z php54, następnie zmienić ścieżki oraz ustawić port na 9002:

<VirtualHost 192.168.1.248:80>
    ServerName  php55.tech-itcore.pl

    DocumentRoot /var/www/php55.tech-itcore.pl/root

    ErrorLog /var/log/httpd/php55.tech-itcore.pl-error_log
    CustomLog /var/log/httpd/php55.tech-itcore.pl-access_log combined

    DirectoryIndex      index.html index.php
    AddHandler php5-fcgi .php
    Action php5-fcgi /php5-fcgi
    Alias /php5-fcgi /var/www/php55.tech-itcore.pl/cgi-bin/php5-fcgi-php55.tech-itcore.pl
    FastCgiExternalServer /var/www/php55.tech-itcore.pl/cgi-bin/php5-fcgi-php55.tech-itcore.pl -idle-timeout 300 -host 127.0.0.1:9002 -pass-header Authorization

    <Directory "/var/www/php55.tech-itcore.pl/root">
          Options FollowSymLinks
          AllowOverride All
          Order allow,deny
          Allow from all
    </Directory>

    <Directory "/var/www/php55.tech-itcore.pl/cgi-bin">
          Order allow,deny
          Allow from all
    </Directory>

</VirtualHost>

Ostatni krok to reload serwera www:

[root@centos ~]# /etc/init.d/httpd reload

Test

Na deser został już tylko test ostatniej strony:

[root@centos ~]# links -dump php55.tech-itcore.pl | head
   [1]PHP logo

   PHP Version 5.5.0beta3

   System                Linux centos 2.6.32-358.2.1.el6.x86_64 #1 SMP Wed
                         Mar 13 00:26:49 UTC 2013 x86_64
   Build Date            Apr 11 2013 15:17:47
                         './configure' '--prefix=/opt/php55'
                         '--with-pdo-pgsql' '--with-zlib-dir'
                         '--with-freetype-dir' '--enable-mbstring'

centos 6.4 + php-fpm-5.5beta3

Tutaj też bez niespodzianek, zgłasza nam się PHP w wersji 5.5.

Zostaw komentarz


Podpowiedź - możesz użyć tych HTML tagów i atrybutów:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Obraz CAPTCHY

*