Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
apache2 [Le 20/11/2024, 10:22] bcag2 [Fichiers de configuration] apache2.conf <=> httpd.conf |
apache2 [Le 20/05/2025, 11:28] (Version actuelle) krodelabestiole [Attente puis erreur 503 "service indisponible"] lien restart |
||
---|---|---|---|
Ligne 25: | Ligne 25: | ||
===== Lancement ===== | ===== Lancement ===== | ||
- | Apache2 se lance automatiquement dès son installation, et se relance automatiquement à chaque démarrage. C'est l'idéal pour un serveur qui doit continuellement fournir du contenu en ligne, mais pour un serveur de test (on dit de //développement//) on peut éventuellement désirer un comportement différent. | + | Apache2 se lance automatiquement dès son installation, et se relance automatiquement à chaque démarrage. C'est l'idéal pour un serveur qui doit continuellement fournir du contenu en ligne, mais pour un serveur de test (on dit de //développement//) on pourrait désirer un comportement différent. |
==== Empêcher Apache de démarrer automatiquement ==== | ==== Empêcher Apache de démarrer automatiquement ==== | ||
Ligne 146: | Ligne 146: | ||
==== Création d'hôtes virtuels ==== | ==== Création d'hôtes virtuels ==== | ||
- | <note>Pour en savoir plus sur les hôtes virtuels d'Apache, référez-vous à la [[http://httpd.apache.org/docs/current/mod/core.html#virtualhost|documentation officielle]] et à ses [[https://httpd.apache.org/docs/current/fr/vhosts/examples.html|exemples]]. | + | <note>Pour en savoir plus sur les hôtes virtuels d'Apache, référez-vous à la [[http://httpd.apache.org/docs/current/fr/mod/core.html#virtualhost|documentation officielle]] et à ses [[https://httpd.apache.org/docs/current/fr/vhosts/examples.html|exemples]]. |
Vous trouverez également des exemples de création d'hôtes virtuels sous forme de tutoriels sur [[:tutoriel:lamp_repertoires_de_travail|cette page de la documentation.]]</note> | Vous trouverez également des exemples de création d'hôtes virtuels sous forme de tutoriels sur [[:tutoriel:lamp_repertoires_de_travail|cette page de la documentation.]]</note> | ||
Ligne 266: | Ligne 266: | ||
Les directives de chaque fichier ''.htaccess'' s'appliquent au répertoire dans lequel il se trouve, ainsi que tous ses descendants (sous-repertoires, sous-sous-repertoires, etc.). | Les directives de chaque fichier ''.htaccess'' s'appliquent au répertoire dans lequel il se trouve, ainsi que tous ses descendants (sous-repertoires, sous-sous-repertoires, etc.). | ||
- | C'est la directive **[[https://httpd.apache.org/docs/current/fr/mod/core.html#allowoverride|AllowOverride]]**, spécifiée dans une section ''<Directory>'' de l'[[#hotes_virtuels|hôte virtuel]] qui définit si les fichiers ''.htaccess'' doivent être pris en compte, ou pas, pour ce répertoire et ses descendants. Elle peut prendre les valeurs ''All'' (on autorises //toutes// les directives de configuration à être modifiées) ou ''None'' (aucune directives), ou une liste détaillée des directives dont on autorise la modifications. | + | C'est la directive ''[[https://httpd.apache.org/docs/current/fr/mod/core.html#allowoverride|AllowOverride]]'', spécifiée dans une section ''<Directory>'' de l'[[#hotes_virtuels|hôte virtuel]] qui définit si les fichiers ''.htaccess'' doivent être pris en compte, ou pas, pour ce répertoire et ses descendants. Elle peut prendre les valeurs ''All'' (on autorises //toutes// les directives de configuration à être modifiées) ou ''None'' (aucune directives), ou une liste détaillée des directives dont on autorise la modifications. |
<note tip>Ces fichiers sont très pratiques pour redéfinir des paramètres sur un serveur mutualisé à l'administration duquel on n'a pas accès, ou pour définir dynamiquement des règles spécifiques à certaines solutions web (comme la [[#mod_rewrite|réécriture d'URL]]).</note> | <note tip>Ces fichiers sont très pratiques pour redéfinir des paramètres sur un serveur mutualisé à l'administration duquel on n'a pas accès, ou pour définir dynamiquement des règles spécifiques à certaines solutions web (comme la [[#mod_rewrite|réécriture d'URL]]).</note> | ||
- | |||
- | Exemple de protection d'un répertoire et d'un fichier dans ce répertoire : | ||
- | <file - .htaccess> | ||
- | # la ligne ci-dessous va interdire (forbidden) l'accès au répertoire, mais l'accès à un fichier à la fois du répertoire reste autorisé | ||
- | RedirectMatch 403 ^/~images/?$ | ||
- | # la ligne ci-dessous va retourner (not found), on peut mettre aussi 403, mais il peut être intéressant que la personne qui tente l'accès (un robot de hacker par exemple) croit que le fichier n'existe pas ! | ||
- | RedirectMatch 404 ^/~images/fichier_à_protéger?$ | ||
- | </file> | ||
- | <note warning>L'exemple ci dessus est particulièrement mauvais et potentiellement risqué. Les accèss doivent être contrôlés par les modules idoines. Pour faire simple par la directive require. La peronne quei a rédigé cette doc lira avec attention [[https://httpd.apache.org/docs/2.4/howto/access.html|la doc officielle sur ce point]]. </note> | ||
===== Index ===== | ===== Index ===== | ||
Ligne 283: | Ligne 274: | ||
L'index est le contenu affiché par défaut par Apache lorsqu'on appelle un répertoire sans spécifier de [[:web#url|nom de page web]] particulière. | L'index est le contenu affiché par défaut par Apache lorsqu'on appelle un répertoire sans spécifier de [[:web#url|nom de page web]] particulière. | ||
- | L'index est définit par la directive **[[https://httpd.apache.org/docs/current/mod/mod_dir.html#directoryindex|DirectoryIndex]]** qui détermine quels fichiers Apache doit traiter par défaut. Chaque nom de fichier est séparé par un espace et listé par ordre de priorité.\\ | + | L'index est définit par la directive ''[[https://httpd.apache.org/docs/current/fr/mod/mod_dir.html#directoryindex|DirectoryIndex]]'' qui détermine quels fichiers Apache doit traiter par défaut. Chaque nom de fichier est séparé par un espace et listé par ordre de priorité.\\ |
Par défaut, ''DirectoryIndex'' a la valeur ''index.html index.cgi index.pl index.php index.xhtml index.htm''. | Par défaut, ''DirectoryIndex'' a la valeur ''index.html index.cgi index.pl index.php index.xhtml index.htm''. | ||
Si Apache ne trouve aucun des fichiers mentionnés par ''DirectoryIndex'', il essaie de récupérer une liste du contenu du répertoire, afin que le navigateur l'affiche de la même manière qu'un gestionnaire de fichier.\\ | Si Apache ne trouve aucun des fichiers mentionnés par ''DirectoryIndex'', il essaie de récupérer une liste du contenu du répertoire, afin que le navigateur l'affiche de la même manière qu'un gestionnaire de fichier.\\ | ||
- | On peut activer ou désactiver ce listing avec respectivement les directives **[[https://httpd.apache.org/docs/current/mod/core.html#options|Options +Indexes]]** ou **[[https://httpd.apache.org/docs/current/mod/core.html#options|Options -Indexes]]**.\\ | + | On peut activer ou désactiver ce listing avec respectivement les directives ''[[https://httpd.apache.org/docs/current/fr/mod/core.html#options|Options +Indexes]]'' ou ''[[https://httpd.apache.org/docs/current/fr/mod/core.html#options|Options -Indexes]]''.\\ |
Pour des raisons de sécurité, il est généralement préférable de laisser cette option désactivée. Dans ce cas, et faute de fichier index, c'est une erreur 403 qui s'affiche, car l'utilisateur n'a pas la permission de lister le contenu du répertoire. | Pour des raisons de sécurité, il est généralement préférable de laisser cette option désactivée. Dans ce cas, et faute de fichier index, c'est une erreur 403 qui s'affiche, car l'utilisateur n'a pas la permission de lister le contenu du répertoire. | ||
- | <note>Toutes ces directives peuvent être définies dans une section //[[#hotes_virtuels|<Directory>]]// ou dans un fichier //[[#.htaccess]]//.</note> | + | <note>Toutes ces directives peuvent être définies dans une section ''[[#hotes_virtuels|<Directory>]]'' ou dans un fichier ''[[#.htaccess]]''.</note> |
===== Modules ===== | ===== Modules ===== | ||
Ligne 340: | Ligne 331: | ||
# [L]=[last] signifie que si cette règle s'applique on n'en cherche pas d'autre</file> | # [L]=[last] signifie que si cette règle s'applique on n'en cherche pas d'autre</file> | ||
- | <note>On peut écrire ces règles de réécriture dans une section //[[#hotes_virtuels|<VirtualHost>]]// ou //[[#hotes_virtuels|<Directory>]]// (le comportement n'est pas le même), ou dans un fichier //[[#.htaccess]]//.</note> | + | <note>On peut écrire ces règles de réécriture dans une section ''[[#hotes_virtuels|<VirtualHost>]]'' ou ''[[#hotes_virtuels|<Directory>]]'' (le comportement n'est pas le même), ou dans un fichier //[[#.htaccess]]//.</note> |
- | <note important>N'oubliez pas de modifier le virtualhost en conséquence sinon les règles de réécriture .htaccess ne fonctionneront pas correctement. Voici un exemple de configuration qui marche : | + | <note important>N'oubliez pas de modifier le //virtualhost// en conséquence sinon les règles de réécriture ''.htaccess'' ne fonctionneront pas correctement. Voici un exemple de configuration qui marche : |
<code> | <code> | ||
<Directory /var/www/html> | <Directory /var/www/html> | ||
Ligne 493: | Ligne 484: | ||
* Vérifiez les [[#permissions]] concernant les fichiers du contenu web que vous souhaitez partager vis-à-vis de l'utilisateur et du groupe //www-data//. | * Vérifiez les [[#permissions]] concernant les fichiers du contenu web que vous souhaitez partager vis-à-vis de l'utilisateur et du groupe //www-data//. | ||
- | * Vérifiez aussi la valeur de la directive [[https://httpd.apache.org/docs/current/fr/howto/access.html|Require]] : ''Require all granted'' pour toujours autoriser l'accès aux ressources. | + | * Vérifiez aussi la valeur de la directive ''[[https://httpd.apache.org/docs/current/fr/howto/access.html|Require]]'' : ''Require all granted'' pour toujours autoriser l'accès aux ressources. |
* Il est aussi possible que cette erreur soit affichée faute de fichier [[#index]]. | * Il est aussi possible que cette erreur soit affichée faute de fichier [[#index]]. | ||
Ligne 500: | Ligne 491: | ||
Cette erreur indique que le contenu demandé n'a pas été trouvé. | Cette erreur indique que le contenu demandé n'a pas été trouvé. | ||
* En premier lieu vérifiez évidemment l'existence des contenus concernés. | * En premier lieu vérifiez évidemment l'existence des contenus concernés. | ||
- | * Le chemin vers ce contenu sur l'espace disque, relatif à la directive //[[#hotes_virtuels|DocumentRoot]]//, doit correspondre au [[:web#url|chemin de l'URL]] appelée. | + | * Le chemin vers ce contenu sur l'espace disque, relatif à la directive ''[[#hotes_virtuels|DocumentRoot]]'', doit correspondre au [[:web#url|chemin de l'URL]] appelée. |
* L'erreur peut aussi être due à une mauvaise [[#mod_rewrite|réécriture d'URL]]. | * L'erreur peut aussi être due à une mauvaise [[#mod_rewrite|réécriture d'URL]]. | ||
Ligne 507: | Ligne 498: | ||
Il s'agit d'une erreur fatale du serveur, qui peut être par exemple liée à une erreur de syntaxe dans un fichier [[#.htaccess]]. | Il s'agit d'une erreur fatale du serveur, qui peut être par exemple liée à une erreur de syntaxe dans un fichier [[#.htaccess]]. | ||
- | Consultez le log d'erreur de votre hôte virtuel pour en savoir plus. | + | Consultez le [[#problemes_courants|log d'erreur]] de votre hôte virtuel pour en savoir plus. |
==== Attente puis erreur 503 "service indisponible" ==== | ==== Attente puis erreur 503 "service indisponible" ==== | ||
Cette erreur indique que le serveur HTTP est dans les choux. Le service existe mais prend apparemment un temps interminable à répondre.\\ | Cette erreur indique que le serveur HTTP est dans les choux. Le service existe mais prend apparemment un temps interminable à répondre.\\ | ||
- | * En premier lieu redémarrez Apache. | + | * En premier lieu [[#autres_commandes_utiles|redémarrez Apache]]. |
* Si le problème se pose toujours, cela peut par exemple être dû au fait qu'un script (par ex. [[:PHP]]) entre dans une boucle infinie. En plus de surcharger le processeur, ce problème ne générera pas de message d'erreur ce qui en fait malheureusement un problème particulièrement compliqué à débugger. Si votre [[:CMS]] ou application web utilise un système de cache, vous pouvez essayez de le vider et de le désactiver. Puis essayez de désinstaller les plugins installés récemment, défaire les modifications récentes ou restaurer une sauvegarde de votre application. | * Si le problème se pose toujours, cela peut par exemple être dû au fait qu'un script (par ex. [[:PHP]]) entre dans une boucle infinie. En plus de surcharger le processeur, ce problème ne générera pas de message d'erreur ce qui en fait malheureusement un problème particulièrement compliqué à débugger. Si votre [[:CMS]] ou application web utilise un système de cache, vous pouvez essayez de le vider et de le désactiver. Puis essayez de désinstaller les plugins installés récemment, défaire les modifications récentes ou restaurer une sauvegarde de votre application. | ||
Ligne 531: | Ligne 522: | ||
* (en) [[https://apache.org/|Site officiel du projet Apache]] | * (en) [[https://apache.org/|Site officiel du projet Apache]] | ||
- | * [[https://httpd.apache.org/docs/current/|Documentation Apache officielle en français]] | + | * [[https://httpd.apache.org/docs/current/fr/|Documentation Apache officielle en français]] |
* [[tutoriel/securiser_apache2_avec_ssl|Sécuriser Apache 2 avec SSL]] | * [[tutoriel/securiser_apache2_avec_ssl|Sécuriser Apache 2 avec SSL]] | ||
* [[:lamp|installer un serveur LAMP]] | * [[:lamp|installer un serveur LAMP]] |