21
2011
piwam sur Debian Squeeze
Afin de permettre l’utilisation de l’outil piwam qui est utile pour gérer les membres d’une association, j’ai eut besoin de le migrer de notre ancien hébergeur vers le nouveau mais petit bémol piwam ne fonctionne pas avec PHP5.3 qui est la version sous Debian Squeeze.
Je vais donc suivre l’explication du site Dave James Miller pour mettre en place PHP5.2 en plus de PHP5.3 .
Installation
Toute l’explication part du principe que vous maitrisez votre système et que vous êtes “root”; je n’utilise pas les commandes en “sudo” durant ce tutoriel.
Un système à jour
S’assurer que le serveur à jour :
apt-get update
apt-get dist-upgrade
Installation de fastcgi
Pour installer le module fast-cgi tapez la commande suivante :
apt-get install libapache2-mod-fastcgi
[...]
Enabling module fastcgi.
Run '/etc/init.d/apache2 restart' to activate new configuration!
:~#
Si jamais le module ne s’active pas durant l’installation, tapez la commande suivante
a2enmod actions fastcgi
Si vous souhaitez profiter immédiatement de fastcgi alors redémarrez Apache2 sinon attendez la fin de l’explication.
/etc/init.d/apache2 restart
Quelques prérequis
Pour permettre la compilation quelques packages sont nécessaires :
apt-get build-dep php5
apt-get install libfcgi-dev
Ces 2 commandes peuvent faire un peu peur car elles ajoutent beaucoup de paquets, dans mon cas 173 nouveaux paquets sont installés pour un total de 115Mo, mais c’est surtout pour permettre d’avoir un environnement de compilation donc rien d’exotique n’ayez pas peur.
Compilation
Préparation
Créer un répertoire pouvant contenir les différentes versions de PHP5.2 au besoin
mkdir -p /usr/src/php5.2/
cd /usr/srv/php5.2
Récupération des sources de PHP5.2.17 depuis un miroir en Belgique.
wget http://www.php.net/get/php-5.2.17.tar.gz/from/be.php.net/mirror -O php-5.2.17.tar.gz
Décompression des sources
tar -zxf php-5.2.17.tar.gz
cd php-5.2.17
Compilons !
Commençons par un petit “./configure” dans lequel nous indiquons tous les modules que nous souhaitons utiliser dans notre PHP5.2 (si jamais il vous manque des modules par la suite alors refaites un “./configure” qui contient ce que vous désirez; un conseil allez-y module par module et pas tout d’un coup).
Au final PHP5.2 sera installé dans le répertoire /usr/local/php52/
./configure \
--prefix=/usr/local/php52 \
--enable-force-cgi-redirect \
--enable-fastcgi \
--with-regex=php \
--enable-calendar \
--enable-sysvsem \
--enable-sysvshm \
--enable-sysvmsg \
--enable-bcmath \
--with-bz2 \
--enable-ctype \
--with-iconv \
--enable-exif \
--enable-ftp \
--with-gettext \
--enable-mbstring \
--with-pcre-regex \
--enable-shmop \
--enable-sockets \
--enable-wddx \
--with-libxml-dir=/usr \
--with-zlib \
--with-openssl=/usr \
--enable-soap \
--enable-zip \
--with-mhash=yes \
--with-gd \
--with-mysql \
--with-mysqli \
--with-pdo-mysql \
--with-pear \
--with-jpeg-dir=/usr/lib
Si tout s’est passé correctement vous devriez voir ceci :
+——————————————————————–+
| License: |
| This software is subject to the PHP License, available in this |
| distribution in the file LICENSE. By continuing this installation |
| process, you are bound by the terms of this license agreement. |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point. |
+——————————————————————–+Thank you for using PHP.
Maintenant effectuons la compilation à proprement parler :
make
Si tout s’est passé correctement vous devriez voir ceci :
Build complete.
Don’t forget to run ‘make test’.
Déployons la compilation de PHP5.2 dans les répertoires définitif
make install
Installing PHP SAPI module: cgi
Installing PHP CGI binary: /usr/local/php52/bin/
Installing PHP CLI binary: /usr/local/php52/bin/
Installing PHP CLI man page: /usr/local/php52/man/man1/
Installing build environment: /usr/local/php52/lib/php/build/
Installing header files: /usr/local/php52/include/php/
Installing helper programs: /usr/local/php52/bin/
program: phpize
program: php-config
Installing man pages: /usr/local/php52/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/local/php52/lib/php/
[PEAR] Archive_Tar – installed: 1.3.7
[PEAR] Console_Getopt – installed: 1.2.3
[PEAR] Structures_Graph- installed: 1.0.3
[PEAR] XML_Util – installed: 1.2.1
[PEAR] PEAR – installed: 1.9.1
Wrote PEAR system config file at: /usr/local/php52/etc/pear.conf
You may want to add: /usr/local/php52/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/php52/include/php/ext/pdo/
Configuration
Maintenant que PHP5.2 est installé il faut pouvoir l’utiliser avec Apache2, cette partie est moins simple que la précédente car beaucoup d’aspects peuvent être effectués. Tout d’abord il faut différencier PHP en module et en CGI. L’utilisation de PHP en module fait qu’on a une seule version de PHP qui tourne et celle a un seul fichier de configuration (par défaut /etc/php5/apache2/php.ini) pour tous nos sites même si ensuite on peut personnaliser chaque virtualhost. Avec PHP en mode CGI il faut bien comprendre que chaque VirtualHost a son propre PHP qui tourne (il pourrait même avoir un user/group dédié) du coup on peut avoir un fichier php.ini par instance donc VirtualHost.
Sur mon serveur j’essai de mettre à des endroits différents les fichiers sans intérêts (la compilation de PHP) de ceux qui sont personnalisés pour mes besoins (la configuration). Du coup je vais stocker les shell-scripts de mes sites dans /srv/web/fcgi/ et pour commencer je vais créer un répertoire “default” pour le shell-script et la configuration PHP que j’utiliserai par défaut pour mes sites et au besoin je pourrais créer un autre répertoire pour des sites plus spécifiques.
mkdir -p /srv/web/fcgi/default
Créer le shell-script “php52.sh” dans /srv/web/fcgi/default/
#!/bin/sh
export PHP_FCGI_CHILDREN=4
export PHP_FCGI_MAX_REQUESTS=200
export PHPRC="/srv/web/fcgi/default/php.ini"
exec /usr/local/php52/bin/php-cgi
Permettre l’exécution du shell-script
chmod +x /srv/web/fcgi/default/php52.sh
Copions le fichier “php.ini” fourni dans l’archive de php.net
cp /usr/src/php5.2/php-5.2.17/php.ini-dist /srv/web/fcgi/default/php.ini
Touche finale la configuration de Apache2, afin de désactiver le PHP en module (PHP5.3 normalement) et d’utiliser PHP en CGI il faut ajouter les lignes suivantes dans votre VirtualHost :
# supprimer PHP en module
php_admin_flag engine off
ScriptAlias /cgi-bin /srv/web/fcgi/default/
Action application/x-httpd-php /cgi-bin/php52.sh
Puis relancez votre Apache2 et vous aurez un PHP5.2 !
Related Posts
Tags
"jeudis du libre" 02082010 agile bgp blog bruxelles bugfix centos cinema compteur conférence culbutte debian dns dokuwiki ecowatt films hacklife icann installation internet jde jeux JobScheduler kanban lecture linux loligrub lug maison mic microsoft mons opensource php planet présentation puppet ripe scheduler squeeze supervision sysadmin tomcat wordpress
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.

An article by




