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
Prochaine révision Les deux révisions suivantes
apache2 [Le 13/07/2018, 12:08]
krodelabestiole [Création d'hôtes virtuels] reformulation hosts
apache2 [Le 26/07/2018, 11:46]
krodelabestiole [Création d'hôtes virtuels] +lien vers tutoriel/lamp_repertoires_de_travail
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 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]]. 
 + 
 +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>​ 
 + 
 +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/''​.
  
-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 serveurchacun affichant un site différent.\\ +Chaque hôte virtuel peut être appelé en fonction ​d'un nom de domaine ou sous-domainec'est la configuration la plus couranteMais 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.
-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''​.+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 474: Ligne 490:
  
 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.txt
  • Dernière modification: Le 12/10/2023, 11:28
  • par krodelabestiole