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 13/07/2018, 09:36]
krodelabestiole [Par défaut] +note éviter modif les virtualhosts par défaut
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 :
  
 <file - example.com.conf><​VirtualHost *:80> <file - example.com.conf><​VirtualHost *:80>
- DocumentRoot "/​var/​www/​example"​ 
  ServerName example.com  ServerName example.com
  ServerAlias www.example.com  ServerAlias www.example.com
 + DocumentRoot "/​var/​www/​example"​
  <​Directory "/​var/​www/​example">​  <​Directory "/​var/​www/​example">​
  Options +FollowSymLinks  Options +FollowSymLinks
Ligne 177: Ligne 182:
 ^ directive ^ description ^ ^ directive ^ description ^
 | <​file><​VirtualHost *:​80></​file>​ | On accepte les connections sur n'​importe quelle IP du serveur (''​*''​) sur le port 80. | | <​file><​VirtualHost *:​80></​file>​ | On accepte les connections sur n'​importe quelle IP du serveur (''​*''​) sur le port 80. |
-| <​file>​DocumentRoot "/​var/​www/​example"</​file>​ | On placera les fichiers du site dans le répertoire ''/​var/​www/​example''​. | 
 | <​file>​ServerName example.com</​file>​ | Cet hôte virtuel sera seulement appelé pour le nom de domaine //​example.com//​... | | <​file>​ServerName example.com</​file>​ | Cet hôte virtuel sera seulement appelé pour le nom de domaine //​example.com//​... |
-| <​file>​ServerAlias ​<​nowiki>​www.example.com</​nowiki>​</​file>​ | ...ainsi que pour le sous-domaine //<​nowiki>​www.example.com</​nowiki>//​. On peut spécifier ici d'​autres noms de domaine en les séparant par un espace. On peut aussi utiliser //​*.example.com//​ pour inclure tous les sous-domaines. |+| <​file>​ServerAlias www.example.com</​file>​ | ...ainsi que pour le sous-domaine //<​nowiki>​www.example.com</​nowiki>//​. On peut spécifier ici d'​autres noms de domaine en les séparant par un espace. On peut aussi utiliser //​*.example.com//​ pour inclure tous les sous-domaines. | 
 +| <​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''​. |
 | <​file>​ErrorLog /​var/​log/​apache2/​error.example.com.log | <​file>​ErrorLog /​var/​log/​apache2/​error.example.com.log
-CustomLog /​var/​log/​apache2/​access.example.com.log combined</​file>​ | Il est important ​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 exploiter cette fonctionnalité ​par nom de domaine même sans avoir de nom de domaine enregistré chez un registrar ​: il suffit de résoudre l'​IP ​de n'​importe quel domaine ​dans le fichier ''/​etc/​hosts'' ​du côté client :+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 : 
 +<​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 à 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 ​lorsqu'​on développe ​de nombreux projets ​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>​
  
 ===== HTTPS ===== ===== HTTPS =====
Ligne 444: Ligne 459:
 <​code>​sudo tail /​var/​log/​apache2/​error.log -n 40</​code></​note>​ <​code>​sudo tail /​var/​log/​apache2/​error.log -n 40</​code></​note>​
  
-<note tip>Si rencontrez un problème avec PHP, consultez également les [[:​php#​problemes_courants|problèmes courants spécifiques à PHP]].</​note>​+<note tip>​Si ​vous rencontrez un problème avec PHP, consultez également les [[:​php#​problemes_courants|problèmes courants spécifiques à PHP]].</​note>​
  
 ==== Page blanche ==== ==== Page blanche ====
Ligne 473: Ligne 488:
  
 Consultez le log d'​erreur de votre hôte virtuel pour en savoir plus. Consultez le log d'​erreur de votre hôte virtuel pour en savoir plus.
 +
 +==== 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.\\
 +  * 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 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.1531467368.txt.gz
  • Dernière modification: Le 13/07/2018, 09:36
  • par krodelabestiole