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▲
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.
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épendamment des options de compilation).
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▲
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 :
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.
cd
"C:\Program Files\Apache Software Foundation"
md
Apache2.2-VC6\cgi-bin
md
Apache2.2-VC6\con
f
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\con
f Apache2.2\con
f
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\con
f
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\con
f Apache2.2\con
f
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.
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 :
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 :
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"
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"
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"
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"
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 :
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\con
f\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\con
f\php52.httpd.conf"
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\con
f\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\con
f\php53latest.httpd.conf"
httpd.exe -k install -n "Apache2.2-PHP6.0-ts-VC9-x86" -f "C:\Program Files\Apache Software Foundation\Apache2.2\con
f\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.