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 11/03/2018, 10:49]
bruno [Sécuriser Apache]
apache2 [Le 09/09/2024, 13:38] (Version actuelle)
krodelabestiole [Mode de fonctionnement sommaire]
Ligne 1: Ligne 1:
-{{tag>​réseau serveur ​tutoriel BROUILLON vétuste}}+{{tag>​réseau serveur ​internet Focal}} 
 +{{ :​logo:​apache-logo.png?​80nolink| Logo du logiciel Apache 2}}
  
----- 
-{{ apache_logo.png?​80nolink| Logo du logiciel Apache 2}} 
 ====== Serveur HTTP Apache 2 ====== ====== Serveur HTTP Apache 2 ======
  
-**Apache** ​ est l'un des serveurs web les plus utilisés. Il est produit par la « Apache Software Foundation ​». C'est un logiciel libre fourni sous la [[wpfr>​Licence_Apache|licence spécifique Apache]], [[http://​www.apache.org/​licenses/​|licence (en)]]. +Un [[wpfr>​Serveur_HTTP|serveur HTTP]] permet à un site web de communiquer avec un navigateur en utilisant le protocole [[wpfr>​Hypertext_Transfer_Protocol|HTTP(S)]] et ses extensions ([[wpfr>​WebDAV|WebDAV]],​ etc.). ​**Apache** est probablement le serveur HTTP le plus populaire. C'est donc lui qui met à disposition la plupart ​des sites Web du [[wpfr>​World_Wide_Web|WWW]].\\ 
- +Il est produit par la //Apache Software Foundation//. C'est un logiciel libre fourni sous la [[wpfr>​Licence_Apache|licence spécifique Apache]].
- +
-Les références à prendre en compte pour comprendre la configuration d'​Apache,​ sont [[https://​httpd.apache.org/​docs/​current/​fr/​|la documentation officielle]] et les ressources présentes sur votre système : /​usr/​share/​doc/​apache2/​README.Debian.gz notamment ainsi que les pages de manuel. +
  
-===== Pré-requis =====+On utilise généralement Apache en conjonction avec d'​autres logiciels, permettant d'​interpréter du code et d'​accéder à des bases de données. Le cas le plus courant est celui d'un serveur [[:LAMP]] (Linux Apache MySQL PHP).
  
-  * Quelques connaissances ​de base des protocoles HTTPles noms de domaine et le DNS  et les réseaux IP ; +<note important>​Avant ​de vous lancer dans l'​utilisation d'​Apache et si ce ne sont pas des choses claires pour vousn'hésitez pas à consulter ​la documentation concernant [[:web|le Web et le protocole HTTP]].
-  * Un réseau local en état de marche (IP attribuées,​ connexion à l'Internet) ; +
-  * Un nom de domaine pleinement qualifié (ou à défaut ​la possibilité de gérer un pseudo domaine localement).+
  
 +Les références à prendre en compte pour comprendre la configuration d'​Apache,​ sont [[https://​httpd.apache.org/​docs/​current/​fr/​|la documentation officielle]],​ les ressources présentes sur votre système, notamment ''/​usr/​share/​doc/​apache2/​README.Debian.gz'',​ ainsi que les pages de manuel.</​note>​
  
 ===== Installation ===== ===== Installation =====
  
-====Installation de base====+Pour installer Apache seul, [[:​tutoriel:​comment_installer_un_paquet|installez simplement le paquet]] **[[apt>​apache2]]**.
  
-[[:tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​apache2|apache2]]**.+Pour installer Apache avec PHP et MySQL ou MariaDB, reportez vous à l'[[:lamp#​installation|installation de LAMP]].
  
-À la suite de cette installation votre serveur doit fonctionner et être accessible à l'​adresse ​suivante ​[[http://​localhost]] (à partir de la même machine).+À la suite de cette installation votre serveur doit fonctionner et être accessible à l'​adresse [[http://​localhost]] (à partir de la même machine).
  
-Un beau message ​va s'​afficher dans votre navigateur ​ **It Works**, c'est le contenu du fichier ​**/​var/​www/​html/​index.html** (configuration ​par défaut)+Un message ​//It Works!// devrait ​s'​afficher dans votre navigateur. Il s'agit du contenu du fichier ​''​/​var/​www/​html/​index.html''​ qui est affiché ​par défaut.
  
-Si vous voulez installer une pile LAMP complète consultez [[:lamp|la page LAMP]]+===== Lancement =====
  
 +Apache2 se lance automatiquement 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 ​ ====
  
 +Pour empêcher cela :
 +<​code>​sudo systemctl disable apache2</​code>​
 +==== Réactiver le démarrage automatique ====
  
 +Pour de nouveau relancer Apache automatiquement au démarrage de la machine, c'est simple :
 +<​code>​sudo systemctl enable apache2</​code>​
  
 +==== Autres commandes utiles ====
  
 +  * Pour arrêter apache2 : ''​sudo systemctl stop apache2''​
 +  * Pour lancer apache2 : ''​sudo systemctl start apache2''​
 +  * Pour relancer apache2 : ''​sudo systemctl restart apache2''​
 +  * Pour recharger la configuration d'​apache2 : ''​sudo systemctl reload apache2''​
 +  * Pour voir la version d'​Apache utilisée : ''​sudo apache2ctl -v''​ ou ''​a2query -v''​
 +  * Pour tester l'​ensemble de la configuration d'​Apache : ''​sudo apache2ctl -t''​
 +  * Pour lister les hôtes virtuels chargés : ''​a2query -s''​
 +  * Pour lister les hôtes virtuels chargés et leurs configurations : ''​sudo apache2ctl -S''​
 +  * Pour tester la configuration des hôtes virtuels : ''​sudo apache2ctl -t -D DUMP_VHOSTS''​
 +  * Pour voir les modules d'​Apache chargés : ''​sudo apache2ctl -M''​ ou ''​a2query -m''​
  
-===== Configuration ​=====+===== Mode de fonctionnement sommaire ​=====
  
 +Lorsqu'​il démarre, Apache charge les fichiers de configuration et se met en attente de requêtes sur les interfaces réseaux. On dit qu'il écoute (//listen// en anglais) certains ports.
  
-==== Les fichiers ​de configuration ​====+Lorsqu'​on utilise un navigateur web, que l'on clique sur un lien ou que l'on saisit directement une [[web#​url|URL]] dans la barre d'​adresse,​ on effectue une requête : 
 +  * le navigateur résout le nom de domaine (il obtient l'​adresse IP du serveur) 
 +  * il envoie une requête à l'​adresse IP du serveur sur le port 80 (HTTP) ou 443 (HTTPS) pour lui demander de retourner un contenu particulier 
 +  * le serveur HTTP reçoit la requête, et en fonction de divers paramètres (URL appelée, ​configuration ​du serveur, etc.), va chercher un contenu dans un fichier ou lance un script qui va générer un contenu 
 +  * le serveur renvoie ce contenu à l'​adresse IP du navigateur 
 +  * le navigateur traite le contenu et le rend accessible à l'​internaute (en l'​affichant à l'​écran par ex.).
  
- Tous les **fichiers de configuration** de Apache2 sont dans le dossier **/​etc/​apache2**.\\ +Voilà comment fonctionne (grossièrement ;-) ) un serveur web.
- ​Rendez-vous dans le répertoire /​etc/​apache2/,​ et regardez les fichiers le composant : +
-  apache2.conf  ports.conf ​  ​envvars ​  ​mods-available ​ mods-enabled ​ conf-available conf-enabled sites-available ​ sites-enabled+
  
-La plupart ​de ces fichiers sont plus ou moins spécifiques à Debian/​Ubuntu et nous permettent de séparer la configuration ​en plusieurs parties.+===== Fichiers ​de configuration ​=====
  
-  * **envvars** est utilisé pour définir des variables d'​environnement propres à Apache ​+Un seul serveur ​Apache ​permet de déployer simultanément plusieurs sites et services qu'il faut configurer individuellement.\\ 
-  * **ports.conf** contient la directive //listen// qui spécifie les adresses ​et les ports d'écoute ; +Pour plus de clarté, la configuration ​d'Apache2 ​est morcelée. Toutefois, ​tous les fichiers de configuration ​se situent dans le répertoire ''/​etc/apache2'' :
-  * **apache2.conf** est le fichier principal ​de configuration ​c'​est ​à partir de lui que tous les autres ​fichiers ​sont chargés ; +
-  * **conf-available** contient un ensemble d'​éléments ​de configuration ​globale (charset, security, ​etc.) ; +
-  * **conf-enabled** contient les éléments ​ de configuration globale activés ; +
-  * **mods-available** contient la liste des modules d'apache installés ; +
-  * **mods-enabled** celle des modules activées ; +
-  * **sites-available** contient la liste des hôtes virtuels installés ; +
-  * **sites-enabled** celle des hôtes virtuels activées. ​+
  
-<note important>​Normalement ​les fichiers de configuration ​globale apache2.conf,​ envars et ports.conf n'ont pas à être modifiés. Toute la configuration devrait se faire dans les sous dossiers xxx-available.</​note>​+  * ''​sites-available''​ contient ​les fichiers de configuration ​des **sites** disponibles 
 +  * ''​sites-enabled''​ contient des [[:​lien_physique_et_symbolique|liens symboliques]] vers les configurations,​ dans ''​site-available'',​ des sites activés ​
  
-Les dossiers xxx-available ​contiennent ​les éléments ​de configuration **disponibles**. Les dossiers xxx-enabled ​contiennent les éléments de configurations **activés** sous forme de liens symboliques ​pointant ​vers les fichiers correspondant ​dans le dossier xxx-available.+  * ''​conf-available''​ contient ​les fichiers ​de configuration ​des **autres services** disponibles 
 +  ​''​conf-enabled''​ contient des [[:​lien_physique_et_symbolique|liens symboliques]] vers les configurations, ​dans ''​conf-available'',​ des autres services activés
  
-Il est fortement déconseillé d'intervenir dans les dossiers xx-enabled. Les fichiers doivent être crées ou modifiés dans les dossiers xxx-available ​et les configurations activées ou désactivées comme suit :+  * ''​mods-available''​ contient ​les fichiers de configuration des **modules** d'​Apache disponibles 
 +  * ''​mods-enabled''​ contient des [[:​lien_physique_et_symbolique|liens symboliques]] vers les configurations,​ dans ''​mods-available'',​ des modules activés
  
-<code>sudo a2enconf charset.conf</​code>​ +<note important>Normalement les fichiers ​de configuration globale ​''​apache2.conf'',​ ''​envars''​ et ''​ports.conf''​ n'ont pas à être modifiés.
-<​code>​sudo a2disconf charset.conf</​code>​ +
-pour activer ou désactiver un élément ​de configuration globale+
-<​code>​sudo a2enmod rewrite</​code>​ +
-<​code>​sudo a2dismod rewrite</​code>​ +
-pour activer ou désactiver un module Apache. +
-<​code>​sudo a2enconf monhote.conf</​code>​ +
-<​code>​sudo a2disconf monhote.conf</​code>​ +
-pour activer ou désactiver un hôte virtuel.+
  
-==== Configuration des interfaces ====+Ces fichiers généraux sont susceptibles d'​être écrasés lors d'une mise à jour majeure de son système, et on perd dans ce cas sa configuration personnalisée.
  
-La spécification des **interfaces** sur lesquelles **Apache2 écoutera** les requêtes ​se fait dans **ports.conf** avec la directive **Listen**.\\ +Toute la configuration devrait ​se faire dans les sous dossiers ''​xxx-available''​.</note>
-La configuration par défaut indique que le serveur est en écoute sur le port 80 pour toutes les interfaces réseau, et sur le port 443 si le module SSL ou GNUTLS est activé : +
-<file>Listen 80+
  
-<​IfModule ssl_module>​ +Les diverses configurations sont activées (''​a2en''​ pour //Apache 2 enable//) ou désactivées (''​a2dis''​ pour //Apache 2 disable//) avec les commandes suivantes :
- Listen 443 +
-</IfModule>​+
  
-<IfModule mod_gnutls.c+<code>sudo a2ensite [configuration d'un site à activer] 
- Listen 443 +sudo a2dissite [configuration d'un site à désactiver]
-</​IfModule>​ +
-</​file>​+
  
-**Pour restreindre** l'utilisation ​à une ou plusieurs interfaces il suffit de les spécifier, suivies du port. Il faut une directive Listen par interface.\\ +sudo a2enconf [configuration d'un service ​à activer] 
- - Si le serveur est **connecté avec une IP Internet** et que l'on souhaite écouter sur cette interface on ajoute la directive **Listen IP.Internet** .\\ +sudo a2disconf [configuration d'​un ​service à désactiver]
- - Si le serveur est **connecté avec une IP locale** et que l'on souhaite écouter sur cette interface on ajoute la directive **Listen IP.Locale** .\\ +
- - Si l'on souhaite **écouter sur un certain port** on rajoute **:​Le_Port** . Il est aussi possible de ne spécifier que le port **Listen Le_Port**.\\+
  
-[[:​tutoriel:​comment_editer_un_fichier|Éditez le fichier]] **/etc/​apache2/​ports.conf**.(remplacer les X.X.X.X par l'ip de l '​interface d'​écoute )\\+sudo a2enmod ​[configuration d'un module à activer] 
 +sudo a2dismod ​[configuration d'un module à désactiver]</code>
  
-<​file>​ +Cela aura pour effet de créer ou supprimer les liens symboliques correspondants dans les répertoires ''​xxx-enabled''​.\\ 
- #interface (local ​ou internet) connectée sur port standard +Apache prendra alors en compte, ​ou pas, les fichiers de configuration concernés après rechargement ​
- ​Listen X.X.X.X:80 +<​code>​sudo systemctl reload apache2</code>
-</file>+
  
 +<​note>​Par défaut Apache ne prend en compte que les fichiers portant l'​extension ''​.conf''​ (ou ''​.load'',​ seulement pour les modules).</​note>​
  
 +==== Configuration des ports d'​écoute ====
  
-==== Configurer un site web ====+Un dernier fichier, ''/​etc/​apache2/​ports.conf'',​ permet de spécifier les ports à écouter.\\ 
 +Par défaut, il s'agit des ports 80 (port par défaut pour HTTP), et 443 (port par défaut pour HTTPS) si le [[#​https|module SSL]] est activé.
  
-Pour configurer un ou plusieurs sites web différents, il faut utiliser les hôtes virtuels (ou vhosts). Chaque hôte virtuel a son propre fichier ​de configuration. Ceci permet de **définir plusieurs sites** sur une même machine avec des noms de domaines différents (**www**.example.com,​ **machin**.example.com,​ **autredomain**.tld...).\\ +Sauf cas très particulier, il n'est pas nécessaire ​de toucher à cette configuration.
-<note note>Si vous voulez utiliser plusieurs hôtes virtuels voir [[:​tutoriel:​virtualhosts_avec_apache2|virtualhosts_avec_apache2]]</​note>​ +
-[[:​tutoriel:​comment_editer_un_fichier|Ouvrez le fichier]] **/​etc/​apache2/​sites-available/​000-default.conf** (le seul hôte virtuel existant pour le moment).+
  
-<code apache>​ +===== Hôtes virtuels =====
-# Le vhost proprement dit : il est compris dans un bloc <​VirtualHost>,​ +
-# Ces blocs définissent la "​portée"​ de la validité des directives qui y sont définies. +
-# Le * derrière VirtualHost définit ici que le vhost est valable pour toutes les IP sur lesquelles apache écoute. +
-<​VirtualHost *:80> +
-# ServerName définit le nom de domaine pleinement qualifié utilisé pour le vhost. +
-ServerName www.example.com +
-# ServerAlias définit les autres domaines pour lesquels l'​hôte virtuel répondra. +
-ServerAlias example.com +
-# ServerAdmin vous permet de spécifier le courriel à utiliser en cas de problème, sur une page d'​erreur 404 par exemple. +
-ServerAdmin webmaster@example.com +
-# DocumentRoot définit le dossier racine dans lequel seront stockés les fichiers du site. +
-DocumentRoot /​srv/​web/​example.com/​www +
-        # Directory définit les options par défaut du répertoire +
- <​Directory /​srv/​web/​example.com/​www>​ +
-                # Active les options : +
-                # FollowSymLinks permet de suivre les liens symboliques. +
-                # Indexes autorise le listage de fichiers d'un répertoire qui ne contient pas d'​index (désactivé ici). +
- Options -Indexes +FollowSymLinks +MultiViews +
-                # AllowOverride permet de surcharger certaines options en utilisant des fichiers .htaccess dans le répertoire du site. +
- AllowOverride all +
-                # Droits d'​accès (on autorise tout le monde) +
- Require all granted +
- </​Directory>​ +
-       # Où sont enregistré les logs. Il est important d'​avoir des logs séparés pour chaque hôte virtuel. +
- ErrorLog /​var/​log/​apache2/​error.example.com.log +
- CustomLog /​var/​log/​apache2/​access.example.com.log combined +
-</​VirtualHost>​+
  
-</code>+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).
  
-Enregistrez les changements sous un autre nom (ex: example.com.conf).+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/''​.
  
-Il faut maintenant **activer l'​hôte virtuel**. Pour cela il faut créer un **lien symbolique** du fichier **de sites-available/​ vers sites-enabled/​**.\\ +==== Par défaut ====
-En utilisant :+
  
-<​code>​sudo a2ensite example.com.conf</​code>​+Par défaut, il existe 2 hôtes virtuels.
  
-Pour désactiver un site, utiliser +<note important> 
-<code>sudo a2dissite example.com.conf</code>+Ce chapitre est ici à titre d'​information. 
 +Il n'est a priori pas nécessaire de modifier les fichiers existants par défautChaque site ou service devrait correspondre à un hôte virtuel unique, défini dans un fichier indépendant (voir [[#​creation_d_hotes_virtuels|création d'​hôtes virtuels]]). 
 +De plus ces fichiers existants par défaut peuvent éventuellement être écrasés lors de mises à jour majeures du système. 
 +</note>
  
-Si vous n'avez pas de nom de domaine pleinement qualifié, vous pouvez utiliser un nom de votre choix, par exemple : //projet1// comme valeur de la directive //​ServerName//​. Il faudra ensuite +Le premier ​//VirtualHost// est défini dans le fichier ​''​/etc/apache2/​sites-available/​000-default.conf''​. Voici son contenu sans les commentaires ​:
-[[:​tutoriel:​comment_editer_un_fichier|ouvrir ​le fichier]] **/etc/hosts** et ajouter une ligne avec le nom que vous avez choisi ​:+
  
-<​file>​127.0.0.1 projet1</​file>​+<​file ​- 000-default.conf><​VirtualHost *:80> 
 + ServerAdmin webmaster@localhost 
 + DocumentRoot /​var/​www/​html 
 + ErrorLog ${APACHE_LOG_DIR}/​error.log 
 + CustomLog ${APACHE_LOG_DIR}/​access.log combined 
 +</​VirtualHost>​</​file>​
  
-Cela permettra ​à votre système ​de faire la correspondance entre le nom de l'​hôte et votre machine localeet votre site sera accessible localement avec http://projet1+^ directive ^ description ^ 
 +| <​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>​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>​ErrorLog ${APACHE_LOG_DIR}/​error.log 
 +CustomLog ${APACHE_LOG_DIR}/​access.log combined</​file>​ | Ce sont des directives relatives au log d'​erreur ​et au log d'​accès de cet hôte virtuel. Ceux-ci seront donc écrits dans le répertoire ''​APACHE_LOG_DIR''​qui est par défaut ''​/var/log/​apache2''​ sur ubuntu. | 
 +| <​file></​VirtualHost></​file>​ | Fin de la section concernant cet hôte virtuel. |
  
 +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 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>​
  
-==== Utiliser le protocole HTTPS avec Apache  ​====+==== Création d'​hôtes virtuels ​====
  
-Consultez ​la page [[tutoriel/securiser_apache2_avec_ssl|Utiliser HTTPS avec Apache2]]<​del>​SSL<​/del>+<​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>​
  
-==== Droits d'​accès sur les fichiers et dossiers du site ====+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 qu'Apache fonctionne avec un site présent dans le dossier /​srv/​web/​example.com/​wwwil faut que l'utilisateur www-data puisse au moins lire les fichiers et accéder aux dossiers qui s'y trouvent +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.
-Si l'on veut que cela fonctionne quel que soit le propriétaire/​groupe des fichiers et dossiers du site, il faut s'​assurer que l'​ensemble des dossiers aient des droits ​en lecture et en accès pour tout le monde (r-xet les fichiers en lecture ​pour tout le monde (r--).+
  
-Exemple ​de commande ​pour donner les droits en lecture à tout le monde sur l'arborescence ​/srv/web/​example.com/​www :+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''​.
  
-<​code>​sudo chmod -R +rX /​srv</​code>​+Voici un exemple de contenu pour ce fichier :
  
-La question du propriétaire et groupe des fichiers, et des droits pose fréquemment problème aux débutantsC'est une question complexe qui n'a pas de réponse universelleTout dépend de l'​usage du serveur (test, développement,​ production, multi-sites ou pas, niveau de sécurité acceptable, etc.) etles solutions devront être adaptées à chaque cas+<file - example.com.conf><​VirtualHost *:80> 
- + ServerName example.com 
 + ServerAlias www.example.com 
 + DocumentRoot "/​var/​www/​example"​ 
 + <​Directory "/​var/​www/​example">​ 
 + Options +FollowSymLinks 
 + AllowOverride all 
 + Require all granted 
 + </​Directory>​ 
 + ErrorLog /​var/​log/​apache2/​error.example.com.log 
 + CustomLog /​var/​log/​apache2/​access.example.com.log combined 
 +</​VirtualHost></​file>​
  
 +^ directive ^ description ^
 +| <​file><​VirtualHost *:​80></​file>​ | On accepte les connexions sur n'​importe quelle IP du serveur (''​*''​) sur le port 80. |
 +| <​file>​ServerName example.com</​file>​ | Cet hôte virtuel sera seulement appelé pour le nom de domaine //​example.com//​... |
 +| <​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>​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>​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
 +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. |
  
 +Après 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 sans avoir de nom de domaine réservé auprès d'un bureau d'​enregistrement (registrar).
 +Cela peut être très pratique en phase de développement sur une machine ou un réseau local, par exemple.
  
 +Il existe plusieurs méthodes :\\ 
 +\\ 
  
-===== Utilisation ===== +  * on peut utiliser un sous-domaine de ''​localhost'',​ comme ''​example.localhost'',​ qui pointera directement sur la machine locale (et qui ne sera donc valable que sur la machine qui fait tourner Apache)\\ ​ 
-<​code>​sudo service apache2 start | stop | restart | status </​code>​+\\ 
  
-Il existe ​des interfaces graphiques pour utiliser Apache. De la plus simple à la plus complète : [[https://​launchpad.net/​localhost-indicator|localhost-indicator]] FIXME cassé ​et [[https://launchpad.net/​rapache|rapache]] ​+  * on peut profiter ​des services ​[[:zeroconf#​mDNS]] qui sont aujourd'​hui fonctionnels sur la plupart des réseaux domestiques,​ sans qu'on ne touche à rien : on peut tester la connexion depuis le client en tapant la commande ''​ping''​ suivi par le nom de la machine (sans accent ​et en remplaçant les espaces par des ''​-''​) ''​.local''​ (tout attaché) ​: 
 +<​code>​ping mon-ordi.local<​/code> 
 +Si on a une réponse c'est que ça fonctionne, on peut utiliser ce nom de domaine sur le réseau local.\\  
 +\\ 
  
-==== Erreur au démarrage ====+  * ou on peut créer un nouveau nom de domaine "​fictif"​. 
 +Il faut dans ce cas résoudre l'IP du serveur pour un domaine fictif côté client. Cela se fait soit en utilisant un résolveur de DNS local "​menteur"​ (voir le projet [[wpfr>​Pi-hole]] par ex.), soit en [[:​tutoriel:​comment_modifier_un_fichier|éditant le fichier]] ''/​etc/​hosts''​ de chaque client avec les [[:​sudo|droits d'​administration]] pour y ajouter la ligne : 
 +<file - hosts>​127.0.0.1 example.lan</​file>​ 
 +où ''​127.0.0.1''​ est l'​adresse IP du serveur (locale dans ce cas) et ''​example.lan''​ est le nom de domaine choisi.\\ 
 +(Voir la [[:​hosts|documentation concernant le fichier hosts]])
  
-Au démarrage d'Apache, il est possible que celui-ci ne soit pas capable de déterminer un nom de domaineCe message sera affiché ​dans le terminal ​:+Avec la directive ​''​ServerName example.lan'' ​dans le //​VirtualHost//,​ l'​hôte virtuel sera accessible depuis ce client à l'​adresse [[http://​example.lan/​]].
  
->Could not reliably determine the server's fully qualified domain nameusing 127.0.1.1 for ServerName+Les TLD recommandés dans ce contexte sont ''​.intranet'​', ​''​.internal'',​ ''​.private'',​ ''​.corp'',​ ''​.home'',​ et ''​.lan''​.(([[https://​datatracker.ietf.org/​doc/​html/​rfc6762#​appendix-G|RFC6732 - Private DNS Namespaces]])) 
 +</​note>​
  
-Pour corriger l'​erreur : +===== HTTPS =====
-=== Première solution ​=== +
-On doit [[:​tutoriel:​comment_modifier_un_fichier|éditer le fichier]] **/​etc/​apache2/​apache2.conf**+
  
-Par défaut ​ce fichier est videil faut donc ajouter la ligne suivante:+HTTPS permet de chiffrer les communications entre le navigateur et le serveur web au moyen du protocole SSL/TLS, et de garantir l'​authenticité de votre serveur au moyen d'un certificat. Cela empêche qui que ce soit de récupérer (« sniffer ») des informations sensibles, telles que des mots de passe, en particulier lorsqu'​on se connecte depuis un réseau publicou empêche un autre serveur de se faire passer pour le vôtre.
  
-<​code>​ServerName localhost</​code>​+Il n'est pas nécessaire de mettre en place HTTPS avec un certificat valide sur un serveur de développement local.
  
-<note tip>On peut l'écrire aussi directement à la fin du fichier ​**/etc/apache2/​apache2.conf** si ça ne marche vraiment pas (ce qui a été mon cas).</​note>​+Pour rendre disponible les sites de manière sécurisée via HTTPS avec des certificats valides, la solution la plus simple est d'​utiliser ​l'outil **[[https://certbot.eff.org/​|Certbot]]** de [[https://​letsencrypt.org/​|Let'​s Encrypt]]. 
 +<​note>​Vous trouverez une documentation plus détaillée à ce sujet sur [[:​tutoriel:​securiser_apache2_avec_ssl|cette page de la documentation]],​ mais nous verrons ici une méthode spécifique à Apache.</​note>​
  
-On enregistre, on quitte et on redémarre Apache :+==== Activation du module SSL ====
  
-=== Deuxième solution === +Pour que le **protocole TLS** (successeur du **SSL**) puisse fonctionner avec Apache2, il faut activer le module //ssl// avec la commande : 
-On doit [[:​tutoriel:​comment_modifier_un_fichier|éditer ​le fichier]] ​**/etc/hosts**+<​code>​sudo a2enmod ssl</​code>​ 
 +puis recharger la configuration d'​Apache 2 : 
 +<​code>​sudo systemctl reload apache2</​code>​
  
-Sur la première ligne, on trouve habituellement ça : +==== Mise en place de HTTPS avec Certbot ====
-<​code>​127.0.0.1 ​        ​localhost</​code>​+
  
-Comme Apache2 ne sait pas extrapoler, il faut la modifier ainsi +Prérequis ​
-<​code>​127.0.0.1         ​localhost.localdomain localhost</​code>​+  * avoir un ou plusieurs noms de domaine enregistrés,​ pointant sur le serveur depuis plus de 48 heures. 
 +  * avoir un serveur web apache déjà configuré, fonctionnel et accessible publiquement.
  
-Vous pouvez toujours mettre le nom réel de votre serveur, mais toujours sous un format ​[[http://fr.wikipedia.org/wiki/Fully_qualified_domain_name|FQDN]]+<​note>​Les instructions pour installer et utiliser simplement certbot sont disponibles en anglais ​[[https://certbot.eff.org/all-instructions/|sur le site officiel]]. En voici un récapitulatif.</​note>​
  
-<​code>​127.0.0.1 ​       Mon_Super_Serveur.maison localhost</​code>​ +=== Installation de Certbot ​===
-//Le nom doit correspondre avec celui contenu dans /​etc/​hostname//​ +
-==== Redémarrer Apache2 ====+
  
-<​code>​ +Pour installer Certbot : 
-sudo /​etc/​init.d/​apache2 restart +<​code>​sudo ​apt install python3-certbot-apache</​code>​
-</code> +
-ou +
-<​code>​ +
-sudo service apache2 restart +
-</​code>​+
  
-Il est aussi possible ​de redémarrer apache2 sans "​tuer"​ les requêtes en cours : +=== Utilisation ​de Certbot ===
-<​code>​apache2ctl graceful</​code>​ +
-Cette solution est plus élégante sur un serveur en production.\\+
  
-Nous pouvons maintenant passer à la phase de vérification.\\+Certbot permet ensuite ​de générer tous les certificats et d'​adapter les configurations d'​Apache pour tous les noms de domaine associés aux hôtes virtuels au moyen d'une seule commande : 
 +<​code>​sudo certbot --apache</​code>​
  
-S'il y a des messages d'​erreurs regarder ​les fichiers suivants :\\ +Lors de l'opération le script nous invite à cocher ​les domaines pour lesquels on souhaite obtenir les certificats et à choisir de forcer l'​usage de HTTPS ou pasPour des raisons de sécurité, c'est généralement une très bonne idée de forcer HTTPS.
-<​code>​ +
-tail -f /​var/​log/​syslog +
-tail -f /​var/​log/​apache2/​access.log +
-tail -f /​var/​log/​apache2/​error.log +
-</​code>​+
  
-==== Activer ​les fichiers ​.htaccess ====+Après cette opération ​les sites devraient être accessibles en HTTPS de manière sécurisée,​ sans que les navigateurs affichent de message d'​alerte.
  
-Les .htaccess permettent ​de créer des zones administrateur protégées très facilement ou aussi d'activer des configurations ​de façon localisées ​pour des serveurs auxquels vous n'avez pas accès au fichier de configuration principale.+<​note>​Grâce à l'​option ''​%%--%%apache'',​ Certbot s'​occupe automatiquement ​de créer des fichiers de configuration de la forme ''/​etc/​apache2/​sites-available/​example.com-le-ssl.conf''​ pour les hôtes virtuels en HTTPS sur le port 443 et de les activer (''​-le-ssl'' ​pour //Let's Encrypt//).</​note>​
  
-[[:​tutoriel:​comment_editer_un_fichier|éditez le fichier]] /​etc/​apache2/​sites-enabled/​000-default.conf+=== Renouvellement automatique ===
  
-<note tip>Vous pouvez aussi éditer /​etc/​apache2/​apache2.conf plutôt que d'utiliser des fichiers .htaccess (ne pas les activer par conséquent),​ ce qui est d'ailleurs préférable \\ +Pour information c'​est ​la commande ​''​certbot renew''​ qui permet ​de renouveler les certificats très simplementmais Certbot créé automatiquement ​une [[:​cron|tâche cron]] à cet effet dans ''/​etc/​cron.d/​certbot'​'​. ​Il est également créé un « //timer// » systemd qui fait la même chose (/​lib/​systemd/system/certbot.timer et certbot.service).
-__Selon la doc Apache :__ +
-//En général, vous ne devriez jamais utiliser les fichiers .htaccess à moins que vous n'ayez pas accès au fichier principal ​de configuration du serveur. Il y a, par exemple, une conception erronée qui prévaut selon laquelle les droits des utilisateurs doivent toujours être gérés ​dans le fichier ​.htaccess. Cela n'est simplement pas le casVous pouvez placer les configurations des droits dans la configuration principale du serveur, et cela est, **en fait**, la manière favorisée de le faire.//+
  
-//"In generalyou should never use .htaccess files unless you don't have access to the main server configuration file. There is, for example, ​prevailing misconception that user authentication should always be done in .htaccess files. This is simply not the case. You can put user authentication configurations in the main server configuration,​ and this is, in fact, the preferred way to do things.\\ +Le script est lancé automatiquement toutes les 12 heuresmais les certificats ne seront renouvelés que si nécessaireEn principe il n'donc rien à faire.
-.htaccess files should be used in a case where the content providers need to make configuration changes to the server on a per-directory basis, but do not have root access on the server system."//​ cf: [[http://​httpd.apache.org/​docs/​2.2/​howto/​htaccess.html#​when]] +
- </​note>​+
  
-Ajoutez ces lignes à la fin du fichier : +===== .htaccess ​ =====
-<​code>​ +
-<​Directory /​var/​www/​le_rep_ou_vous_voulez_activer_le_.htaccess+
-    AllowOverride all +
-</​Directory>​ +
-</​code>​+
  
-[[:apache2#​redemarrer_apache2 | Redémarrer ensuite apache]] et les .htaccess ​sont activés+En plus des fichiers de configuration situés dans ''/​etc/​apache2'',​ Apache nous permet de définir des configurations tierces pour certains répertoires en plaçant des fichiers nommés ''​.htaccess''​ directement avec les autres fichiers du contenu web. (Le point au début du nom du fichier en fait un fichier caché par défaut.)
  
-Si vous souhaitez autoriser les fichiers ​.htaccess ​partout (et pas uniquement dans un unique ​répertoireil vous faudra remplacer "​AllowOverride none" par "​AllowOverride All" entre les balises <​Directory />​…</​Directory>​ et <​Directory /​var/​www/>​…</​Directory>​ du fichier /​etc/​apache2/​sites-enabled/000-default.conf .+Les directives de chaque fichier ''​.htaccess''​ s'​appliquent au répertoire ​dans lequel ​il se trouve, ainsi que tous ses descendants (sous-repertoires,​ sous-sous-repertoires,​ etc.).
  
-<​note>​**Dossier invisible** : pour activer PHP 5 sur les hébergements Free.fr, un fichier ​.htaccess ​contenant "php 1" est nécessaire;​ la présence de celui-ci a pour conséquence de rendre le dossier conteneur invisible sous Apache.</note>+C'est la directive ​**[[https://httpd.apache.org/​docs/​current/​fr/​mod/​core.html#​allowoverride|AllowOverride]]**spécifiée dans une section ''<​Directory>''​ de l'​[[#​hotes_virtuels|hôte virtuel]] qui définit si les fichiers ''​.htaccess''​ doivent être pris en compte, ou pas, pour ce répertoire et ses descendantsElle peut prendre les valeurs ''​All''​ (on autorises ​//toutes// les directives de configuration à être modifiées) ou ''​None''​ (aucune directives),​ ou une liste détaillée des directives dont on autorise la modifications.
  
-===== Modules =====+<note tip>Ces fichiers sont très pratiques pour redéfinir des paramètres sur un serveur mutualisé à l'​administration duquel on n'a pas accès, ou pour définir dynamiquement des règles spécifiques à certaines solutions web (comme la [[#​mod_rewrite|réécriture d'​URL]]).</​note>​
  
-Il est possible ​d'ajouter des modules à apacheajoutant des fonctionnalités ​à votre serveur web. +Exemple de protection ​d'un répertoire et d'un fichier dans ce répertoire : 
-Tous les modules sont répertoriés ici : /etc/apache2/​mods-available +<file - .htaccess>​ 
-==== Activer ​l'URL rewriting ====+# la ligne ci-dessous va interdire (forbidden) l'​accès au répertoiremais l'​accès ​à un fichier à la fois du répertoire reste autorisé 
 +RedirectMatch 403 ^/~images/?$ 
 +# la ligne ci-dessous va retourner (not found), on peut mettre aussi 403, mais il peut être intéressant que la personne qui tente l'accès (un robot de hacker par exemple) croit que le fichier n'​existe pas ! 
 +RedirectMatch 404 ^/​~images/​fichier_à_protéger?​$ 
 +</​file>​
  
-Chargez le module rewrite : +===== Index  =====
-<​code>​a2enmod rewrite</​code>​+
  
-Ensuite, deux possibilités s'offrent à vous suivant vos capacités de gestion de votre serveur : +L'index est le contenu affiché par défaut ​par Apache lorsqu'​on appelle ​un répertoire sans spécifier ​de [[:web#url|nom de page web]] particulière.
-  * **pour un serveur mutualisé ​par exemple** : placer  ​un fichier .htaccess avec des règles ​de rewriting à la racine de votre site. Pour cela les fichiers .htaccess doivent être autorisés : [[:apache2#activer_les_fichiers_.htaccess ​Activer les fichiers .htaccess]] +
-  * **pour un serveur dédié ou un serveur personnel** (sur votre propre distribution) il est conseillé d'​ajouter les règles de rewriting directement dans le fichier de configuration d'​Apache2 : /​etc/​apache2/​apache2.conf en recopiant les lignes suivantes à la fin dudit fichier.+
  
 +L'​index est définit par la directive **[[https://​httpd.apache.org/​docs/​current/​mod/​mod_dir.html#​directoryindex|DirectoryIndex]]** qui détermine quels fichiers Apache doit traiter par défaut. Chaque nom de fichier est séparé par un espace et listé par ordre de priorité.\\
 +Par défaut, ''​DirectoryIndex''​ a la valeur ''​index.html index.cgi index.pl index.php index.xhtml index.htm''​.
  
-Un petit exemple ​:+Si Apache ne trouve aucun des fichiers mentionnés par ''​DirectoryIndex'',​ il essaie de récupérer une liste du contenu du répertoire,​ afin que le navigateur l'​affiche de la même manière qu'un gestionnaire de fichier.\\ 
 +On peut activer ou désactiver ce listing avec respectivement les directives **[[https://​httpd.apache.org/​docs/​current/​mod/​core.html#​options|Options +Indexes]]** ou **[[https://​httpd.apache.org/​docs/​current/​mod/​core.html#​options|Options -Indexes]]**.\\ 
 +Pour des raisons de sécurité, il est généralement préférable de laisser cette option désactivée. Dans ce cas, et faute de fichier index, c'est une erreur 403 qui s'​affiche,​ car l'​utilisateur n'a pas la permission de lister le contenu du répertoire.
  
-<code> +<note>​Toutes ces directives peuvent être définies dans une section //​[[#​hotes_virtuels|<​Directory>​]]//​ ou dans un fichier //​[[#​.htaccess]]//​.</​note>
-Options +FollowSymlinks +
-RewriteEngine on+
  
-# Lorsque l'on tape dans la barre d'​adresse www.votre_domaine.net/​page-1 c'est la page www.votre_domaine.net/​page.php?​id=1 qui s'​affiche +===== Modules ​ =====
-# [L]=[last] signifie que si cette règle s'​applique on n'en cherche pas d'​autre +
-RewriteRule ^page-1$ /​page.php?​id=1 [L]+
  
-</code>+Il est possible d'​ajouter des modules à Apache afin d'​étendre les fonctionnalités du serveur web.\\ 
 +Les modules disponibles sont répertoriés ici : ''​/etc/​apache2/​mods-available''​
  
-Encore mieux avec les expressions régulières : +==== mod_php ====
  
-<code> +[[:PHP]] est un langage de programmation et un interpréteur qui permet principalement de générer du contenu HTML. C'est donc une solution très largement utilisée pour créer des applications web ou des [[wpfr>Page_web_dynamique|sites internet dynamiques]].
-Options +FollowSymlinks +
-RewriteEngine on+
  
-# Lorsque l'on tape dans la barre d'adresse www.votre_domaine.net/​page-* c'est la page www.votre_domaine.net/​page.php?​id=* qui s'​affiche +Il est très couramment utilisé en conjonction ​d'ApacheVoir [[:LAMP]].
-# ^ et $ signifie respectivement le début et la fin d'une expression régulière +
-RewriteRule ^page-([0-9]+)$ /page.php?id=$1 [L]+
  
-</code>+Le module ​//mod_php// permet de l'​utiliser comme une extension d'​Apache. C'est la méthode la plus simple pour utiliser PHP avec Apache.
  
-====Mod_bw - Limiter la bande passante====+Une autre méthode consiste à utiliser PHP [[http://​php.net/​manual/​fr/​install.fpm.php|en FastCGI]]. C'est une solution plus souple et mieux optimisée pour des sites destinés à supporter un traffic important, mais elle est plus complexe à mettre en oeuvre. Nous ne traiterons pas de ce cas ici.
  
-Il existe un module compatible avec apache2 permettant de limiter la bande passante.+Pour installer et activer //mod_php// sous ubuntu, on utilise cette commande : 
 +<​code>​sudo apt install libapache2-mod-php</​code>​
  
-**Installation du module :**  +Mais encore une fois, mieux vaut vous reporter à la documentation de [[:LAMP]] à ce sujet.
-[[apt>​libapache2-mod-bw]]+
  
-**Charger le module bandwidth :**  +==== mod_rewrite ====
-   sudo a2enmod bw+
  
-**Configuration du module ​:**+**//[[https://​httpd.apache.org/​docs/​current/​fr/​mod/​mod_rewrite.html|mod_rewrite]]//​** permet de réécrire des [[wpfr>​Uniform_Resource_Locator|URL]].
  
-Pour cela il faut ajouter quelques lignes dans les Vhost de vos domaines ​:+Il s'agit généralement ​de remplacer le chemin, le nom de la page, et la chaîne de requête de l'[[:web#​url|URL]] par une chaîne de caractère en concordance avec la structure et le contenu du site.
  
-   ​cd ​/etc/apache2/sites-enabled+De nombreux services ont recours à cette pratique afin d'​augmenter leur référencement et de clarifier leur contenu.\\ 
 +Ces services utilisent parfois une terminologie exotique pour mentionner cette pratique : [[:​WordPress]] parle par ex. de //permalinks//.\\ 
 +On peut aussi s'en servir pour déployer une [[wpfr>​Interface_de_programmation|API]] web propre.\\ 
 +On utilise aussi parfois cette méthode afin de mettre en place des [[https://​httpd.apache.org/​docs/​current/​fr/​rewrite/​remapping.html|redirections web]] un peu complexes.
  
-   sudo vim votredomaine.tls.conf+Pour activer ce module on utilisera la commande 
 +<​code>​sudo a2enmod rewrite</​code>​
  
-Juste avant //</VirtualHost>//, ​ajouter ​:+<​note>​L'​utilisation de //mod_rewrite// est relativement complexe et fait appel à des [[wpfr>Expression_régulière|expressions régulières]]. N'​hésitez pas à consulter [[https://httpd.apache.org/​docs/​current/​fr/​rewrite/​intro.html|la documentation officielle]] à ce sujet.\\ 
 +Pour la rédaction des expressions régulièresvous pouvez vous aider de services en ligne tels que [[https://​regex101.com/​|regex101.com]] ou [[https://​regexr.com/​|regexr.com]]</​note>​
  
-  * Limiter tous les utilisateurs à 10Kb/​s ​:+Un petit exemple ​:
  
-   ​BandwidthModule On +<​file>​RewriteEngine on
-   ​ForceBandWidthModule On +
-   ​Bandwidth all 10240+
  
-  * Limiter tous les utilisateurs à 50Kb/s pour les fichiers supérieurs à 8000Kb :+RewriteRule ^page-([0-9]+)$ ​/page.php?​id=$1 [L]
  
-   ​BandwidthModule On +# Lorsque l'on tape dans la barre d'​adresse www.example.com/​page-* c'est la page www.example.com/​page.php?​id=* qui s'​affiche 
-   ForceBandWidthModule On +# ^ et $ dans le bloc modèle signifient respectivement le début et la fin d'une ligne. 
-   LargeFileLimit * 8000 50000+# $1 est une variable qui récupère la valeur entre les premières parenthèses du bloc modèle 
 +# [L]=[last] signifie que si cette règle s'​applique on n'en cherche pas d'​autre</​file>​
  
-  * Limiter les fichiers ​.avi et .mpg à 20Kb/s :+<​note>​On peut écrire ces règles de réécriture dans une section //​[[#​hotes_virtuels|<​VirtualHost>​]]//​ ou  //​[[#​hotes_virtuels|<​Directory>​]]//​ (le comportement n'est pas le même), ou dans un fichier //[[#.htaccess]]//​.</note>
  
-   BandwidthModule On +<note important>​N'​oubliez pas de modifier le virtualhost en conséquence sinon les règles de réécriture .htaccess ne fonctionneront pas correctement. Voici un exemple de configuration qui marche : 
-   ForceBandWidthModule On +<​code>​ 
-   LargeFileLimit .avi 1 20000 +    <​Directory /​var/​www/​html>​ 
-   LargeFileLimit .mpg 1 20000+            ​AllowOverride All 
 +    </​Directory>​ 
 +</​code>​ 
 +</​note>​ 
 +==== mod_proxy====
  
-**Redémarrer Apache2**+Comme [[:​proxy|son nom l'​indique]], ​**//​[[https://​httpd.apache.org/​docs/​current/​fr/​mod/​mod_proxy.html|mod_proxy]]//​** permet à apache de relayer des requêtes depuis ou vers un service tiers.
  
-   sudo /etc/init.d/apache2 restart+Ce module peut par exemple être utile lorsqu'​on utilise ​d'​autres serveurs HTTP en plus d'​Apache sur un même serveur web, afin d'​éviter d'​avoir à accéder au contenu web sur d'​autres ports que le port 80 ou 443.
  
-====Mod_deflate - Compression gzip====+<note warning>​L'​activation de ce module sur un serveur ouvert sur le web est dangereuse. Une mauvaise configuration permet par exemple à un intrus d'​accéder aux services disponibles sur le réseau local, ou d'​usurper votre adresse IP.\\ 
 +N'​activez ce module que si vous êtes certain de ce que vous faites.
  
-Le mod_deflate sur apache2 permet de gagner en rapidité et en bande passante grâce à la compression des données qui transitent entre le serveur et les clientsLa compression utilisée est gzipL'​installation ci-dessous permet de compresser les fichiers texte (html, css,...).+Voir [[https://​httpd.apache.org/​docs/​current/​fr/​mod/​mod_proxy.html#access|la documentation officielle à ce sujet]].</​note>​
  
-**Activation des modules deflate et headers ​** +Pour activer ce module ​: 
 +<​code>​sudo a2enmod proxy proxy_http proxy_wstunnel 
 +sudo systemctl reload apache2</​code>​
  
-   sudo a2enmod headers +Voici un exemple de configuration qui permet d'​accéder à un serveur [[https://​emby.media|emby]] à l'​adresse http://​example.com/​emby plutôt que http://​example.com:​8096 : 
-   sudo a2enmod deflate+<​file><​Location /emby> 
 + ProxyPass http://​localhost:​8096/​ 
 + ProxyPassReverse http://​localhost:​8096/​ 
 + Require all granted 
 + SetEnv proxy-nokeepalive 1 
 + SetEnv proxy-sendchunked 1 
 +</​Location></​file>​
  
-**Configuration de deflate : **+==== mod_userdir ====
  
-Créez ou modifiez ​le fichier ​/etc/apache2/conf.d/mod_deflate.conf et ajoutez-y ​:+Il peut être utile, et c'est prévu par Apache, que chaque utilisateur puisse mettre un contenu web à disposition depuis son espace personnel (dans le répertoire ''​home''​).\\ 
 +Ce contenu sera accessible à l'​adresse ​//<​nowiki>​http:​//example.com/​~nom_de_lutilisateur</​nowiki>//,​ ou dans la plupart des cas //<​nowiki>​http://​localhost/​~nom_de_lutilisateur</​nowiki>//​.
  
-   <Location ​/> +Pour mettre cette configuration en place, on crée un répertoire ''​public_html''​ dans son espace personnel et on lui donne les droits de lecture et d'​exécution : 
-   # Insérer le filtre +<code>​mkdir ~/public_html 
-   ​SetOutputFilter DEFLATE +echo 'Mon site personnel' ​~/public_html/index.html 
-   # Netscape 4.x rencontre quelques problèmes... +chmod -R 755 ~/public_html</code>
-   ​BrowserMatch ^Mozilla/4 gzip-only-text/html +
-   # Netscape 4.06-4.08 rencontre encore plus de problèmes +
-   ​BrowserMatch ^Mozilla/4\.0[678] no-gzip +
-   # MSIE se fait passer pour Netscape, mais tout va bien +
-   ​BrowserMatch \bMSIE !no-gzip !gzip-only-text/​html +
-   # Ne pas compresser les images +
-   ​SetEnvIfNoCase Request_URI \ +
-   ​\.(?:​gif|jpe?​g|png)$ no-gzip dont-vary +
-   # S'​assurer que les serveurs mandataires délivrent le bon contenu +
-   ​Header append Vary User-Agent env=!dont-vary +
-   </Location+
  
-**Redémarrage de apache2:​** +On active ensuite le module ​//mod_userdir// : 
-   ​sudo ​/etc/init.d/​apache2 ​restart+<​code>​sudo a2enmod userdir 
 +sudo systemctl reload ​apache2</​code>​
  
-Les pages seront compressées quand le client le supporte.+Le message //Mon site personnel// devrait alors être lisible à l'​adresse http://​localhost/​~nom_de_lutilisateur
  
-<note tip>Si un message d'erreur de ce type apparaît :+<note tip>L'interprétation des fichiers PHP est désactivée par défaut dans les dossiers personnels.\\ 
 +Pour l'​activer il faut modifier le fichier /​etc/​apache2/​mods-available/​php7.x.conf en commentant les lignes concernées.</​note>​
  
-apache2: Could not reliably determine the server'​s fully qualified domain name, using 127.0.1.1 for ServerName.+==== mod_headers ====
  
-Voir [[apache2?&#​erreur_au_demarrage|ici]] </​note>​ +Le module ​[[https://​httpd.apache.org/​docs/​current/​fr/​mod/​mod_headers.html|headers]] permet de personnaliser ​les en-têtes HTTP. C'est à dire les informations envoyées par le serveur avant le document lui-même.
-==== mod_userdir gérer ​les dossiers utilisateur ==== +
-Cette partie ​est déjà documentée sur [[:​xampp#​modifier_le_dossier_racine_du_serveur_apache|la page xampp]] mais reprenons ​le ici.+
  
-Certaines personnes aimeraient faire en sorte à ce que chaque utilisateur du serveur puisse avoir son site web perso.\\ +C'est utile notamment pour améliorer la sécurité des sites web. Voici quelques en-têtes qui peuvent ​être ajoutées à cette fin.
-Ce site peut être accessible par : http://​mondomaine.com/​~nom_du_user +
-<​note>​ dans la plupart des cas c'est http://​localhost/​~nom_du_user</​note>​+
  
 +Pour appliquer globalement les directives proposées, ouvrez (ou créez s'il n’existe pas) le fichier ''/​etc/​apache2/​mods_available/​headers.conf''​ et placez-y ceci :
  
-=== Permettre à chaque utilisateur ​d'avoir son propre site dans public_html ===+<file - headers.conf>​ 
 +# Cet en-tête empêche MSIE d'interpréter des fichiers comme quelque chose 
 +# d'​autre que ce qui est défini en dans que type de contenu ​dans les en-tes HTTP 
 +
 +Header set X-Content-Type-Options:​ "​nosniff"​
  
-Créer un répertoire public_html et lui donner ​les droits de lecture et d'exécution +# Cet en-tête empêchera ​les autres sites d'intégrer les pages de ce site dans des frames. 
-<​code>​ +# C'​est ​une mesure de protection contre les attaques par détournement de clic (clickjacking) 
-mkdir ~/​public_html +# Attention cet en-tête est rendue obsolète par les CSP 
-echo '<?php echo "​PHP ​est actif dans votre public_html";​ ?>' > ~/​public_html/​index.php +
-chmod -R 755 ~/​public_html +Header set X-Frame-Options:​ "​sameorigin"​
-</​code>​+
  
-===Activer ​l'​exécution en php pour le module userdir (à partir de Ubuntu 10.04 (Lucid)) === +# Cet en-tête est obsolète et doit être spécifiquement désactivée avec la valeur O 
-Editer /​etc/​apache2/​mods-enabled/​php5.conf et commenter les lignes correspondantes (avec ##) dans le fichier php5.conf qui se trouve dans /​etc/​apache2/​mods-enabled.+# Pour une protection XSS, utilisez des CSP empêchant ​l'​exécution ​des scripts « en ligne » 
 +Header set X-XSS-Protection "​0"​
  
-<​file>​ +En-tête qui permet de masquer la technologie utilisée ​(par exemple PHP 7.0
-<​FilesMatch "​.+\.ph(p[345]?​|t|tml)$">​ +# Pas une sécuritémais inutile de transmettre cette information aux clients 
-    SetHandler application/​x-httpd-php +
-</​FilesMatch>​ +Header always unset "X-Powered-By"​
-<​FilesMatch "​.+\.phps$">​ +
-    SetHandler application/​x-httpd-php-source +
-    # Deny access to raw php sources by default +
-    ​To re-enable it's recommended to enable access to the files +
-    # only in specific virtual host or directory +
-    Order Deny,​Allow +
-    Deny from all +
-</​FilesMatch>​ +
-# Deny access to files without filename ​(e.g. '​.php'​+
-<​FilesMatch "​^\.ph(p[345]?​|t|tml|ps)$">​ +
-    Order Deny,Allow +
-    Deny from all +
-</​FilesMatch>​ +
- +
-Running PHP scripts in user directories is disabled by default +
-#  +
-# To re-enable PHP in user directories comment the following lines +
-# (from <​IfModule ...> to </​IfModule>​.) Do NOT set it to On as it +
-# prevents .htaccess files from disabling it. +
-##<​IfModule mod_userdir.c>​ +
-##    <​Directory /​home/​*/​public_html>​ +
-##        php_admin_flag engine Off +
-##    </​Directory>​ +
-##</​IfModule>​+
 </​file>​ </​file>​
  
-== (Pour mémoire) ​ Ancienne version de php5.conf == +Vous pouvez ensuite activer ​le module ​
-<​file>​ +<​code>​sudo a2enmod ​headers</​code>​ et recharger la configuration d'Apache.
-<​IfModule mod_php5.c>​ +
-    <​FilesMatch "​\.ph(p3?​|tml)$">​ +
- SetHandler application/​x-httpd-php +
-    </​FilesMatch>​ +
-    <​FilesMatch "​\.phps$">​ +
- SetHandler application/​x-httpd-php-source +
-    </​FilesMatch>​ +
-    # To re-enable php in user directories comment the following lines +
-    # (from <​IfModule ...> to </​IfModule>​.) Do NOT set it to On as it +
-    # prevents .htaccess files from disabling it. +
-    ##<​IfModule mod_userdir.c>​ +
-    ##      <​Directory /​home/​*/​public_html>​ +
-    ##        php_admin_value engine Off +
-    ##     </​Directory>​ +
-    ##</​IfModule>​ +
-</​IfModule>​ +
-</​file>​ +
- +
-===Optionnel : Personnaliser votre répertoire de site === +
-  +
-Il est possible de changer ​le dossier par défaut (public_html) de votre site par un autre répertoire. +
- +
-==Éditer le fichier de configuration de userdir == +
- +
-Modifier la variable <<​UserDir public_html>>​ dans le fichier /​etc/​apache2/​mods-available/​userdir.conf ​: +
-<​file><​IfModule mod_userdir.c>​ +
- UserDir public_html +
- UserDir disabled root +
- +
- <​Directory /​home/​*/​public_html>​ +
- AllowOverride FileInfo AuthConfig Limit Indexes +
- Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec +
- <Limit GET POST OPTIONS>​ +
- Require all granted +
- </​Limit>​ +
- <​LimitExcept GET POST OPTIONS>​ +
- Require all denied +
- </​LimitExcept>​ +
- </​Directory>​ +
-</​IfModule>​ +
- +
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet +
-</​file>​ +
- +
-===Activer le module userdir=== +
-<​code>​ +
-sudo a2enmod ​userdir +
-sudo /​etc/​init.d/​apache2 reload +
-</​code>​ +
- +
-Dans le navigateur web rendez-vous à l'​adresse http://​127.0.0.1/​~nom_du_user ​et vérifier que le message <<//​PHP est actif dans votre public_htm//>>​ s'affiche. +
  
-==== mod_proxy ou comment rediriger certains domaines vers certaines machines ====+Les en-têtes peuvent également être définies au niveau de chaque site dans les fichiers d'​hôte virtuels.
  
-Mon problème était le suivant ​:+Si vous utilisez HTTPS, vous voudrez certainement définir l'​en-tête [[wpfr>​HTTP_Strict_Transport_Security|Strict-Transport-Security]],​ exemple ​: 
 +<​file><​VirtualHost *:443> 
 + … 
 + Header always set Strict-Transport-Security:​ "​max-age=31536000;​includeSubDomains;​preload"​ 
 +</​VirtualHost></​file>​
  
-**routeur ​:** +Enfin, toujours dans un objectif de sécurité, vous devez utiliser les en-têtes [[https://developer.mozilla.org/​en-US/​docs/​Web/​HTTP/​CSP|Content-Security-Policy]],​ exemple :
-  * renvoi du port 80 sur la machine 192.168.0.10+
  
-**machine 192.168.0.10 ​:*+<​file>​Header always set Content-Security-Policy"​default-src '​self';​ img-src ​*; media-src media1.com media2.com; script-src userscripts.example.com"</file>
-  * virtualhosts renvoyant vers plusieurs dossiers +
-  * toto.mondomaine.com va vers /​home/​toto/​www +
-  * titi.mondomaine.com va vers /​home/​titi/​www +
-  * etc... +
-  * et 000-default va vers /var/www+
  
-**machine 192.168.0.11 ​:** +Pour voir les en-têtes envoyées par votre serveur vous pouvez utiliser des outils en ligne de commande comme 
-  * virtualhosts renvoyant vers plusieurs dossiers +<​code>​curl -I https://example.com</code> ou une extension du navigateur web qui permet d'​afficher les en-têtes HTTP.
-  * tata.mondomaine.com va vers /home/tata/www +
-  * tutu.mondomaine.com va vers /home/​tutu/​www +
-  * etc... +
-  * et 000-default va vers /var/www+
  
-Sauf que si on met http://​tata.mondomaine.com dans son navigateur on se retrouve avec le site par defaut de 192.168.0.10....+==== Modsecurity ====
  
-Donc, il faut appeller mod_proxy à la rescousse.+Il s'agit d'un pare-feu pour Apache.
  
-sur 192.168.0.10 ​: +Une [[:modsecurity|page de la documentation]] est consacrée à ce module.
-activer le module ​proxy avec : +
-  a2enmod proxy +
-créer un virtualhost /​etc/​apache2/​sites-available/​tata.mondomaine.com qui contient :+
  
-  <​VirtualHost 192.168.0.10:​80>​ +===== Sécurité ​ =====
-          ProxyRequests Off +
-          ProxyPreservehost on +
-          ServerName tata.mondomaine.com +
-          ProxyPass ​ / http://​192.168.0.11/​ +
-          ProxyPassReverse / http://​192.168.0.11/​ +
-          <​Proxy>​ +
-              Order Allow,​Deny +
-              Allow from all +
-          </​Proxy>​ +
-  </​VirtualHost>​+
  
-Activer ce fichier : +<note important>​Sans chiffrer les communications avec le module //SSL//, toutes les informations échangées entre le navigateur et le serveur, contenu web et variables d'​authentification,​ transitent en clair sur InternetUne des premières règles de sécurité pour Apache est donc de forcer l'​utilisation de [[#HTTPS]].</​note>​
-  sudo a2ensite tata.mondomaine.com+
  
-Redémarrer apache+==== Permissions ====
  
-Et c'est tout :)+Par défaut sur Ubuntu, Apache ​est exécuté par l'​utilisateur //​www-data//,​ qui appartient au groupe //​www-data//​.\\ 
 +Quand Apache créé un fichier sur l'​espace disque (via par exemple un [[#​mod_php|script PHP]]), celui-ci appartient donc par défaut à l'​utilisateur //​www-data//​ et au groupe //​www-data//​. De la même manière, le serveur ne peut accéder qu'au contenu accessible par //​www-data//​.
  
-Si ca veut pas, activer aussi les modules proxy_http et proxy_connect+Pour pouvoir facilement éditer ​les fichiers tout en conservant un bon niveau de sécurité il est recommandé de modifier le propriétaire des fichiers auxquels peut accéder Apache.\\ 
 +Le propriétaire devrait être l'​utilisateur qui va maintenir le contenu localement, mais le groupe propriétaire devrait être //​www-data//​ :((cette méthode se base sur [[https://​serverfault.com/​a/​357109|cette réponse]], qui a reçu le plus d'avis positifs sur [[wpfr>​Stack_Exchange_Network|Server Fault]].)) 
 +<​code>​sudo chown -R $USER:​www-data /​var/​www/​example</​code>​
  
-bien sûr on peut rajouter ​dans /etc/hosts: +On change ensuite les [[:​permissions]] du contenu de manière à ce que l'​utilisateur puisse le lire et le modifier, mais qu'​Apache (dans le groupe ​//www-data//) ne puisse que le lire.
-  192.168.0.11 tata.mondomaine.com+
  
-comme çadans ProxyPass ​et ProxyPassReverse on peut utiliser ​les noms de domaine ​à la place des adresses+On attribue donc les [[:droits]] ''​%%rwx r-x ---%%''​ (750) pour les répertoires, et ''​%%rw- r-- ---%%''​ (640) pour les fichiers : 
 +<​code>​chmod -R a-rwx,​u+rwX,​g+rX /​var/​www/​example</​code>​ 
 +(pour rappel ''​x''​ concerne les répertoires et les fichiers tandis que ''​X''​ ne concerne que les répertoires - et autorise ​à les ouvrir)
  
-et comme c'​est ​un proxy, beaucoup ​d'autres options sont envisageables mais je n'irai pas plus loin pour aujourd'hui.+Si Apache doit pouvoir modifier du contenu (pour un répertoire ​d'upload par exemple), on ne modifie que la permission concernant le groupe (le second numéro), donc ''%%rwx rwx ---%%''​ (770) pour les répertoires et ''%%rw- rw- ---%%''​ (660) pour les fichiers : 
 +<​code>​chmod -R g+w /​var/​www/​example/​upload</​code>​
  
-===== Optimiser votre serveur apache2 =====+==== Fail2ban ​====
  
-Il est possible ​d'optimiser votre serveur apache.+Pour limiter les attaques par force brute sur un système d'​authentification d'une application web, il est parfois recommandé ​d'utiliser l'​application [[:​Fail2ban]].
  
-====Accélérateurs PHP====+===== Problèmes courants =====
  
-Permet de mettre en cache le code PHP déjà compilé. Ceci évitera de recompiler les fichiers PHP à chaque foisce qui augmente de façon considérable ​les performances de votre serveur et donc de vos sites.+<note tip>En cas d'​erreur du serveurconsultez avant tout les rapports d'​erreurs dans le répertoire ''/​var/​log/​apache2''​.
  
-__**Voici un comparatif de ce qui existe actuellement ​:**__+Pour afficher les dernières 40 lignes du journal d'​erreur par défaut ​: 
 +<​code>​sudo tail /​var/​log/​apache2/​error.log -n 40</​code></​note>​
  
-[[http://​dotclear.placeoweb.com/​post/​PHP-accelerator-cache]]+<note tip>Si vous rencontrez un problème avec PHP, consultez également les [[:php#​problemes_courants|problèmes courants spécifiques à PHP]].</​note>​
  
-=== XCache ​===+==== Page blanche ====
  
-Plus moderne et a été réécrit de zéro récemment. Il assure un meilleur support des versions récentes de PHP, au contraire ​des anciens eaccelerator and co.+Si vous utilisez ​PHP, une page blanche indique très probablement que l'​affichage ​des retours d'​erreur sur la page n'est pas activé.
  
-[[:xcache]]+Vous pouvez l'​activer en suivant ​[[php#​activer_le_rapport_d_erreur|cette documentation]].
  
-=== eAccelerator === 
  
-[[:​eaccelerator]]+==== Erreur 403 ====
  
 +Une erreur 403 indique un problème d'​autorisation.
  
-===== Empêcher le démarrage automatique d'apache ===== +  * Vérifiez les [[#​permissions]] concernant les fichiers du contenu web que vous souhaitez partager vis-à-vis de l'utilisateur et du groupe //​www-data//​. 
-<note warning> Méthode déconseillée pour un serveur en production ! </note>+  * Vérifiez aussi la valeur de la directive [[https://​httpd.apache.org/​docs/​current/​fr/​howto/​access.html|Require]] : ''​Require all granted''​ pour toujours autoriser l'​accès aux ressources.  
 +  * Il est aussi possible que cette erreur soit affichée faute de fichier [[#index]].
  
-<​note>​Dans le cas d'un ordinateur de bureau, **apache** est souvent utilisé de façon occasionnelle pour développer et tester en local.+==== Erreur 404 ====
  
-Pour les amoureux de l'écologie c'est de l'énergie gaspillée sans raison valable+Cette erreur indique que le contenu demandé n'a pas été trouvé. 
 +  * En premier lieu vérifiez évidemment ​l'existence des contenus concernés. 
 +  * Le chemin vers ce contenu sur l'espace disque, relatif à la directive //​[[#​hotes_virtuels|DocumentRoot]]//,​ doit correspondre au [[:​web#​url|chemin ​de l'URL]] appelée. 
 +  * L'​erreur peut aussi être due à une mauvaise [[#​mod_rewrite|réécriture d'​URL]].
  
-Pour les machines à faibles ressources, apache diminue la vitesse de démarrage  ​+==== Erreur 500 ====
  
-Autant ​de raisons valables pour démarrer manuelle apache quand nous en avons besoin et enlever le <<[[https://fr.wikipedia.org/​wiki/​Daemon_%28informatique%29|daemon]]>>/​service de démarrage automatique ! </​note>​+Il s'agit d'une erreur fatale du serveur, qui peut être par exemple liée à une erreur ​de syntaxe dans un fichier ​[[#.htaccess]].
  
-==== Modifier ​le service apache avec upstart ==== +Consultez ​le log d'erreur de votre hôte virtuel pour en savoir plus.
-Se reporter à l'exemple : [[upstart#​utilisation|Upstart]]+
  
-====  +==== Attente puis erreur 503 "​service indisponible" ​====
-==== Restaurer le démarrage automatique d'​apache avec update-rc.d ​====+
  
-<​code>​ user@PCMachine:~$ sudo update-rc.d apache2 default </​code>​+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 infinieEn 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.
  
 +==== Localhost inaccessible ====
 +**Juillet 2024** (sous Ubuntu 24.04) : une erreur de configuration du fichier etc/​apache2/​mods-enabled/​php8.2.load empêche le démarrage d'​apache2 et donc l'​accès à localhost. Ouvrez ce fichier et lisez la 3e ligne qui renvoie sur le fichier /​usr/​lib/​apache2/​modules/​libphp8.2.so En fait (chez moi), ce fichier s'​appelle désormais libphp8.3.so. Il faut donc corriger la ligne de ce premier fichier avec les [[sudo|Droits de super utilisateur]] avec le nom correct. L'​accès est rétabli. ​
  
 +==== Fichiers introuvables dans /javascript ====
  
-===== Désinstallation =====+Cela peut venir du fait que le paquet **//​javascript-common//​** créé un alias global de ''/​javascript''​ vers ''/​usr/​share/​javascript''​ : 
 +<file - /​etc/​apache2/​conf-available/​javascript-common.conf>​Alias /javascript /​usr/​share/​javascript/​
  
-Pour supprimer cette application,​ il suffit de :\\ +<​Directory "/​usr/​share/​javascript/">​ 
-  * [[:​tutoriel:​comment_supprimer_un_paquet|supprimer les paquets]]. Vous devez supprimer tous les paquets que vous avez installés. ​La configuration ​de l'application sera conservée ou supprimée selon la méthode ​de désinstallation que vous choisirez ('sudo apt-get purge [paquet]' ​pour virer les configs et les fichiers, 'sudo apt-get remove [paquet]' ​pour garder la config.)\\+        Options FollowSymLinks MultiViews 
 +</​Directory></​file>​ 
 +La solution est soit de supprimer ce paquet, soit de renommer le répertoire ''​javascript'​' ​à la racine ​de l'hôte virtuelpar exemple en ''​js''​.
  
 ===== Liens utiles ===== ===== Liens utiles =====
  
-   * (en) [[http://​apache.org/​|Site officiel ​Projets ​Apache]] +   * (en) [[https://​apache.org/​|Site officiel ​du projet ​Apache]] 
-   * [[http://​httpd.apache.org/​docs/​|Documentation Apache]] +   * [[https://​httpd.apache.org/​docs/current/​|Documentation Apache ​officielle en français]] 
-   * [[tutoriel/​securiser_apache2_avec_ssl]] +   * [[tutoriel/​securiser_apache2_avec_ssl|Sécuriser Apache 2 avec SSL]] 
-   * [[lamp |installer un serveur LAMP]] +   * [[:lamp|installer un serveur LAMP]] 
-   * [[lamp_plus|serveur LAMP aller plus loin]] +   * [[:​tutoriel:​lamp_repertoires_de_travail|Serveur LAMP - Créer un/des répertoires de travail]] 
-   ​* ​(fr) [[https://​www.it-connect.fr/​cours-tutoriels/​administration-systemes/​serveur-web/​apache/​|Plusieurs tutoriels sur la configuration d'​Apache sur IT-Connect]] +   * [[:​docker_lamp|installer un serveur LAMP avec Docker]] 
-   ​* ​(fr) [[http://documentation.online.net/fr/​serveur-dedie/​tutoriel/​installation-solution-lamp_apache-php-mysql]]+   * [[https://​www.it-connect.fr/​cours-tutoriels/​administration-systemes/​serveur-web/​apache/​|Plusieurs tutoriels sur la configuration d'​Apache sur IT-Connect]] 
 +   ​* ​discussion au sujet de cette documentation sur le forum : https://forum.ubuntu-fr.org/viewtopic.php?​pid=21886288
        
  
 ---- ----
-// Contributeurs : [[:​utilisateurs:​benje]],​ [[:​utilisateurs:​Pepou06]],​ [[:​utilisateurs:​Oxossi]],​ [[:​utilisateurs:​Karting06]],​ [[:​utilisateurs:​albanmartel]]. //+// Contributeurs : --- //​[[:​utilisateurs:​bruno|bruno]],​ [[:​utilisateurs:​krodelabestiole]], ​[[:​utilisateurs:​benje]],​ [[:​utilisateurs:​Pepou06]],​ [[:​utilisateurs:​Oxossi]],​ [[:​utilisateurs:​Karting06]],​ [[:​utilisateurs:​albanmartel]]. //
  • apache2.1520761765.txt.gz
  • Dernière modification: Le 11/03/2018, 10:49
  • par bruno