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:30]
krodelabestiole [Attente puis erreur 503 service indisponible] ortho + liens
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>​
  • apache2.1531564220.txt.gz
  • Dernière modification: Le 14/07/2018, 12:30
  • par krodelabestiole