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 20/07/2018, 18:01] (Version actuelle)
krodelabestiole [Création d'hôtes virtuels] détails hosts
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 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 ====
Ligne 155: Ligne 159:
 <​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]].</​note>​
  
-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.\\ +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/''​.
-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ègleschaque ​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''​.+Chaque hôte virtuel peut être appelé en fonction d'un nom de domaine ou sous-domainec'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 186:
 | <​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 192:
 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