Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
apache2 [Le 14/07/2018, 12:21]
krodelabestiole déplacement erreur 503 depuis la page PHP
apache2 [Le 26/07/2018, 17:54] (Version actuelle)
krodelabestiole [Par défaut] reformulation IP *:80
Ligne 27: Ligne 27:
 ===== Lancement ===== ===== Lancement =====
  
-Apache 2 se lance par défaut dès son installation,​ et se relance automatiquement à chaque démarrage.+Apache 2 se lance par défaut 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.
  
 ==== Empêcher Apache de démarrer automatiquement ​ ==== ==== Empêcher Apache de démarrer automatiquement ​ ====
Ligne 119: Ligne 119:
 ===== Hôtes virtuels ===== ===== Hôtes virtuels =====
  
-Sur Apache, chaque site ou service ​correspond en principe à un hôte virtuel (//​**[[https://​httpd.apache.org/​docs/​current/​fr/​vhosts/​examples.html|VirtualHost]]**//​ en anglais).+Avec Apache, chaque site ou application web correspond en principe à un hôte virtuel (//​**[[https://​httpd.apache.org/​docs/​current/​fr/​vhosts/​examples.html|VirtualHost]]**//​ en anglais)
 + 
 +Chaque hôte virtuel est défini par un fichier de configuration indépendant,​ qu'on trouve ou qu'on créé dans le répertoire ''/​etc/​apache2/​sites-available/''​.
  
 ==== Par défaut ==== ==== Par défaut ====
Ligne 126: Ligne 128:
  
 <note important>​ <note important>​
 +Ce chapitre est ici à titre d'​information.\\ ​
 Il n'est a priori pas nécessaire de modifier les fichiers existant par défaut. Chaque site ou service devrait correspondre à un hôte virtuel unique, définit dans un fichier indépendant (voir [[#​creation_d_hotes_virtuels|création d'​hôtes virtuels]]).\\ ​ Il n'est a priori pas nécessaire de modifier les fichiers existant par défaut. Chaque site ou service devrait correspondre à un hôte virtuel unique, définit dans un fichier indépendant (voir [[#​creation_d_hotes_virtuels|création d'​hôtes virtuels]]).\\ ​
 De plus ces fichiers existant par défaut peuvent éventuellement être écrasés lors de mises à jour majeures du système. De plus ces fichiers existant par défaut peuvent éventuellement être écrasés lors de mises à jour majeures du système.
 </​note>​ </​note>​
  
-Le premier //​VirtualHost//​ est défini dans le fichier ''/​etc/​apache2/​sites-available/​000-default.conf''​ :+Le premier //​VirtualHost//​ est défini dans le fichier ''/​etc/​apache2/​sites-available/​000-default.conf''​. Voici son contenu sans les commentaires ​:
  
 <file - 000-default.conf><​VirtualHost *:80> <file - 000-default.conf><​VirtualHost *:80>
Ligne 140: Ligne 143:
  
 ^ directive ^ description ^ ^ directive ^ description ^
-| <​file><​VirtualHost *:​80></​file>​ | On déclare l'​hôte virtuel, il doit répondre ​à toutes les adresses IP qui s'​adressent à lui (*) sur le port 80. On peut ici éventuellement spécifier une adresse IP unique à laquelle répondra Apache pour un hôte virtuel donné (dans le cas ou le serveur possède plusieurs adresses IP), ou choisir ​d'​écouter ​un port exotique. |+| <​file><​VirtualHost *:​80></​file>​ | On déclare l'​hôte virtuel. Il doit répondre ​aux requêtes ​qui s'​adressent à toutes les adresses IP (''​*''​du serveur ​sur le port 80. On peut ici éventuellement spécifier une adresse IP unique à laquelle répondra Apache pour un hôte virtuel donné (dans le cas ou le serveur possède plusieurs adresses IP), ou choisir ​de répondre au port 443 (pour [[#HTTPS]]) ou à un port exotique ​(à condition de [[#​configuration_des_ports_d_ecoute|l'​écouter]]). |
 | <​file>​ServerAdmin webmaster@localhost</​file>​ | C'est le courriel de l'​administrateur système. Cette directive n'est ni très utile, ni indispensable. | | <​file>​ServerAdmin webmaster@localhost</​file>​ | C'est le courriel de l'​administrateur système. Cette directive n'est ni très utile, ni indispensable. |
 | <​file>​DocumentRoot /​var/​www/​html</​file>​ | C'est le chemin absolu vers l'​emplacement local (sur l'​espace disque du serveur) qui sera la racine de l'​hôte. Apache recherche en premier un fichier ''​index.html''​ ou ''​index.php''​ à afficher par défaut à l'​emplacement spécifié. On constate que c'est donc bien cet hôte virtuel qui affiche le message //It Works!// contenu dans le fichier ''/​var/​www/​html/​index.html''​. | | <​file>​DocumentRoot /​var/​www/​html</​file>​ | C'est le chemin absolu vers l'​emplacement local (sur l'​espace disque du serveur) qui sera la racine de l'​hôte. Apache recherche en premier un fichier ''​index.html''​ ou ''​index.php''​ à afficher par défaut à l'​emplacement spécifié. On constate que c'est donc bien cet hôte virtuel qui affiche le message //It Works!// contenu dans le fichier ''/​var/​www/​html/​index.html''​. |
Ligne 149: Ligne 152:
 Le second //​VirtualHost//​ est défini dans le fichier ''/​etc/​apache2/​sites-available/​default-ssl.conf''​ et contient une configuration par défaut pour HTTPS. Il écoute donc sur le port 443 et énonce des directives spécifiques à l'​usage de SSL. La racine de l'​hôte (directive ''​DocumentRoot''​) correspond également à ''/​var/​www/​html''​. Le second //​VirtualHost//​ est défini dans le fichier ''/​etc/​apache2/​sites-available/​default-ssl.conf''​ et contient une configuration par défaut pour HTTPS. Il écoute donc sur le port 443 et énonce des directives spécifiques à l'​usage de SSL. La racine de l'​hôte (directive ''​DocumentRoot''​) correspond également à ''/​var/​www/​html''​.
  
-<note tip>On remarque donc ici que si on a un seul site à mettre en place, on peut déjà le rendre disponible simplement en le déployant dans le répertoire ''/​var/​www/​html''​ : par défaut Apache affichera la page d'​accueil qui doit en principe être écrite dans un fichier ''​index.html''​ ou générée par un script ''​index.php''​ (voir [[#​index]]).</​note>​+<note tip>On remarque donc ici que si on a un seul site simple ​à mettre en place, on peut déjà ​éventuellement ​le rendre disponible simplement en le déployant dans le répertoire ''/​var/​www/​html''​ : par défaut Apache affichera la page d'​accueil qui doit en principe être écrite dans un fichier ''​index.html''​ ou générée par un script ''​index.php''​ (voir [[#index]]).\\ 
 +Cependant il est plutôt conseillé de créer un nouvel hôte virtuel dans un nouveau fichier, même pour un seul site.</​note>​
  
 ==== 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>​+<​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]].
  
-Une configuration courante pour un serveur web mettant à disposition plusieurs sites internet, est d'avoir plusieurs noms de domaine (ou sous-domaines) pointant ​sur le serveur, chacun affichant un site différent.\\ +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>​
-Pour mettre en place cette configuration il faut donc créer un hôte virtuel par nom de domaine ou sous-domaine.+
  
-Pour faire les choses ​dans les règles, ​chaque hôte virtuel ​doit avoir son fichier de configuration dédié. Pour s'y repérer on peut le nommer par le nom de domaine auquel il correspond, suivi de l'​extension ''​.conf''​. Pour un nom de domaine //​example.com//​ on créera donc un fichier ''/​etc/​apache2/​sites-available/​example.com.conf''​.+Apache recommande de créer un fichier de configuration ​dans lequel est défini un hôte virtuel pour chaque ​site ou application web dans le répertoire ''/​etc/​apache2/​sites-available/''​. 
 + 
 +Chaque ​hôte virtuel ​peut être appelé en fonction d'un nom de domaine ou sous-domaine,​ c'est la configuration la plus courante. Mais on peut également définir un numéro de port particulier,​ ou une adresse IP particulière (si le serveur en possède plusieurs) pour laquelle on affichera tel ou tel contenu web. 
 + 
 +Chaque hôte virtuel ayant son fichier de configuration dédié, pour s'y repérer on peut le nommer par le nom de domaine auquel il correspond, suivi de l'​extension ''​.conf''​. Pour un nom de domaine //​example.com//​ on créera donc un fichier ''/​etc/​apache2/​sites-available/​example.com.conf''​.
  
 Voici un exemple de contenu pour ce fichier : Voici un exemple de contenu pour ce fichier :
Ligne 181: Ligne 188:
 | <​file>​DocumentRoot "/​var/​www/​example"</​file>​ | On placera les fichiers du site dans le répertoire ''/​var/​www/​example''​. | | <​file>​DocumentRoot "/​var/​www/​example"</​file>​ | On placera les fichiers du site dans le répertoire ''/​var/​www/​example''​. |
 | <​file><​Directory "/​var/​www/​example"></​file>​ | On spécifie dans cette section des règles pour le répertoire ''/​var/​www/​example''​ sous cet hôte virtuel. | | <​file><​Directory "/​var/​www/​example"></​file>​ | On spécifie dans cette section des règles pour le répertoire ''/​var/​www/​example''​ sous cet hôte virtuel. |
-| <​file>​Options +FollowSymLinks</​file>​ | Apache suivra les liens symboliques qu'il trouvera dans ce répertoire (et ses descendants). |+| <​file>​Options +FollowSymLinks</​file>​ | Apache suivra les [[:​lien_physique_et_symbolique|liens symboliques]] qu'il trouvera dans ce répertoire (et ses descendants). |
 | <​file>​AllowOverride all</​file>​ | On pourra inclure une configuration personnalisée via un fichier [[#​.htaccess]]. | | <​file>​AllowOverride all</​file>​ | On pourra inclure une configuration personnalisée via un fichier [[#​.htaccess]]. |
 | <​file>​Require all granted</​file>​ | Tous les visiteurs pourront accéder au contenu de ce répertoire. Voir la [[https://​httpd.apache.org/​docs/​current/​fr/​mod/​mod_authz_core.html#​require|documentation officielle]] pour modifier ce comportement. Pour des raisons de sécurité ou de privacité on peut par exemple limiter l'​accès au serveur à seulement une ou certaines adresses IP avec une directive du type ''​Require ip 192.168.1.10''​. | | <​file>​Require all granted</​file>​ | Tous les visiteurs pourront accéder au contenu de ce répertoire. Voir la [[https://​httpd.apache.org/​docs/​current/​fr/​mod/​mod_authz_core.html#​require|documentation officielle]] pour modifier ce comportement. Pour des raisons de sécurité ou de privacité on peut par exemple limiter l'​accès au serveur à seulement une ou certaines adresses IP avec une directive du type ''​Require ip 192.168.1.10''​. |
Ligne 187: Ligne 194:
 CustomLog /​var/​log/​apache2/​access.example.com.log combined</​file>​ | Il est pratique d'​avoir des logs séparés pour chaque hôte virtuel, afin de ne pas mélanger toutes les informations. | CustomLog /​var/​log/​apache2/​access.example.com.log combined</​file>​ | Il est pratique d'​avoir des logs séparés pour chaque hôte virtuel, afin de ne pas mélanger toutes les informations. |
  
-<note tip>On peut définir un hôte virtuel par un nom de domaine même sans avoir de nom de domaine enregistré chez un registrar.\\  +Après avoir l'​avoir créée, il faut activer cette configuration avec la commande ''​sudo a2ensite [nom du fichier sans son extension]''​. Par exemple : 
-Il suffit de résoudre l'IP du serveur pour un domaine fictif ​dans le fichier ''/​etc/​hosts'' ​du côté client :+<​code>​sudo a2ensite example.com</​code>​ 
 +On recharge ensuite la configuration d'​Apache : 
 +<​code>​sudo systemctl reload apache2</​code>​ 
 + 
 +<note tip>On peut définir un hôte virtuel par un nom de domaine même sans avoir de nom de domaine enregistré chez un registrar. 
 + 
 +Il faut dans ce cas résoudre l'IP du serveur pour un domaine fictif ​côté client. Cela se fait en [[:​tutoriel:​comment_modifier_un_fichier|éditant ​le fichier]] ''/​etc/​hosts''​ côté client ​avec les [[:​sudo|droits d'​administration]] pour y ajouter la ligne :
 <file - hosts>​127.0.0.1 example</​file>​ <file - hosts>​127.0.0.1 example</​file>​
-Avec la directive ''​ServerName example'',​ l'​hôte virtuel sera accessible depuis ce client à l'​adresse [[http://​example/​]].+où ''​127.0.0.1''​ est l'​adresse IP du serveur (locale dans ce cas) et ''​example''​ est le nom de domaine choisi.\\ 
 +(Voir la [[:​hosts|documentation concernant le fichier hosts]]) 
 + 
 +Avec la directive ''​ServerName example'' ​dans le //​VirtualHost//​, l'​hôte virtuel sera accessible depuis ce client à l'​adresse [[http://​example/​]].
  
 Cela peut être très pratique en phase de développement sur une machine ou un réseau local, par exemple.</​note>​ Cela peut être très pratique en phase de développement sur une machine ou un réseau local, par exemple.</​note>​
Ligne 478: Ligne 494:
  
 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 ​le serveur HTTP+  * En premier lieu 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 ​essayer ​de le vider et de le désactiver. Puis essayer ​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.
  
 ==== Fichiers introuvables dans /javascript ==== ==== Fichiers introuvables dans /javascript ====
  • apache2.1531563687.txt.gz
  • Dernière modification: Le 14/07/2018, 12:21
  • par krodelabestiole
  • Actuellement bloqué par: 90.49.148.6,10.42.2.254