Nicolas BÉJEAN - Développeur Web & Actionscript
V. 1.01

Tutoriel : Configuration d'un serveur Apache 2.2.3 sur une distribution Linux Debian 4.0 Etch.

  1. Pré-requis
  2. Objectifs
  3. Configuration
  4. Sources

1. PRÉ-REQUIS :


2. OBJECTIFS :

Configurer un serveur Apache 2.2.3 pour l'hébergement de plusieurs hôtes virtuels (Virtual Hosts).


3. CONFIGURATION :

Par défaut, le serveur Apache est configuré pour ne gérer qu'un seul site internet mais un serveur Apache à la capacité d'en héberger beaucoup plus.

Nous allons voir, par le biais de ce tutoriel, la configuration des hôtes virtuels (Virtual Hosts) pour éventuellement héberger un à plusieurs sites internets. Il existe trois façons de gérer des hôtes virtuels, soit par l'ip, soit par le nom ou soit par le nom ou l'ip. Nous allons configurer Apache pour qu'il gère les hôtes virtuels basés sur le nom.

Pour commencer nous allons désactiver le site par défaut à l'aide de la commande suivante :

# a2dissite

Le site par défaut est : "000-default".

Relancer le serveur Apache pour qu'il prenne en compte la modification :

# /etc/init.d/apache2 reload

A ce moment, le site par défaut du serveur Apache ne fonctionne plus.

Nous allons modifier les fichiers de configuration du serveur qui se trouve dans le dossier : "/etc/apache2/".

Chaque fichier de configuration sera créer dans le dossier : "sites-available". Un fichier correspondera à un hôte virtuel.

Si vous le souhaitez, il est possible de ne prendre en compte que les fichiers dont l'extension est : ".conf". Ce n'est pas primordial dans le bon fonctionnement du serveur Apache car nous utilisons la commande : "a2ensite". Cette commande créée un lien symbolique du fichier de configuration dans le dossier : "sites-enabled".

Donc, pour ne prendre en compte que les fichiers dont l'extension est : ".conf", éditer le fichier "apache2.conf" :

# vi /etc/apache2/apache2.conf

Une fois le fichier ouvert, faites une recherche de : "sites-enabled" :

# /sites-enabled

Vous devriez arriver à la ligne ci-dessous :

# Include /etc/apache2/sites-enabled/

Rajouter : "*.conf" afin obtenir :

# Include /etc/apache2/sites-enabled/*.conf

Enregistrer et quitter vi en appuyant d'abord sur la touche "Echap" et ensuite :

:wq

A son redémarrage, le serveur Apache ne prendra en compte que les fichiers de configuration du dossier : "sites-enabled" dont l'extension est : ".conf".

Maintenant, nous allons créer le fichier de configuration principal : "000-principal.conf"

Vous remarquerez que le nom du fichier commence par : "000-". Pourquoi ? Ce fichier contient les directives principales du serveur Apache ainsi que les directives du serveur virtuel : "http://adresse-ip-du-serveur/".
Ce fichier doit donc être lu en premier par le serveur Apache. Et si le serveur gère une centaine de sites internet, nous n'aurons pas de difficultés à retrouver le fichier de configuration principal.

Donc, nous allons créer notre fichier de configuration principal :

# vi /etc/apache2/sites-available/000-principal.conf

Nous allons insérer la directive NameVirtualHost afin de préciser au serveur Apache sur quelle adresse IP ce dernier peut accepter des requêtes mais cette directive n'indique pas sur quelle adresse IP et port le serveur écoute par contre les directives BindAddress et Listen indique sur quelle adresse IP et port le serveur Apache écoute. Revenons à la directive NameVirtualHost. Nous allons remplacer l'adresse IP par "*" pour n'importe quelle adresse IP et port. L'indication du port peut-être précisé mais c'est optionnel.
La deuxième directive ServerName permet de qualifier le nom du serveur et son port mais encore une fois le port est optionnel. Cette directive est importante pour éviter d'avoir quelques surprises.

Insérer les lignes suivantes :

NameVirtualHost *
ServerName      localhost
        
# Force le serveur Apache a demarrer avec l'utilisateur "www-data".
# Force le serveur Apache a demarrer avec le groupe "www-data".
User    www-data
Group   www-data

Insérer à la suite du fichier les balises suivantes afin de configurer les requêtes de l'hôte virtuel : "http://adresse-ip-du-serveur/" :

<VirtualHost *>

</VirtualHost>

Nous allons refuser les requêtes sur l'adresse : "http://adresse-ip-du-serveur/" afin de ne pas donner l'accès total du dossier : "/var/www/" aux visiteurs indésirables.

Pour cela, insérer le bloc de commande ci-dessous, attention la directive : DocumentRoot ne contient pas de "/" à la fin :

# Permet d'indiquer le répertoire racine sur le disque dur le site internet gérer par le serveur
DocumentRoot    /var/www

# Applique au répertoire "/" des directives particulieres
<Directory />
    # Indique au serveur de ne pas generer une page HTML si aucune page index n'est presente dans le dossier
    Options -Indexes
    # Ignore les fichiers ".htaccess"
    AllowOverride   None
    #
    Order   deny,allow
    Deny from   all
</Directory>

# Applique au répertoire "/var/www/" des directives particulieres
<Directory /var/www/>
    # Indique au serveur de ne pas generer une page HTML si aucune page index n'est presente dans le dossier
    Options -Indexes
    # Ignore les fichiers ".htaccess"
    AllowOverride   None
    #
    Order   deny,allow
    Deny from   all
</Directory>

Insérer à présent les commandes nous permettant d'avoir des fichiers logs sur le serveur virtuel principal :

# Indique ou seront stockes les messages d'erreurs
ErrorLog    /var/log/apache2/error.log
# Indique ou seront stockes les messages d'acces
CustomLog   /var/log/apache2/access.log     combined

"combined" définit le format du fichier log. Les fichiers logs sont très utile pour repérer une erreur et la corriger et/ou quand on souhaite utiliser AWStats sur son site internet. Exemple d'une ligne d'un fichier log au format : "combined" :

192.168.2.100 - - [06/Nov/2008:23:52:47 +0100] "GET / HTTP/1.1" 200 44 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3"

La commande suivante permet de spécifier le degré d'informations dans les fichiers : "error.log" et "access.log" :

LogLevel    debug

Pour des raisons de sécurité, si une page demandée n'existe pas, il faut masquer la signature du serveur en ajoutant :

ServerSignature Off

Enregistrer et quitter le fichier.

Nous avons à présent un fichier de configuration principal qui n'autorise pas les accès depuis l'adresse : "http://adresse-ip-du-serveur/" et qui interdit l'affichage du dossier : "/var/www/".

Nous allons créer le fichier de configuration de notre premier site que l'on appellera : "premiersite.conf" :

# vi /etc/apache2/sites-available/premiersite.conf

Insérer les balises suivantes :

<VirtualHost *>

</VirtualHost>

A l'intérieur des balises créées ci-dessus, insérer les lignes suivantes :

# Definit l'adresse email de l'administrateur
ServerAdmin     webmaster@premiersite.ext
# Permet d'indiquer le repertoire racine sur le disque dur le site internet gerer par le serveur
DocumentRoot    /var/www/premiersite
# Definit le nom principal du site internet
ServerName      www.premiersite.ext
# Definit les alias du site internet
ServerAlias     www.premiersite.ext/ premiersite.ext premiersite.ext/

Ensuite, insérer les autorisations d'accès au dossier "/var/www/premiersite/" :

<Directory /var/www/premiersite>
    Order   allow,deny
    Allow from  all
    
    # Indique au serveur de ne pas generer une page HTML si aucune page index n'est presente dans le dossier
    Options -Indexes
    
    # Permet les fichiers ".htaccess"
    AllowOverride   All
</Directory>

Insérer les commandes suivantes après la balise de fermeture "</Directory>", pour la gestion des fichiers logs : "error.log" et "access.log" :

# Indique ou seront stockes les messages d'erreurs
ErrorLog    /var/log/apache2/premiersite/error.log
# Indique ou seront stockes les messages d'acces
CustomLog   /var/log/apache2/premiersite/access.log   combined

LogLevel    debug

Si nous le souhaitons, nous pouvons autoriser ou interdire l'éxécution de script PHP avec la commande suivante :

<IfModule mod_php5.c>
    # Remplacer "on" par "off" pour interdire l'execution de script PHP
    php_flag    engine  on
</IfModule>

Nous venons de créer un site virtuel (VirtualHosts) : "www.premiersite.ext"
Pour disposer d'un autre hébergement, il suffit de dupliquer le fichier "premierSite.conf" en "secondsite.conf" :

# cp /etc/apache2/sites-available/premiersite.conf /etc/apache2/sites-available/secondsite.conf

N'oubliez pas de modifier le fichier : "secondsite.conf" en remplaçant "premiersite" par "secondsite".

Nous avons à présent 2 fichiers de configuration pour l'hébergement de 2 sites internet différents
Nous allons créer les répertoires nécessaires pour l'hébergement des sites internet :

# mkdir /var/www/premiersite
# mkdir /var/www/secondsite

Ne pas oublier de créer les répertoires nécessaires aux fichiers logs :

# mkdir /var/log/apache2/premiersite/
# mkdir /var/log/apache2/secondsite/

Maintenant, vérifions nos fichiers de configuration en activant les fichiers : "000-principal.conf", "premiersite.conf" et "secondsite.conf" :
Exécuter la commande pour chacun des fichiers, (Remplacer nom-du-fichier par : "default") :

# a2ensite nom-du-fichier

Relancer le serveur Apache :

# /etc/init.d/apache2 reload

Aucun message d'erreur ne devrait s'afficher.

Vérifions maintenant que la configuration du serveur Apache fonctionne.
Pour cela, nous allons copier les fichiers du dossier : "/var/www/apache2-default/" dans chacun de nos dossiers : "premiersite" et "secondsite" :

# cp /var/www/apache2-default/index.html /var/www/premiersite/index.html
# cp /var/www/apache2-default/phpinfo.php /var/www/premiersite/phpinfo.php

Exécuter la même commande pour copier les fichiers dans le dossier : "secondsite"

Utiliser un navigateur pour vérifier que notre configuration fonctionne correctement.
La page HTML et PHP de chaque site devrait s'éxécuter correctement.

Si vous n'avez aucun message d'erreur et que les fichiers fonctionne correctement. Félicitations, vous venez de configurer des hôtes virtuels sur un serveur Apache 2.2.3 sur Linux Debian 4.0 Etch.


4. SOURCES :

Voici la liste des sites qui m'ont aidé à créer ce tutoriel :



Commentaires : 2

Le : 2009-09-19 00:04:59, Arthur a écrit :

Bonjour,

Pour la configuration des hôtes virtuels, ne doit-on pas créer un lien vers sites-enabled ?


Le : 2009-09-23 15:22:07, BEJEAN Nicolas a écrit :

Bonjour,

Le lien vers sites-enabled se créé automatiquement lorsque l'on lance la commande :

# a2ensite nom-du-fichier

Ajouter un commentaire :


Nom * :
eMail * :
Site Internet :
Commentaires * :