Chapitre 2. Installer un serveur Web (apache)

Table des matières
1. Pré-requis théorique
2. Description
3. Installation
4. Configuration
4.1. Fichier de configuration
4.2. Modifier l'emplacement des fichiers de mon serveur Apache
4.3. Mettre un répertoire Web pour chaque utilisateur
4.4. Prendre en compte les modifications
4.5. Reconfigurer
5. Utilisation
5.1. Accéder au site Web de votre machine :
5.2. Accéder au site personnel d'un utilisateur :
6. Désinstallation
7. Annexe : fichier de configuration

Tableau 2-1. Evolution de cet article

DateAjout(s) / Modification(s)
09 mai 2003Version initiale.
12 juillet 2003Corrections d'erreurs dans l'annexe suite au mail de Spike LEE
27 octobre 2003Relecture.

1. Pré-requis théorique

1.1. Qu'est-ce qu'un serveur web ?

Un serveur web est un logiciel permettant à des clients d'accéder à des pages web, c'est-à-dire en réalité des fichiers au format HTML à partir d'un navigateur (aussi appelé browser) installé sur leur ordinateur distant.

Un serveur web est donc un << simple >> logiciel capable d'interpréter les requêtes HTTP arrivant sur le port associé au protocole HTTP (par défaut le port 80), et de fournir une réponse avec ce même protocole.

2. Description

Apache est le serveur le plus répandu sur Internet. Il s'agit d'une application fonctionnant à la base sur les systèmes d'exploitation de type Unix, mais il a désormais été porté sur de nombreux autres systèmes.

3. Installation

Nous allons installer le paquet phpmyadmin qui contient :

# apt-get install phpmyadmin

Une fois le paquet installé, vous devez répondre aux questions suivantes:

Tableau 2-2. apt-get install phpmyadmin

Nom du paquetQuestionRéponse à choisir
phpmyadminWhich web server would you like to reconfigure automatically ?Apache
php4Do you want me to run the apacheconfig script now ?n
mysqlDo you want me to add it now ?y

4. Configuration

4.1. Fichier de configuration

Le fichier de configuration est /etc/apache/httpd.conf.

ImportantTout configurer !
 

Le fichier de configuration /etc/apache/httpd.conf qui est donné en annexe à cette page contient les commentaires nécessaires pour sa comprenhension. Cependant voici quelques points de la configuration de votre serveur sur lequels j'attire votre attention.

4.2. Modifier l'emplacement des fichiers de mon serveur Apache

Par défaut, la racine de votre serveur Web se trouve dans le répertoire /var/www.

Si vous souhaitez modifier cet emplacement vous devez modifier la ligne DocumentRoot du fichier de configuration d'Apache /etc/apache/httpd.conf.

Cette ligne se trouve dans la section 2 du fichier de configuration.

### Section 2: 'Main' server configuration
...
DocumentRoot /var/www

4.3. Mettre un répertoire Web pour chaque utilisateur

Par défaut c'est le répertoire public_html du répertoire personnel de l'utilisateur qui est accessible à partir de l'adresse http://localhost/~user. Ainsi si votre machine comporte un compte cedric ce dernier pourra stocker ses pages html dans le répertoire :

/home/cedric/public_html

4.4. Prendre en compte les modifications

Si vous apportez des modifications au fichier de configuration, vous devez redémarrer le service pour que les changements soient pris en compte

# /etc/init.d/apache reload

4.5. Reconfigurer

Si vous souhaitez reconfigurer votre paquet à l'aide de debconf exécutez la commande :

# dpkg-reconfigure phpmyadmin

5. Utilisation

5.1. Accéder au site Web de votre machine :

http://localhost/

ImportantLe << / >> est important
 

Si vous oublier le << / >> à la fin de l'URL vous ne pourrez pas accéder au site !

5.2. Accéder au site personnel d'un utilisateur :

Pour accéder au site de l'utilisateur toto (si cet utilisateur a un répertoire qui lui permet de publier des fichiers à cet effet) :

http://localhost/~toto/

6. Désinstallation

# apt-get remove phpmyadmin

AstuceSupprimer toute trace du package précédement installé
 

Lorsque vous décidez de retirer un package de votre Debian GNU/Linux APT n'efface par les fichiers de configuration de ce package. Ceci permet de réinstaller plus rapidement la package. Cependant si vous souhaitez faire table rase et ne plus entendre parler du package, vous pouvez ajouter l'option --purge lors de la suppression.
# apt-get remove --purge <package>

Si vous souhaitez retirer tous les composants qui ont été installés par le paquet phpmadmin :

# apt-get remove apache apache-common libz2-1-0 libdc4.1 libexpat1 libmm13 libmysqlclient10 mine-support mysql-common php4 php4-mysql wwwconfig-common zlib1g

AstuceSupprimer toutes les dépendances d'un package précedement installé
 

Un package (père) a souvent besoin d'autres packages pour pouvoir fonctionner correctement. Ces nouveaux packages forment les dépendances du package père. Cependant d'autres packages peuvent avoir des dépendances similaires. Lorsque vous décidez de retirer tous les dépendances d'un package de votre Debian GNU/Linux vous risquez de rendre votre système instable. Pour ne pas avoir ce problème, vérifiez que la commande APT n'efface pas d'autres packages que ceux que vous avez spécifié. Comme dans l'exemple ci-dessous :
# apt-get remove apt
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
  apt apt-utils base-config
WARNING: The following essential packages will be removed
This should NOT be done unless you know exactly what you are doing!
  apt
0 packages upgraded, 0 newly installed, 3 to remove and 17  not upgraded.
Need to get 0B of archives. After unpacking 3183kB will be freed.
You are about to do something potentially harmful
To continue type in the phrase 'Yes, do as I say!'

7. Annexe : fichier de configuration

Voici un extrait commenté du fichier de configuration d'Apache /etc/apache/httpd.conf. Ne copiez-coller pas ce fichier à la place du vôtre car il est incomplet. Il est là juste pour vous permettre d'en comprendre le contenu. Les symboles [...] indiquent qu'un morceau du fichier est manquant !

## httpd.conf -- Apache HTTP server configuration file
## Elements les plus importants à connaître du fichier de configuration
## Par Cédric Lignier (guide_debian@yahoo.fr)

### Section 1: Environment global
#
# On configure ici le comportement du serveur Apache.
#

# ServerType :
#  * standalone : le serveur est autonomme
#  * inet : le serveur dépend du service inetd
  ServerType standalone

# ServerRoot: Emplacement des fichiers de configuration, d'erreurs et
# des différents journaux utilisés par Apache.
  ServerRoot /etc/apache

# PidFile: Fichier qui contient le numéro de processus lié au service
# apache lors celui ci démarre
  PidFile /var/run/apache.pid

# Timeout: Nombre de secondes avant que le serveur envoie un message
# indiquant que le délai pour obtenir la page que vous avez demandé est
# dépassé
  Timeout 300

# KeepAlive: 
#  * On : autorise les connexions persistantes. Une même
#         machine peut se connecter plusieurs fois sur le serveur.
#  * Off : n'autorise pas les connexions persistantes
#
  KeepAlive On

# MaxKeepAliveRequests: Nombre maximum de demandes durant une
# connexion persistante. Mettez 0 pour un nombre illimité de
# demandes. Il est recommandé de garder une grande valeur pour ce paramètre.
  MaxKeepAliveRequests 100

# KeepAliveTimeout: Nombre de secondes a attendre pour la prochaine
# demande du même client sur la même connexion.
  KeepAliveTimeout 15

# Apache lance plusieurs copies de son serveur. (plusieurs processus).
# Apache adapte dynamiquement le nombre de processus en fonction de la
# demande pour obtenir les meilleures performances.
# Apache fait cela en effectuant des tests périodiques pour connaître
# le nombre de serveurs qui sont en attente d'une requete. 
#  * Si il y en a moins que MinSpareServers, Apache en rajoute.
#  * Si il y en a plus que MaxSpareServers Apache en détruit.
# Les valeurs par défaut doivent convenir pour la plupart des sites.
  MinSpareServers 5
  MaxSpareServers 10

# Nombre de serveurs à lancer au démarrage d'Apache
  StartServers 5

# Limite le nombre de clients qui peuvent se connecter en même
# temps. C'est également le nombre de serveurs qui tournent sur la
# machine.
  MaxClients 150

# MaxRequestsPerChild: Nombre de demandes que chaque processus fils
# (crée par le processus Apache père) peut traiter avant que le
# processus fils ne soit détruit par le processus père
  MaxRequestsPerChild 100

# Listen: Autorise Apache à écouter d'autres adresses IP ou d'autres 
# port que le port et l'adresse IP par défaut.
  #Listen 3000
  #Listen 12.34.56.78:80

# Liste des modules à charger pour être utilisés avec le serveur Apache
  # LoadModule <module_name> <chemein_du_module>
  LoadModule php4_module /usr/lib/apache/1.3/libphp4.so

# ExtendedStatus:
#  * On : donne des informations détaillées sur le serveur
#  * Off : donne des informations de bases sur le serveur
# Lorsque l'on demande des informations sur le serveur Apache.
# La valeur par défaut est "Off"
<IfModule mod_status.c>
  ExtendedStatus On
<IfModule>


### Section 2: Configuration principale du serveur
#

#
# Port: Port sur lequel le serveur Apache écoute.
# Si le port est < 1023, Apache doit être executé en tant que root
  Port 80

# User/Group : nom (ou nombre) de l'utilisateur/groupe sur lequel on
# doit éxecuter le serveur Apache.
  User www-data
  Group www-data

# ServerAdmin: Adresse e-mail de la personne à contacter en cas de
# problèmes avec le serveur. Cette adresse apparait en particulier sur
# les pages d'erreurs générées par le serveur Apache.
  ServerAdmin webmaster@LINDEBIAN-SERVEUR

# ServerName: Adresse du serveur. C'est soit un adresse DNS ou
# l'adresse IP de votre machine le cas échéant.
  ServerName 192.168.0.1

# DocumentRoot: Répertoire qui contient les documents du serveur Web
  DocumentRoot /var/www

[...]

# UserDir: Nom du répertoire dans le répertoire personnel de
# l'utilisateur dans lequel trouver son site personel.
# Ce site est disponible par l'adresse http://<serveur_IP>/~user
<IfModule mod_userdir.c>
    UserDir public_html
</IfModule>

# Permissions sur les répertoires personnels des utilisateurs contenant
# des pages Web.
# Ci-dessous un exemple où les répertoires sont en lecture seule.
  <Directory /home/*/public_html>
      AllowOverride FileInfo AuthConfig Limit
      Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
      <Limit GET POST OPTIONS PROPFIND>
          Order allow,deny
          Allow from all
      </Limit>
      <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
          Order deny,allow
          Deny from all
      </Limit>
  </Directory>

# DirectoryIndex: Nom des fichiers à regarder dans un répertoire et
# considérés comme des pages HTML.
  <IfModule mod_dir.c>
      DirectoryIndex index.html index.php index.htm index.shtml index.cgi
  </IfModule>

# AccessFileName: Nom du fichier qui contient pour chaque répertoire
# les informations de restriction sur ce dernier.
  AccessFileName .htaccess

# Les lignes suivantes permettent d'interdire la consultation des
# fichier de permissions sur les répertoires (les fameux .htaccess)
# Si vous souhaitez que l'on puisse accéder à ces fichiers, vous devez
# décommenter les lignes ci-dessous
# Protégent également les fichiers de mots de passe (.htpasswd)
  <Files ~ "^\.ht">
      Order allow,deny
      Deny from all
  </Files>

# UseCanonicalName:
#  * On : Lorsque l'on clique sur un lien et que le serveur
#         doit délivrer l'adresse de ce lien, l'adresse est construite à partir
#         de nom du serveur et n'ont pas à partir de l'adresse d'appel de la
#         page (cf. adresse de redirection)
#  * Off : Desactive cette fonction.
  UseCanonicalName On

[...]

# HostnameLookups:
#  * On : enregistre la trace du client pas son nom (www.apache.ord)
#  * Off : enregistre la trace du client par son adresse IP
#          (204.62.129.132)
  HostnameLookups Off

# ErrorLog: Emplacement du journal d'erreur.
  ErrorLog /var/log/apache/error.log

# LogLevel: Niveau de message stocké dans le journal d'erreur.
# Les valeurs possibles sont : debug, info, notice, warn, error, crit,
# alert et emerg.
  LogLevel warn

[...]

# ServerSignature
#  * On : Indique qu'il faut afficher une ligne concernant le serveur (sa
#         version, l'adresse email de l'administrateur ServerAdmin...)
#         en bas des pages
#  * Off : desactive cette fonction
  ServerSignature On