Jul
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

About the Author: Francois BAYART

Openmind, sysadmin, linux, debian, freedom, high tech

Leave a comment

You must be logged in to post a comment.

Tags

UA-756064-6