Introduction
La mise en service d’un serveur Web local Apache v 1.3.12 sous Windows pour les développements PHP est proposée dans cette note technique.
Parmi les points techniques et les principes fondamentaux abordés qui sont les plus importants :
- Démarrage et arrêt du serveur.
- Création d’Alias.
- Implémentation de PHP 4.
- Utilisation des fichiers .htaccess pour protéger et paramétrer les répertoires.
Installation du serveur Web Apache v 1.3.12
Pour des raisons de compatibilité avec les commandes MSDOS et pour une
pratique plus aisée, le serveur Web Apache est installé dans le répertoire
personnalisé ci-dessous afin d’éviter des noms de répertoire de plus de 8
lettres ou comportant des espaces (le répertoire par défaut d’installation est
C:\Program Files\Apache Group\Apache
) :
C:\Serveurs\Web\Apache
Dans la suite de cet article, %APACHE_DIR%
désigne le répertoire
d’installation du serveur Apache 1.3.
Démarrage du serveur Web
Dans une invite de commande DOS, pour démarrer le serveur Web Apache, lancer
l’exécutable apache
situé dans le répertoire %APACHE_DIR%
avec l’argument -k
start :
DOS> cd %APACHE_DIR%
DOS> apache -k start
Pour tester la mise en service du serveur Apache, lancer le navigateur et saisir l’adresse URL http://localhost ou http://127.0.0.1. Cette adresse amène par défaut à la page d’accueil d’Apache.
Redémarrage du serveur Web
Pour redémarrer le serveur Web Apache :
DOS> cd %APACHE_DIR%
DOS> apache -k restart
Arrêt du serveur Web
Pour éteindre le serveur Web :
DOS> cd %APACHE_DIR%
DOS> apache -k shutdown
Les fichiers de configuration d’Apache
Les fichiers principaux de configuration pour Apache sont httpd.conf
,
srm.conf, access.conf
. Ces derniers fichiers sont installés par défaut dans le
répertoire %APACHE_DIR%\Conf
. Après exécution du fichier httpd.conf
par le
serveur Apache, srm.conf
et access.conf
sont respectivement lus et interprétés
par le serveur.
À l’installation d’Apache, les fichiers srm.conf
et access.conf
sont
vierges. Il est par ailleurs recommandé par Apache de laisser ces derniers
vides et de tout centraliser le paramétrage dans le fichier httpd.conf
.
Répertoires virtuels ou "Alias"
Au sein d’Apache, l’ajout d’alias est illimité. Un alias permet d’associer un répertoire OS physique à un répertoire vituel Apache :
C:\repertoire\mesdeveloppements <=> http://127.0.0.1/monsite
Pour ajouter un alias, repérer le paragraphe #Alias
dans le fichier
httpd.conf
.
### Section2 : 'Main' server configuration
# Aliases ...
L’ajout d’alias s’effectue alors très simplement dans ce paragraphe grâce
aux directives Alias
comme indiquées en exemple ci-dessous :
%APACHE_DIR%\Conf\httpd.conf
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Ajout ici des alias ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Creation d’un alias le 02.01.2001 pour les tests php
Alias /test_php/ "c:/informatique/developpements/php/"
#
# Ajout pour implementation de phpMyAdmin v 2.5
Alias /php_admin/ "c:/serveurs/web/php/v4/myadmin/phpMyAdmin/"
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
La page web c:/informatique/developpements/php/index.html
correspondra à
l’adresse URL http://127.0.0.1/php_admin/index.html/
avec la directive Alias
définie ci-dessus.
Dans les fichiers de configurations d’Apache, seuls les "/" sont autorisés.
Implémentation de l’interpréteur de script PHP
L’intégration de l’interpréteur de script PHP au sein du serveur Apache est
réalisée ici pour la machine PHP v 4.0.2. L’interpréteur de script PHP est
l’exécutable php.exe
avec ses librairies associées.
Il faut spécifier au serveur Apache dans un premier temps les extensions des
fichiers Web associés à l’interpréteur de script PHP. Pour la machine PHP ces
extensions sont *.phml, *.php, *.php3
et *.php4
.
Dans le fichier httpd.conf
, ces associations sont consignées dans le
paragraphe
### Section2 : 'Main' server configuration
# AddType ...
grâce aux directives AddType
:
%APACHE_DIR%\Conf\httpd.conf
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
AddType application/x-httpd-php .php
AddType application/x-httpd-php .php4
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .phtml
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
La nomenclature x-httpd-php
aura toute son importance pour la suite.
La seconde étape consiste à donner un alias pour le répertoire contenant
l’interpréteur de script PHP. La directive ScriptAlias
réalise cette opération,
directive qui précise à Apache qu’il s’agit d’un répertoire hébergeant des
interpréteurs de scripts (CGI, PHP, Perl, Python…).
ScriptAlias /php/ c:/serveurs/web/php/v4/RTime/
Dans l’exemple ci-dessus, la machine PHP 4.0 est installée dans le
répertoire c:/serveurs/web/php/v4/RTime
Dernière étape : indiquer que toute application de type
"application/x-httpd-php"
(*.php, *.php3
…) est systématiquement traitée par
/php/php.exe
grâce à la directive Action
.
Action application/x-httpd-php /php/php.exe
L’ajout de modules Apache
Des modules complémentaires pour Apache sont fournis dans le répertoire
%APACHE_DIR%\Modules
. Il s’agit de librairies de liaisons dynamiques (i.e.
fichiers DLL). Pour activer ces modules, il suffit de décommenter les lignes
ci-dessous dans le paragraphe Dynamic Shared Object du fichier de configuration
httpd.conf
.
# Dynamic Shared Object (DSO) Support
#
#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
#LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll
#LoadModule digest_module modules/ApacheModuleDigest.dll
#LoadModule expires_module modules/ApacheModuleExpires.dll
#LoadModule headers_module modules/ApacheModuleHeaders.dll
#LoadModule proxy_module modules/ApacheModuleProxy.dll
#LoadModule rewrite_module modules/ApacheModuleRewrite.dll
#LoadModule speling_module modules/ApacheModuleSpeling.dll
#LoadModule status_module modules/ApacheModuleStatus.dll
#LoadModule usertrack_module modules/ApacheModuleUserTrack.dll
Ce dernier paragraphe permet également en outre de charger des modules personnels.
Toutefois, la documentation Apache précise bien que l’ordonnancement de chargement de ces modules doit être scrupuleusement respecté pour des raisons de performances du serveur Web (consulter la documentation en ligne à ce sujet).
Les fichiers .htaccess
Les fichiers .htaccess
sont des fichiers de configuration d’Apache
permettant de définir des règles dans un répertoire et dans tous les sous
répertoires qui ne possèdent de fichiers .htaccess
.
Ces derniers sont utilisés pour protéger un répertoire par un mot de passe ou pour changer le nom ou l’extension de la page d’index, ou encore pour interdire l’accès au répertoire.
Intérêt des fichiers .htaccess
Les fichiers .htaccess
peuvent être utilisés dans n’importe quel répertoire
virtuel ou sous répertoire.
Les principales raisons d’utilisation des fichiers .htaccess
sont :
- Gérer l’accès à certains fichiers
- Ajouter un mime-type
- Protéger l’accès à un répertoire par un mot de passe
- Définir des pages d’erreurs personnalisées
Principe des fichiers .htaccess
Le fichier .htaccess
est placé dans le répertoire dans lequel ce dernier
doit agir. Il agit ainsi sur les permissions du répertoire qui le contient et
de tous ses sous répertoires. Un fichier .htaccess
dans un sous répertoire d’un
répertoire déjà contrôlé par un fichier .htaccess
est possible.
Le fichier .htaccess
du répertoire parent reste en activité tant que les
fonctionnalités n’ont pas été réécrites.
Empêcher l’accès à des ressources
Pour créér un fichier .htaccess
sous Windows et Notepad, enregistrer le
fichier en protégeant .htaccess
avec des double quotes lors de l’enregistrement
(".htaccess").
Empêcher l’accès à un répertoire à un domaine
La syntaxe pour bloquer l’accès d’un répertoire à un domaine est la suivante :
Allow (all, [liste de domaine])
Deny (all, [liste de domaine])
Order (Allow,Deny ou Deny,Allow)
.htaccess
Order Deny, Allow
Deny from .sqlpac.com
Toutes les personnes (requêtes) provenant du domaine .sqlpac.com ne pourront avoir accès aux ressources comprises dans le répertoire et ses sous-répertoires. La commande Order sert à préciser explicitement que la commande Deny va bien annuler l’effet de Allow et non l’inverse.
Empêcher l’accès à un type de fichiers à un domaine
<Files *.jpg>
Order Deny, Allow
Deny from .sqlpac.com
</Files>
Toutes les personnes ou requêtes provenant du domaine .sqlpac.com ne
pourront avoir accès aux images dont l’extension est .jpg
dans le répertoire et
ses sous répertoires.
Autoriser l’accès à un groupe de fichiers à un domaine et un pays
<Files syb*>
Order Allow, Deny
Deny from all
Allow from .sqlpac.com
Allow from .fr
</Files>
Toutes les personnes ou requêtes provenant du domaine .sqlpac.com ou des domaines ayant la terminaison .fr pourront avoir accès aux fichiers commençant par sybdans le répertoire et ses sous répertoires (par exemple le fichier sybase-ase-12.5.html).
Protéger un répertoire par un mot de passe
Il s’agit d’une des applications les plus utiles du fichier .htaccess
car
elle permet de définir de façon sûre (à l’aide d’un login et d’un mot de passe)
les droits d’accès à des fichiers par certains utilisateurs. La syntaxe est la
suivante :
AuthUserFile (nom du fichier)
AuthType (Basic)
AuthName ([texte])
Cette commande permet de définir l’emplacement du fichier contenant les
logins et les mots de passe des utilisateurs autorisés à accéder à une
ressource donnée. Voici un exemple de fichier .htaccess
AuthName "Accès Espace privé"
AuthType Basic
AuthUserFile /home/www/.FichierDeMotDePasse
<Limit GET POST>
Require valid-user
</Limit>
AuthName
paramètre le libellé de la boîte de dialogues demandant le nom d’utilisateur et le mot de passe.AuthType Basic
précise qu’il faut utiliserAuthUserFile
pour l’authentification.Require valid-user
précise que l’on autorise uniquement les personnes identifiées.AuthUserFile
donne le chemin complet d’accès au fichier des comptes et mot de passe. Le chemin ne doit pas être un alias Apache mais le chemin OS physique exact.
Voici un exemple de fichier de mot de passe (ici .FichierDeMotDePasse
) :
sqlpac:$apr1$D8......$m8PWrn90oDjiIPqyaa9pl.
cgcam:$apr1$19......$PX1A0WOp8UpZGkekwiRpe0
.FichierDeMotDePasse
est un simple fichier texte contenant
<username>:<mot de passe>
. Le mot de passe peut être crypté ou non.
Les versions cryptées de mot de passe peuvent être générées grâce au binaire
htpasswd
dans le répertoire %APACHE_DIR%\bin
:
DOS> %APACHE_DIR%\bin\htpasswd
htpasswd -c D:\.FichierDeMotDePasse sqlpac
Automatically using MD5 format on Windows. New password: ******* Re-type new password: ******* Adding password for user sqlpac
-c
n’est utilisé que pour créer le fichier des mots de passe lorsque ce
dernier n’existe pas.
Personnalisation des messages d’erreurs
Il s’agit d’une fonctionnalité pratique car elle permet de définir une page par défaut pour un type d’erreur donné (voir l’ensemble des codes d’erreur et leurs significations…).
Cela permet d’une part de guider l’utilisateur au lieu d’afficher la banale page du navigateur, ainsi que d’égayer la navigation même en cas d’erreur.
ErrorDocument (code-à-3chiffres [nom du fichier ou texte ou URL])
Les deux lignes suivantes permettent de définir des pages d’erreur personnalisées au cas où l’accès à un document serait interdit ou bien que le document n’existe pas :
ErrorDocument 403 /erreurs/403.php3
ErrorDocument 404 /erreurs/404.php3
Ceci vous permet de donner un message d’erreur personnalisé remplaçant les messages renvoyés par le navigateur.
Voici quelques unes des erreurs les plus courantes à personnaliser :
401 Unauthorized
: la personne n’a pas passé avec succès l’identification.403 Forbidden
: le serveur n’a pas le droit de répondre à votre requête.404 Not Found
: le serveur n’a pas trouvé le document souhaité.
Changer le fichier Index par défaut
Le fichier index est le fichier qui est affiché lorsqu’aucun nom de fichier n’est défini dans l’URL (par exemple http://www.serveur.com/repertoire). Cela permet d’éviter que le navigateur liste l’ensemble des fichiers contenus dans le répertoire (pour des raisons de confidentialité).
La syntaxe pour effectuer ce type d’opération est la suivante :
DirectoryIndex (fichiers)
Voici un exemple de mise en application :
DirectoryIndex index.php index.html index.phtml /erreurs/403.php
Lorsque vous essayez d’accéder au répertoire sans préciser la page à
afficher, Apache a recours à la directive DirectoryIndex
. En général, par
défaut cette directive pointe vers index.html
puis index.htm
.
Dans l’exemple ci-dessus, Apache va commencer par chercher index.php
, puis
index.html
, et ensuite index.phtml
. Si aucun de ces trois fichiers existent, la
page 403.php
(se trouvant dans la racine) sera affichée pour éviter de lister
le répertoire.