PHP4 (mod_php) et PHP5 (fastcgi) avec Apache sous Ubuntu
Par Administrateur le mercredi, janvier 10 2007, 22:33 - Planet - Lien permanent
J'ai finalement choisi Ubuntu comme système sur ma dedibox fraîchement livrée . Du coup, j'ai un système à configurer car j'ai plusieurs projets pour cette machine. Le premier étant d'héberger pwet.fr et de pouvoir à côté tester / développer des applications en PHP5. J'ai donc besoin de faire cohabiter ces deux versions. Sachant que ce site utilise eZ publish , je préfère avoir PHP4 en module (a priori plus performant), PHP5 en FastCGI (plus rapide qu'en CGI) le tout avec Apache 1.3 pour la stabilité. La première chose à faire est évidemment d'installer tout le nécessaire (il faut activer le dépôt Universe ) :
tigrou@dedipwet:~$ sudo apt-get install apache libapache-mod-php4 php4-domxml php4-pear php4-pear-log php5-cgi php5-mysqli php5-xsl php5-gd php5-pear libapache-mod-fastcgi libapache-mod-actions
Une fois tout cela installé, il faut activer les modules nécessaires, le plus simple étant d'utiliser apache-modconf puis de redémarrer apache :
tigrou@dedipwet:~$ sudo apache-modconf apache enable mod_php4 tigrou@dedipwet:~$ sudo apache-modconf apache enable mod_fastcgi tigrou@dedipwet:~$ sudo apache-modconf apache enable mod_actions tigrou@dedipwet:~$ sudo /etc/init.d/apache restart
À partir de là, PHP4 devrait déjà fonctionner sur les fichiers terminant par .php, pour vérifier il suffit de créer un virtual host et d'y mettre un phpinfo . Ainsi tout à la fin de /etc/apache/httpd.conf, il suffit d'y mettre :
NameVirtualHost __IP__:80 <VirtualHost __IP__:80> ServerAdmin __EMAIL__ DocumentRoot /var/www/votresite.fr ServerName votresite.fr ErrorLog /var/log/apache/errors-votresite.fr.log CustomLog /var/log/apache/access-votresite.fr.log common </VirtualHost>
En remplaçant évidemment __IP__, __EMAIL__ et votresite.fr par les valeurs nécessaires
Il suffit alors de créer un fichier info.php et d'y placer un appel à la fonction PHP phpinfo et de l'appeler dans votre navigateur via http://votresite.fr/info.php pour obtenir le fameux PHPInfo.
Reste maintenant à configurer Apache pour interprèter les fichiers .php5 avec la version CGI de php5 via le module FastCGI. Pour cela, il faut modifier le fichier /etc/apache/conf.d/fastcgi.conf comme suit :
<IfModule mod_fastcgi.c> AddHandler fastcgi-script .fcgi FastCgiIpcDir /var/lib/apache/fastcgi FastCgiServer /var/www/votresite.fr/php5-wrapper.fcgi -processes 1 -idle-timeout 180 -socket /tmp/fastcgi.socket AddHandler php5-fastcgi .php5 Action php5-fastcgi /php5-wrapper.fcgi </IfModule>
Il reste alors à créer le fichier /var/www/votresite.fr/php5-wrapper.fcgi qui est en fait un simple script shell faisant appel à la version CGI de PHP5 :
#!/bin/sh PHP_FCGI_CHILDREN=4 export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS=1000 export PHP_FCGI_MAX_REQUESTS exec /usr/bin/php5-cgi
Il reste plus qu'à tester en copiant le fichier info.php en info.php5 et en l'appelant http://votresite.fr/info.php5, qui affichera normalement les informations sur l'installation de PHP5.