Alterner entre plusieurs versions d'Apache et de PHP


précédentsommairesuivant

II. Mise en place du serveur

II-A. Préambule

Dans le cas de PHP comme dans celui d'Apache httpd, nous utiliserons un répertoire externe pour les fichiers de configuration. Nous n'utiliserons pas les emplacements par défaut de ces fichiers : cela facilitera l'installation de mises à jour.

II-B. PHP

Logo de PHP

Nous allons installer toutes nos versions de PHP sous le répertoire C:\Program Files\PHP.

La procédure est similaire pour toutes les versions, d'autant que nous avons pris la version ZIP (et non EXE) : il s'agit tout simplement de décompresser l'archive dans son répertoire de destination.

Exemple d'arborescence possible :
Sélectionnez
C:\Program Files\PHP
   \php-5.2.6-Win32-VC6-x86
   \php-5.2.7-Win32-VC6-x86
   \php-5.2.8-Win32-VC6-x86
   \php-5.2.9-Win32-VC6-x86
   \php-5.2.10-Win32-VC6-x86
   \php-5.2.11-Win32-VC6-x86
   \php-5.2.latest-Win32-VC6-x86
   \php-5.3.0-Win32-VC9-x86
   \php-5.3.1-Win32-VC9-x86
   \php-5.3.latest-Win32-VC9-x86
   \php-6.0.latest-Win32-VC9-x86

Nous avons maintenant plusieurs versions de PHP sur notre disque. Afin de ne pas perdre de temps à reconfigurer tout le fichier php.ini à chaque nouvelle version de PHP, nous avons besoin de mutualiser les fichiers de configuration. Dans la mesure où le fichier php.ini change à chaque branche de PHP, nous aurons besoin d'un répertoire C:\Program Files\PHP\ini et d'un sous répertoire pour chaque branche installée (indépendemment des options de compilation).

Exemple d'arborescence possible :
Sélectionnez
C:\Program Files\PHP
   \ini
      \5.2.x
      \5.3.x
      \6.0.x
Après avoir créé ces répertoires, copions :
  • C:\Program Files\PHP\php-5.2.11-Win32-VC6-x86\php.ini-recommended vers C:\Program Files\PHP\ini\5.2.x\php.ini
  • C:\Program Files\PHP\php-5.3.1-Win32-VC6-x86\php.ini-development vers C:\Program Files\PHP\ini\5.3.x\php.ini
  • C:\Program Files\PHP\php-6.0-Win32-VC9-x86\php.ini-development vers C:\Program Files\PHP\ini\6.0.x\php.ini

Au fur et à mesure des sorties de nouvelles versions, décompresser les nouvelles versions dans des répertoires supplémentaires sans jamais supprimer ce qui est en place. Nous pourrons ainsi facilement revenir à d'anciennes versions. Seuls les répertoires ".latest" sont destinés à être remplacés de temps en temps.

II-C. Apache httpd

Logo d'Apache

II-C-1. Préparation des répertoires

Nous n'avons besoin que d'une seule version d'Apache httpd. Nous en avons plusieurs exemplaires car nous avons besoin d'options différentes de compilation, mais nous n'avons en réalité qu'un seul ensemble de directives de configuration. Il est également possible d'installer plusieurs versions différentes d'Apache httpd en extrapolant les instructions de ce tutoriel mais ce n'est pas l'objectif de cet article. Je n'en parlerai donc pas ici.

Contrairement aux versions antérieures d'Apache httpd, la version 2.2 inclut un utilitaire permettant d'enregistrer manuellement des services Windows. Nous allons l'utiliser pour créer les services qui apparaîtront dans Apache Services Monitor, ce qui facilitera leur démarrage et leur arrêt depuis notre Bureau.

II-C-2. Installation

Nous allons utiliser l'installeur fourni avec notre httpd-VC6 officiel. Après la fin de cette installation, lancer les commandes suivantes :

 
Sélectionnez
cd "C:\Program Files\Apache Software Foundation\Apache2.2\bin"
httpd -k stop -n "Apache2.2"
httpd -k uninstall -n "Apache2.2"
cd "C:\Program Files\Apache Software Foundation"

Il faut alors créer Apache2.2-VC6, puis déplacer Apache2.2\bin ainsi que Apache2.2\modules vers Apache2.2-VC6\*, et enfin dézipper notre httpd-VC9 dans le répertoire C:\Program Files\Apache Software Foundation\Apache2.2-VC9.

À cette étape, nous avons trois répertoires Apache2.2, Apache2.2-VC6 et Apache2.2-VC9 prêts à être configurés avec nos versions de PHP, et Apache Service Monitor n'affiche aucun service disponible.

Avant de configurer les services, il faut mutualiser les répertoires qu'il est possible de mettre en commun.

Supprimer alors les répertoires :
  • Apache2.2-VC9\cgi-bin
  • Apache2.2-VC9\conf
  • Apache2.2-VC9\error
  • Apache2.2-VC9\htdocs
  • Apache2.2-VC9\icons
  • Apache2.2-VC9\logs
  • Apache2.2-VC9\manual

En réutilisant la ligne de commandes ouverte plus tôt dans cet article, nous pouvons créer des liens entre les répertoires (NTFS junction points). Cette fonctionnalité, similaire aux "hard links" du monde UNIX, existe depuis Windows 2000 mais uniquement en ligne de commandes.

 
Sélectionnez
cd "C:\Program Files\Apache Software Foundation"
md Apache2.2-VC6\cgi-bin
md Apache2.2-VC6\conf
md Apache2.2-VC6\error
md Apache2.2-VC6\htdocs
md Apache2.2-VC6\icons
md Apache2.2-VC6\logs
md Apache2.2-VC6\manual
junction.exe Apache2.2-VC6\cgi-bin Apache2.2\cgi-bin
junction.exe Apache2.2-VC6\conf Apache2.2\conf
junction.exe Apache2.2-VC6\error Apache2.2\error
junction.exe Apache2.2-VC6\htdocs Apache2.2\htdocs
junction.exe Apache2.2-VC6\icons Apache2.2\icons
junction.exe Apache2.2-VC6\logs Apache2.2\logs
junction.exe Apache2.2-VC6\manual Apache2.2\manual
md Apache2.2-VC9\cgi-bin
md Apache2.2-VC9\conf
md Apache2.2-VC9\error
md Apache2.2-VC9\htdocs
md Apache2.2-VC9\icons
md Apache2.2-VC9\logs
md Apache2.2-VC9\manual
junction.exe Apache2.2-VC9\cgi-bin Apache2.2\cgi-bin
junction.exe Apache2.2-VC9\conf Apache2.2\conf
junction.exe Apache2.2-VC9\error Apache2.2\error
junction.exe Apache2.2-VC9\htdocs Apache2.2\htdocs
junction.exe Apache2.2-VC9\icons Apache2.2\icons
junction.exe Apache2.2-VC9\logs Apache2.2\logs
junction.exe Apache2.2-VC9\manual Apache2.2\manual

Dans la mesure où le fichier httpd.conf est influencé par la version de PHP installée, et afin de nous assurer que la même configuration est appliquée à httpd-VC6 et httpd-VC9, nous devons créer un répertoire pour centraliser les fichiers de configuration.

Répertoires et fichiers nécessaires :
Sélectionnez
C:\Program Files\Apache Software Foundation\Apache2.2
   \conf
      \httpd.conf

Enfin, il nous faut copier les fichiers PHP-VC6\*.dll vers Apache2.2-VC6\bin et les fichiers PHP-VC9\*.dll Apache2.2-VC9\bin :

 
Sélectionnez
copy "C:\Program Files\PHP\php-5.2.11-Win32-VC6-x86\*.dll" "C:\Program Files\Apache Software Foundation\Apache2.2-VC6\bin\"
copy "C:\Program Files\PHP\php-5.3.1-Win32-VC9-x86\*.dll" "C:\Program Files\Apache Software Foundation\Apache2.2-VC9\bin\"

Remplacez tous les fichiers conflictuels.

II-C-3. Configuration des instances httpd

Chaque instance d'Apache httpd dispose de son propre fichier de configuration. Afin d'éviter les décalages entre les fichiers lorsque nous modifions l'un des fichiers de configuration, nous allons utiliser la directive Include pour segmenter le fichier httpd.conf.

Faire deux copies head.httpd.conf et foot.httpd.conf du fichier httpd.conf. Ouvrir head.httpd.conf et supprimer tout ce qui est après la ligne "# Supplemental configuration". Ouvrir foot.httpd.conf et supprimer tout ce qui précède "# Supplemental configuration".

Créer les fichiers :

C:\Program Files\Apache Software Foundation\Apache2.2\conf\php52.httpd.conf
Sélectionnez
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2-VC6"
Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/head.httpd.conf"

LoadModule php5_module "C:/Program Files/PHP/php-5.2.11-Win32-VC6-x86/php5apache2_2.dll"
PHPIniDir "C:/Program Files/PHP/ini/5.2.x"
AddHandler application/x-httpd-php .php

Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/foot.httpd.conf"
C:\Program Files\Apache Software Foundation\Apache2.2\conf\php52latest.httpd.conf
Sélectionnez
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2-VC6"
Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/head.httpd.conf"

LoadModule php5_module "C:/Program Files/PHP/php-5.2.latest-Win32-VC6-x86/php5apache2_2.dll"
PHPIniDir "C:/Program Files/PHP/ini/5.2.x"
AddHandler application/x-httpd-php .php

Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/foot.httpd.conf"
C:\Program Files\Apache Software Foundation\Apache2.2\conf\php53.httpd.conf
Sélectionnez
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2-VC9"
Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/head.httpd.conf"

LoadModule php5_module "C:/Program Files/PHP/php-5.3.1-Win32-VC9-x86/php5apache2_2.dll"
PHPIniDir "C:/Program Files/PHP/ini/5.3.x"
AddHandler application/x-httpd-php .php

Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/foot.httpd.conf"
C:\Program Files\Apache Software Foundation\Apache2.2\conf\php53latest.httpd.conf
Sélectionnez
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2-VC9"
Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/head.httpd.conf"

LoadModule php5_module "C:/Program Files/PHP/php-5.3.latest-Win32-VC9-x86/php5apache2_2.dll"
PHPIniDir "C:/Program Files/PHP/ini/5.3.x"
AddHandler application/x-httpd-php .php

Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/foot.httpd.conf"
C:\Program Files\Apache Software Foundation\Apache2.2\conf\php60.httpd.conf
Sélectionnez
ServerRoot "C:/Program Files/Apache Software Foundation/Apache2.2-VC9"
Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/head.httpd.conf"

LoadModule php6_module "C:/Program Files/PHP/php-6.0-win32-VC9-x86-latest/php6apache2_2.dll"
PHPIniDir "C:/Program Files/PHP/ini/6.0.x"
AddHandler application/x-httpd-php .php

Include "C:/Program Files/Apache Software Foundation/Apache2.2/conf/foot.httpd.conf"
Nous obtenons cette liste de fichiers utiles :
  • foot.httpd.conf
  • head.httpd.conf
  • php52.httpd.conf
  • php52latest.httpd.conf
  • php53.httpd.conf
  • php53latest.httpd.conf
  • php60.httpd.conf

II-C-4. Installation des services Windows

Il nous reste à installer les services dans la console Windows Management et dans Apache Service Monitor. Pour cela, utilisons à nouveau httpd.exe et son paramètre -k. Attention à utiliser httpd.exe compilé avec la bonne version :

Installation des services Apache httpd compilés avec Microsoft Visual C++ 6 :
Sélectionnez
cd "C:\Program Files\Apache Software Foundation\Apache2.2-VC6\bin"
httpd.exe -k install -n "Apache2.2-PHP5.2-ts-VC6-x86" -f "C:\Program Files\Apache Software Foundation\Apache2.2\conf\php52.httpd.conf"
httpd.exe -k install -n "Apache2.2-PHP5.2.latest-ts-VC6-x86" -f "C:\Program Files\Apache Software Foundation\Apache2.2\conf\php52.httpd.conf"
Installation des services Apache httpd compilés avec Microsoft Visual Studio 9 :
Sélectionnez
cd "C:\Program Files\Apache Software Foundation\Apache2.2-VC9\bin"
httpd.exe -k install -n "Apache2.2-PHP5.3-ts-VC9-x86" -f "C:\Program Files\Apache Software Foundation\Apache2.2\conf\php53.httpd.conf"
httpd.exe -k install -n "Apache2.2-PHP5.3.latest-ts-VC9-x86" -f "C:\Program Files\Apache Software Foundation\Apache2.2\conf\php53latest.httpd.conf"
httpd.exe -k install -n "Apache2.2-PHP6.0-ts-VC9-x86" -f "C:\Program Files\Apache Software Foundation\Apache2.2\conf\php60.httpd.conf"

Nous aurons besoin de la console d'administration des Services de Windows, accessible depuis "Démarrer / Paramètres / Panneau de Configuration / Outils d'administration / Services".

Le souci est que tous les services Apache sont configurés pour s'initier au lancement de Windows, ce qui pose un souci car ils utilisent tous le port numéro 80 pour écouter le réseau. Il nous faut y remédier à l'aide de l'administrateur de Services de Windows dont je vous ai parlé plus haut.

Dans la liste des services, chercher Apache*.

L'objectif ici est simplement de désactiver le lancement automatique de tous les services sauf un, afin qu'il n'y ait pas de conflit. Il faut donc choisir un service qui se lancera par défaut avec Windows, tandis que les autres resteront inactifs jusqu'à ce que nous les appelions par le Moniteur Apache. Double cliquez sur l'un d'eux, changez son type de démarrage à "manuel" et validez. Répétez l'opération autant que nécessaire.

II-C-5. Note

Vous avez maintenant non seulement plusieurs versions de PHP mais aussi un moyen simple de tester vos scripts avec l'une ou l'autre de ces versions : il vous suffit d'utiliser le Moniteur Apache disponible dans votre barre des tâches afin de désactiver un serveur puis d'en lancer un autre.

Pour passer d'une version de PHP à une autre, ouvrez votre "Apache Service Monitor" et jonglez avec les services Apache.

Apache Service Monitor
L'Apache Service Monitor dans la barre des tâches
Apache Service Monitor
L'Apache Service Monitor en grand

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2006 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.