Démarrage d'Apache

### Apache HTTP Server

# Démarrage d'Apache

- Démarrage d'Apache sur Windows
- Démarrage d'Apache sur Unix
  - Erreurs durant l'initialisation
  - Démarrage à l'initialisation du système
  - Informations complémentaires

## Démarrage d'Apache sur Windows

Sur Windows, Apache est normalement lancé en tant que service sur Windows NT, ou en tant qu'application en mode console sur Windows 95. Pour plus de détails, voir lancer Apache pour Windows.

## Démarrage d'Apache sur Unix

Sur Unix, le programme `httpd` est lancé en tant que démon qui s'exécute en tâche de fond pour traiter les requêtes. Il est possible d'invoquer Apache par le démon Internet `inetd` à chaque fois qu'une connexion au service HTTP est faite (if faut pour cela utiliser la directive ServerType) mais cela n'est pas recommandé.

Si le Port spécifié dans le fichier de configuration est le port par défaut 80 (ou tout autre port inérieur à 1024), il est alors nécessaire d'avoir les privilèges root pour lancer Apache. Une fois que l'initialisation du serveur s'est achevée ainsi que quelques activités préliminaires telles que l'ouverture des fichiers de trace, le serveur lance un certain nombre de processus fils ayant pour rôle d'attendre et de répondre aux requêtes des clients. Le processus père `httpd` continue à s'exécuter avec les privilèges root, mais les processus fils s'exécute sous un utilisateur avec moins de privilèges. Ceci est contrôlé par les directives de création de processus

La première chose qu'`httpd` fait lorsqu'il est appelé est de chercher et lire le fichier de configuration `httpd.conf`. L'emplacement de ce fichier est défini à la compilation, mais il est possible de spécifier son emplacement à l'exécution en utilisant l'option `-f`. Exemple :

> `/usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd.conf`

Comme alternative à l'appel direct de l'exécutable `httpd` un script appelé apachectl est fourni qui permet de contrôler le processus démon avec des commandes simples telles que `apachectl start` ou `apachectl stop`.

Si tout ce passe correctement durant l'initialisation, le serveur se détache du terminal et l'invite de commande réapparaît presque immédiatement. Ceci indique que le serveur est actif et s'exécute. Vous pouvez utiliser un navigateur pour vous connecter au serveur et voir la page de test située dans le répertoire DocumentRoot ainsi qu'une copie locale de la documentation à partir d'un lien de cette page.

### Erreurs durant l'initialisation

Si Apache rencontre un problème fatal durant l'initialisation, il écrira, avant de se terminer, un message décrivant le problème, soit sur la console, soit dans le fichier ErrorLog. Un des messages les plus courants est "`Unable to bind to Port ...`". Ce message est généralement dû à

- une tentative de lancer le serveur sur un port privilégié alors que vous n'êtes pas connecté comme utilisateur root, ou à
- une tentative de lancer le serveur alors qu'une autre instance d'Apache ou d'un autre serveur web est déjà connectée à ce port.

Pour plus d'informations sur la correction des problèmes, consultez la FAQ d'Apache.

### Démarrage à l'initialisation du système

Si vous souhaitez que votre serveur continue à s'exécuter après une relance du système, vous devez ajouter un appel à `httpd` ou `apachectl` dans votre fichier de lancement du système (généralement `rc.local` ou un fichier dans un répertoire `rc.N`). Ceci lancera Apache sous l'utilisateur root. Avant de le faire, vérifiez que votre serveur est correctement configuré en termes de sécurité et de restrictions d'accès. Le script `apachectl` est conçu de manière à ce qu'il soit directement lié comme script d'initialisation, mais assurez vous qu'il correspond aux besoins précis de votre système.

### Informations complémentaires

Des informations complémentaires sur les options en ligne de commande d'httpd et d'apachectl ainsi que des autres programmes d'assistance inclus avec le serveur, sont disponibles à la page Serveur et programmes d'assistance. Il existe également une documentation de tous les modules inclus dans la distribution Apache ainsi que les directives qu'ils fournissent.

### Apache HTTP Server