Mit CentOS können Sie eine Kombination aus fastcgi für eine PHP-Version und php-fpm für die andere Version verwenden, wie hier beschrieben:
https://web.archive.org/web/20130707085630/http://linuxplayer.org/2011/05/intall-multiple-version-of-php-on-one-server
Basierend auf CentOS 5.6, nur für Apache
1. Aktivieren Sie rpmforge und epel yum repository
wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
wget http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
sudo rpm -ivh rpmforge-release-0.5.2-2.el5.rf.x86_64.rpm
sudo rpm -ivh epel-release-5-4.noarch.rpm
2. Installieren Sie php-5.1
Die CentOS / RHEL 5.x-Serie hat PHP-5.1 im Lieferumfang. Installieren Sie es einfach mit yum, z.
sudo yum install php php-mysql php-mbstring php-mcrypt
3. Kompilieren und installieren Sie PHP 5.2 und 5.3 aus dem Quellcode
Für PHP 5.2 und 5.3 finden wir viele RPM-Pakete im Internet. Sie alle stehen jedoch in Konflikt mit dem mit CentOS gelieferten PHP. Wir sollten sie daher besser aus Soure erstellen und installieren. Dies ist nicht schwierig. Es geht darum, PHP an einem anderen Ort zu installieren.
Bei der Installation von PHP als Apache-Modul können wir jedoch nur eine Version von PHP gleichzeitig verwenden. Wenn wir zum Beispiel zur gleichen Zeit eine andere Version von PHP auf demselben Server ausführen müssen, benötigen verschiedene virtuelle Hosts möglicherweise eine andere Version von PHP. Glücklicherweise kann das coole FastCGI und PHP-FPM helfen.
Erstellen und installieren Sie PHP-5.2 mit aktiviertem FastCGI
1) Installieren Sie die erforderlichen Entwicklungspakete
yum install gcc libxml2-devel bzip2-devel zlib-devel \
curl-devel libmcrypt-devel libjpeg-devel \
libpng-devel gd-devel mysql-devel
2) Kompilieren und installieren
wget http://cn.php.net/get/php-5.2.17.tar.bz2/from/this/mirror
tar -xjf php-5.2.17.tar.bz2
cd php-5.2.17
./configure --prefix=/usr/local/php52 \
--with-config-file-path=/etc/php52 \
--with-config-file-scan-dir=/etc/php52/php.d \
--with-libdir=lib64 \
--with-mysql \
--with-mysqli \
--enable-fastcgi \
--enable-force-cgi-redirect \
--enable-mbstring \
--disable-debug \
--disable-rpath \
--with-bz2 \
--with-curl \
--with-gettext \
--with-iconv \
--with-openssl \
--with-gd \
--with-mcrypt \
--with-pcre-regex \
--with-zlib
make -j4 > /dev/null
sudo make install
sudo mkdir /etc/php52
sudo cp php.ini-recommended /etc/php52/php.ini
3) Erstellen Sie ein Fastcgi-Wrapper-Skript
Erstellen Sie die Datei /usr/local/php52/bin/fcgiwrapper.sh
#!/bin/bash
PHP_FCGI_MAX_REQUESTS=10000
export PHP_FCGI_MAX_REQUESTS
exec /usr/local/php52/bin/php-cgi
chmod a+x /usr/local/php52/bin/fcgiwrapper.sh
Build and install php-5.3 with fpm enabled
wget http://cn.php.net/get/php-5.3.6.tar.bz2/from/this/mirror
tar -xjf php-5.3.6.tar.bz2
cd php-5.3.6
./configure --prefix=/usr/local/php53 \
--with-config-file-path=/etc/php53 \
--with-config-file-scan-dir=/etc/php53/php.d \
--enable-fpm \
--with-fpm-user=apache \
--with-fpm-group=apache \
--with-libdir=lib64 \
--with-mysql \
--with-mysqli \
--enable-mbstring \
--disable-debug \
--disable-rpath \
--with-bz2 \
--with-curl \
--with-gettext \
--with-iconv \
--with-openssl \
--with-gd \
--with-mcrypt \
--with-pcre-regex \
--with-zlib
make -j4 && sudo make install
sudo mkdir /etc/php53
sudo cp php.ini-production /etc/php53/php.ini
sed -i -e 's#php_fpm_CONF=\${prefix}/etc/php-fpm.conf#php_fpm_CONF=/etc/php53/php-fpm.conf#' \
sapi/fpm/init.d.php-fpm
sudo cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
sudo chmod a+x /etc/init.d/php-fpm
sudo /sbin/chkconfig --add php-fpm
sudo /sbin/chkconfig php-fpm on
sudo cp sapi/fpm/php-fpm.conf /etc/php53/
PHP-fpm bestätigen
Bearbeiten Sie /etc/php53/php-fpm.conf und ändern Sie einige Einstellungen. Dieser Schritt dient hauptsächlich dazu, einige Einstellungen zu kommentieren. Sie können den Wert anpassen, wenn Sie möchten.
pid = run/php-fpm.pid
listen = 127.0.0.1:9000
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
Starten Sie dann fpm
sudo /etc/init.d/php-fpm start
Installieren und einrichten Sie mod_fastcgi, mod_fcgid
sudo yum install libtool httpd-devel apr-devel
wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz
tar -xzf mod_fastcgi-current.tar.gz
cd mod_fastcgi-2.4.6
cp Makefile.AP2 Makefile
sudo make top_dir=/usr/lib64/httpd/ install
sudo sh -c "echo 'LoadModule fastcgi_module modules/mod_fastcgi.so' > /etc/httpd/conf.d/mod_fastcgi.conf"
yum install mod_fcgid
Richten Sie virtuelle Hosts ein und testen Sie sie
1) Fügen Sie die folgende Zeile zu / etc / hosts hinzu
127.0.0.1 web1.example.com web2.example.com web3.example.com
2) Erstellen Sie ein Webdokument-Stammverzeichnis und legen Sie eine index.php darunter ab, um anzuzeigen, dass phpinfo zum Benutzer root wechselt
mkdir /var/www/fcgi-bin
for i in {1..3}; do
web_root=/var/www/web$i
mkdir $web_root
echo "<?php phpinfo(); ?>" > $web_root/index.php
done
Hinweis: Das leere Verzeichnis / var / www / fcgi-bin ist erforderlich. ENTFERNEN SIE ES NICHT SPÄTER
3) Erstellen Sie eine Apache-Konfigurationsdatei (an httpd.conf anhängen)
NameVirtualHost *:80
# module settings
# mod_fcgid
<IfModule mod_fcgid.c>
idletimeout 3600
processlifetime 7200
maxprocesscount 17
maxrequestsperprocess 16
ipcconnecttimeout 60
ipccommtimeout 90
</IfModule>
# mod_fastcgi with php-fpm
<IfModule mod_fastcgi.c>
FastCgiExternalServer /var/www/fcgi-bin/php-fpm -host 127.0.0.1:9000
</IfModule>
# virtual hosts...
#################################################################
#1st virtual host, use mod_php, run php-5.1
#################################################################
<VirtualHost *:80>
ServerName web1.example.com
DocumentRoot "/var/www/web1"
<ifmodule mod_php5.c>
<FilesMatch \.php$>
AddHandler php5-script .php
</FilesMatch>
</IfModule>
<Directory "/var/www/web1">
DirectoryIndex index.php index.html index.htm
Options -Indexes FollowSymLinks
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
#################################################################
#2nd virtual host, use mod_fcgid, run php-5.2
#################################################################
<VirtualHost *:80>
ServerName web2.example.com
DocumentRoot "/var/www/web2"
<IfModule mod_fcgid.c>
AddHandler fcgid-script .php
FCGIWrapper /usr/local/php52/bin/fcgiwrapper.sh
</IfModule>
<Directory "/var/www/web2">
DirectoryIndex index.php index.html index.htm
Options -Indexes FollowSymLinks +ExecCGI
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
#################################################################
#3rd virtual host, use mod_fastcgi + php-fpm, run php-5.3
#################################################################
<VirtualHost *:80>
ServerName web3.example.com
DocumentRoot "/var/www/web3"
<IfModule mod_fastcgi.c>
ScriptAlias /fcgi-bin/ /var/www/fcgi-bin/
AddHandler php5-fastcgi .php
Action php5-fastcgi /fcgi-bin/php-fpm
</IfModule>
<Directory "/var/www/web3">
DirectoryIndex index.php index.html index.htm
Options -Indexes FollowSymLinks +ExecCGI
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
4) Starten Sie Apache neu. Besuchen Sie die 3 Websites, um phpinfo anzuzeigen und das Ergebnis zu validieren. dh:
http://web1.example.com
http://web2.example.com
http://web3.example.com
Wenn alles in Ordnung ist, können Sie einen der 3 virtuellen Hosts als Vorlage verwenden, um einen neuen virtuellen Host mit der gewünschten PHP-Version zu erstellen.