[Win2003/XP] Installer un Serveur Web Apache - PHP - SSL ...

Tuto et astuces pour les OS de Microsoft

Modérateurs: théo, leowen, toaster

Règles du forum
Les tutoriels et astuces sont soumis à approbation de l'équipe avant affichage, les réponses sont libres.

[Win2003/XP] Installer un Serveur Web Apache - PHP - SSL ...

Messagede John D » 10 Mar 2008, 20:42

Installer un Serveur Web Apache / PHP / SSL / MySql …

Apache 2.2.8 ( incluant les fichiers necessaires au fonctionnement d’OpenSsl )
http://mirrors.isc.org/pub/apache/httpd ... 0.9.8g.msi
PHP 5.2.5
http://www.php.net/get/php-5.2.5-Win32. ... m/a/mirror
MySql Server 5.1
http://www.01net.com/outils/telecharger ... /3129.html
PhpMyAdmin 2.11.5 ( Telecharger " all-languages.zip " )
http://www.phpmyadmin.net/home_page/downloads.php
OpenSsl 0.9.8g
http://www.mediafire.com/?saj0nl7tjzc
Webalizer 2.01.10
http://archive.mgm51.com/mirrors/webali ... 32-bin.zip
eGroupWare 1.4.002 ( ou SugarCRM, Xoops, Phenix Agenda, Joomla … )

Le Serveur Web est composé d’Apache, PHP, MySql, PhpMyAdmin, OpenSsl, Webalizer, eGroupWare, et est installé sur Windows Server 2003 ( ou XP ). eGroupWare est un portail qui regroupe les contacts, rendez-vous, tâches … de chaque utilisateur afin de les partager, mais il en existe d’autres comme SugarCRM, Xoops, Phenix Agenda, Joomla. Quand à Webalizer, il permet de génerer un rapport qui fournit différentes statistiques sur le serveur.

Dans un premier temps, créer un dossier " www " à la racine du disque dur, le chemin d’accès sera donc "C:\www\". C’est ici que tous les fichiers du serveur se trouveront.

Dans ce dossier, créer un dossier "cle_ssl" qui contiendra les fichiers en rapport avec la Sécurisation SSL, un dossier "site" où seront placés les fichiers des différents sites.

Se procurer les fichiers d’installation pour Apache, MySql, eGroupWare et les dossiers compressés pour PHP, OpenSsl, PhpMyAdmin, et Webalizer. ( Voir liens ci dessus )

Installer eGroupWare, Apache, MySql, et decomprésser PHP, OpenSsl, PhpMyAdmin, Webalizer dans le dossier "www".

Modifier la variable d’environnement path,
-> Clic droit sur le Poste de Travail
-> Onglet Avancé
-> Cliquer sur Variables d'environnement
-> Dans la partie Variables systeme
-> Double cliquer sur path
-> et y ajouter :
C:\www\php ; C:\www\openssl

Redemarrer le PC, pour etre sur que Windows prenne en compte les modifications de la variable path

Modifier le fichier « httpd.conf », accessible dans C:\www\Apache\conf\ :
( ServerName correspond au nom de votre PC, pour le connaître :
-> Clic Droit sur le Poste de Travail
-> Onglet Nom de l’ordinateur
-> Il se trouve à coté de Nom complet de l’ordinateur )

Code: Tout sélectionner
ServerName  nom-machine
Document Root "C:/www/site"
…
<Directory "C:/www/site">


-- à ajouter en dessous des lignes Load Modules

Code: Tout sélectionner
LoadModule php5_module "C:/www/Php/php5apache2_2.dll" 


-- à ajouter a la fin du fichier pour mieux s’y retrouver

Code: Tout sélectionner
AddType application / x-httpd-php  .php 
PHPIniDir "C:/WINDOWS"

Alias /pma/ "C:/www/phpmyadmin/"

<Directory "C:/www/phpmyadmin/">
Options Indexes FollowSymLinks
Allow Override None
Order Allow, Deny
Allow from All
</Directory>


Redemarrer le serveur Apache pour qu'il prenne en compte les modifications apportées au fichier httpd.conf

Modifier le fichier php.ini-recommended, qui se trouve dans C:\www\php, le renommer en php.ini, et le placer dans C:\WINDOWS ( Ne pas supprimer le fichier php.ini-recommended ). Chercher Extension_dir et modifier comme ceci :

Code: Tout sélectionner
Extension_dir = "C:/www/php/ext"


Pour information, le dossier "ext" contient les extensions par défaut de PHP.

Décommenter les lignes ( enlever les ; ) :
Code: Tout sélectionner
extension=php_mysql.dll 
extension=php_mysqli.dll


Pour tester PHP, créer un fichier info.php dont le code à saisir est :

Code: Tout sélectionner
<?php
phpinfo( );
?> 

Placer ce fichier dans le dossier "site" ( C:\www\site\ ), se connecter ensuite avec un navigateur à l’adresse :
Code: Tout sélectionner
http://localhost/info.php		( localhost = 127.0.0.1 )


Si tout fonctionne normalement, une description complète du serveur devrait s’afficher.

Tester PhpMyAdmin, en se connectant avec un navigateur, à l’adresse :

Code: Tout sélectionner
http://localhost/pma/


PhpMyAdmin affiche un message d’erreur disant qu’il ne peut pas se connecter à MySql, pour remédier a cela, éditer le fichier config.default.php qui se trouve dans phpmyadmin\librairies, ajouter le mot de passe root de MySql :

Code: Tout sélectionner
$cfg['Servers'][$i]['password'] = 'xxxx'; 

-- xxxx étant le mot de passe root que vous avez choisi à l’installation de MySql

Ensuite, l’enregistrer avec le nom config.inc.php dans le dossier phpmyadmin, ce qui a pour effet de créer un nouveau fichier, sans écraser le fichier config.default.php . Relancer PhpMyAdmin, et maintenant il donne accès aux bases de données MySql.

Configurer l’accès à eGroupWare, ( ajouter à la fin ) :

Code: Tout sélectionner
Alias /egw/ "C:/www/egroupware/"

<Directory "C:/www/egroupware/">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from All
</Directory>


Mettre en place la sécurisation des communications ( SSL ) :

Créer un fichier batch appelé SSL.bat, dans le dossier cle_ssl, regroupant les commandes qui permettent de créer le certificat, la clé privée, d’indiquer l’algorithme de cryptage RSA, de générer la clé, de générer le certificat et de le signer.

Contenu de SSL.bat :

Code: Tout sélectionner
@echo off 
openssl req -config openssl.cnf -new -out nom-machine.csr 
pause && cls 
openssl rsa -in privkey.pem -out nom-machine.key 
openssl x509 -in nom-machine.csr -out nom-machine.cert -req -signkey nom-machine.key -days 365 
openssl x509 -in nom-machine.cert -out nom-machine.der.crt -outform DER 
pause && exit


Remplacer nom-machine par le nom de votre serveur, qui est également le nom de votre PC. Une fois le fichier prêt, l’executer et fournir les informations qui vous serons demandées.

A ce stade, les fichiers necessaires au fonctionnement de SSL, ont été créés dans le dossier cle_ssl. Pour des raisons de sécurité, supprimer le fichier .rnd .

Afin d’être sûr que le module SSL puissent fonctionner, copier libeay32.dll, lissl32.dll et ssleay32.dll dans C:\WINDOWS\System32. Ceci est optionnel, car la variable path indique à Windows où se trouve les dll nécessaires.

Il reste quelques modifications à apporter au fichier httpd.conf :

Listen 443 -- à ajouter en dessous de Listen 80


Code: Tout sélectionner
LoadModule ssl_module modules/mod_ssl.so

<ifModule ssl_module>
    SSLMutex default
    SSLSessionCache none
    SSLRandomSeed startup builtin
    SSLRandomSeed connect builtin
    Addtype application/x-x509-ca-cert .crt .cert
</ifModule>

<VirtualHost nom-machine:443>
    DocumentRoot "C:/www/egroupware"

<Directory "C:/www/egroupware/">
  Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from All
</Directory>

    SSLEngine On
    SSLCertificateFile "C:/www/cle_ssl/nom-machine.cert"
    SSLCertificateKeyFile "C:/www/cle_ssl/nom-machine.key"
</VirtualHost>


Pour tester le module SSL, se connecter avec un navigateur à l’adresse :

Code: Tout sélectionner
https://nom-machine
-- ne pas oublier le " s " de https

Un fenêtre s’affiche et demande d’accepter le certificat. Ensuite, la page de connexion sécurisée à eGroupWare s’affiche. Ce qui veut dire que lorsqu’un utilisateur entre son mot de passe, la communication avec le serveur est cryptée.

Pour faciliter la connexion au serveur pour les utilisateurs du réseaux, et également pour sécuriser toutes les connexions distantes, il est possible de mettre en place une redirection du port 80 ( http ) vers le port 443 ( SSL ). Pour cela il faut modifier le fichier « httpd.conf », en ajoutant un serveur virtuel ( virtualhost ) qui s’occupera de la redirection de port :

Code: Tout sélectionner
<VirtualHost nom-machine:80>
ServerName nom-machine
Redirect permanent / https://nom-machine/
</VirtualHost>


"nom-machine" correspond au nom que vous avez mis a la ligne "ServerName" (qui lui meme correspond au nom du pc - voir plus haut -)

Pensez à redemarrer le serveur Apache après chaque modification au fichier httpd.conf

Lorsqu’un client se connecte au serveur en tapant
Code: Tout sélectionner
http://nom-machine
,
il est donc automatiquement redirigé vers
Code: Tout sélectionner
https://nom-machine


Une fois le serveur configuré, mettre en place Webalizer. Créer un dossier logs dans le repertoire webalizer, qui recevra le rapport généré. Faire une copie du fichier sample.conf, dans le dossier webalizer, en le renommant webalizer.conf. Modifier ce fichier :

Code: Tout sélectionner
LogFile        C:\www\Apache2\logs\access.log
…
OutputDir      C:\www\webalizer\logs
…
HostName       nom-machine


Configurer l’accès à Webalizer en créant un alias dans le fichier httpd.conf d’Apache:

Code: Tout sélectionner
Alias /wba/ "C:/www/webalizer/logs/"

<Directory "C:/www/webalizer/logs/">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from All 
</Directory>




Pour mettre régulièrement ce rapport à jour, il est possible de créer une Tâche planifiée qui exécutera webalizer.exe tous les jours, à une heure précise.

De cette manière, l’adresse http://nom-machine/wba/ affiche le rapport correspondant à l’utilisation du serveur.
______________________________________________________________________________________________________________________________

Bon courage, à ceux qui se lanceront dans l'aventure, ça peut paraitre un peu long et compliqué mais si vous suivez bien ce tuto, il ne devrait pas y avoir de probleme.
Petit conseil :
1- Configurer Apache
2- Configurer PHP
3- Tester PHP
4- etc...

Tout ça pour dire qu'il faut faire les choses étape par étape, et tester chaque modifications.
Pensez a consulter le log d'erreurs d'Apache, l'observateur l'evenements de Windows
peut parfois aider ( Demarrer -> Executer -> eventvwr.msc )
En reinstallant mon serveur, la semaine derniere j'ai eu un probleme dont je ne trouvai pas la solution
et en essayant plusieurs choses, je l'ai resolu en changeant de version de PHP, etant donné que ces logiciels sont des
logiciels libres, il peut arriver que certaines versions ne fonctionnent plus ensemble alors qu'elles
marchaient très bien avant la reinstall...
Certaines choses sont inexpliquables, ça fait partie des mysteres de l'informatique, et c'est aussi pour ça qu'on aime ...
Avatar de l’utilisateur
John D
Membre actif
Membre actif
 
Messages: 148
Inscription: 24 Avr 2007, 18:51
Localisation: Metz

Retourner vers Windows

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités