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
utilisateurs:yoboy:sandbox2 [Le 24/03/2018, 09:35]
yoboy
utilisateurs:yoboy:sandbox2 [Le 24/03/2018, 09:36] (Version actuelle)
yoboy
Ligne 1: Ligne 1:
-{{tag>​réseau serveur apache}} +rien en ce moment
- +
----- +
-{{ apache_logo.png?​80nolink| Logo du logiciel 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)]]. +
- +
- +
-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 ===== +
- +
-  * Quelques connaissances de base des protocoles HTTP, les noms de domaine et le DNS  et les réseaux IP ; +
-  * 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). +
- +
- +
-===== Installation ===== +
- +
-====Installation de base==== +
- +
-[[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​apache2|apache2]]**. +
- +
-À la suite de cette installation votre serveur doit fonctionner et être accessible à l'​adresse suivante [[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) +
- +
-Si vous voulez installer une pile LAMP complète consultez [[:lamp|la page LAMP]] +
- +
- +
- +
- +
- +
- +
- +
-===== Configuration ===== +
- +
- +
-==== Les fichiers de configuration ==== +
- +
- Tous les **fichiers de configuration** de Apache2 sont dans le dossier **/​etc/​apache2**.\\ +
- ​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. +
- +
-  * **envvars** est utilisé pour définir des variables d'​environnement propres à Apache ; +
-  * **ports.conf** contient la directive //listen// qui spécifie les adresses et les ports d'​écoute ; +
-  * **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>​ +
- +
-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. +
- +
-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 : +
- +
-<​code>​sudo a2enconf charset.conf</​code>​ +
-<​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 ==== +
- +
-La spécification des **interfaces** sur lesquelles **Apache2 écoutera** les requêtes se fait dans **ports.conf** avec la directive **Listen**.\\ +
-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>​ +
- Listen 443 +
-</​IfModule>​ +
- +
-<​IfModule mod_gnutls.c>​ +
- Listen 443 +
-</​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.\\ +
- - 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** .\\ +
- - 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 )\\ +
- +
-<​file>​ +
- #​interface (local ou internet) connectée sur port standard +
- ​Listen X.X.X.X:​80 +
-</​file>​ +
- +
-Après modification vous devrez recharger la configuration d'​Apache : +
-<​code>​sudo systemctl reload apache2</​code>​ +
- +
-==== Configurer un site web ==== +
- +
-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...).\\ +
-<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>​ +
-# 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>​ +
- +
-Enregistrez les changements sous un autre nom (ex: example.com.conf). +
- +
-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/​**.\\ +
-En utilisant : +
- +
-<​code>​sudo a2ensite example.com.conf</​code>​ +
- +
-Pour désactiver un site, utiliser +
-<​code>​sudo a2dissite example.com.conf</​code>​ +
- +
-Après modification,​ activation ou désactivation il faut recharger la configuration d'​Apache : +
-<​code>​sudo systemctl reload apache2</​code>​ +
- +
-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 +
-[[:​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>​ +
- +
-Cela permettra à votre système de faire la correspondance entre le nom de l'​hôte et votre machine locale, et votre site sera accessible localement avec http://​projet1 +
- +
- +
- +
-==== Utiliser le protocole HTTPS avec Apache ​ ==== +
- +
-Le protocole HTTPS permet de chiffrer les échanges entre le serveur et le client grâce à TLS. +
- +
-Consultez la page [[tutoriel/​securiser_apache2_avec_ssl|Utiliser HTTPS avec Apache2]] +
- +
- +
-==== Droits d'​accès sur les fichiers et dossiers du site ==== +
- +
-Pour qu'​Apache fonctionne avec un site présent dans le dossier /​srv/​web/​example.com/​www,​ il faut que l'​utilisateur www-data puisse au moins lire les fichiers et accéder aux dossiers qui s'y trouvent.  +
-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-x) et 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 : +
- +
-<​code>​sudo chmod -R +rX /​srv</​code>​ +
- +
-La question du propriétaire et groupe des fichiers, et des droits pose fréquemment problème aux débutants. C'est une question complexe qui n'a pas de réponse universelle. Tout 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. +
-  +
- +
- +
- +
- +
- +
-===== Utilisation ===== +
- +
-Pour arrêter apache2 : +
-<​code>​sudo systemctl stop apache2</​code>​ +
-Pour lancer apache2 : +
-<​code>​sudo systemctl start apache2</​code>​ +
-Pour relancer apache2 : +
-<​code>​sudo systemctl restart apache2</​code>​ +
-Pour recharger la configuration d'​apache2 : +
-<​code>​sudo systemctl reload apache2</​code>​ +
- +
-Pour voir la version d'​Apache utilisée : +
-<​code>​sudo apache2ctl -v</​code>​ +
-Pour tester l'​ensemble de la configuration d'​Apache : +
-<​code>​sudo apache2ctl -t</​code>​ +
-Pour tester la configuration des hôtes virtuels : +
-<​code>​sudo apache2ctl -t DUMP_VHOSTS</​code>​ +
-Pour voir les modules d'​Apache chargés : +
-<​code>​sudo apache2ctl -M</​code>​ +
- +
-==== Erreur au démarrage ==== +
- +
-Au démarrage d'​Apache,​ il est possible que celui-ci ne soit pas capable de déterminer un nom de domaine. Ce message sera affiché dans le terminal : +
- +
->Could not reliably determine the server'​s fully qualified domain name, using 127.0.1.1 for ServerName +
- +
-Pour corriger l'​erreur il suffit de renseigner la directive ServerName dans l'​hôte virtuel par défaut (/​etc/​apache2/​sites-available/​000-default.conf). +
-Exemple : +
-<​code>​ServerName localhost</​code>​ +
- +
-Puis de recharger la configuration d'​Apache. +
- +
-===== Modules ===== +
- +
-Il est possible d'​ajouter ou supprimer des modules à apache, ajoutant des fonctionnalités à votre serveur web. +
-Tous les modules sont répertoriés ici : /​etc/​apache2/​mods-available +
-Ces modules sont nombreux, aussi nous n'en montrerons qu'un seul pour l'​exemple. +
- +
-==== Activer la ré-écriture des URL ==== +
- +
-Chargez le module //rewrite// : +
-<​code>​sudo a2enmod rewrite</​code>​ +
- +
-Ensuite, deux possibilités s'​offrent à vous suivant vos capacités de gestion de votre serveur : +
-  * **pour un serveur mutualisé par exemple** : placer ​ un fichier .htaccess avec des règles de ré-écriture à la racine de votre site. Pour cela les fichiers .htaccess doivent être autorisés par la directive //​Allowoverride//​. +
-  * **pour un serveur dédié ou un serveur personnel** (sur votre propre distribution) il est conseillé d'​ajouter les règles de ré-écriture directement dans le fichier de configuration de l'​hôte virtuelm en recopiant les lignes suivantes à la fin dudit fichier. +
- +
- +
-Un petit exemple : +
- +
-<​code>​ +
-RewriteEngine 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 +
-# ^ 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>​ +
- +
- +
-===== Empêcher le démarrage automatique d'​apache ===== +
-<note warning> Méthode déconseillée pour un serveur en production ! </​note>​ +
- +
-<​note>​Dans le cas d'un ordinateur de bureau, **apache** est souvent utilisé de façon occasionnelle pour développer et tester en local. +
- +
-Bien qu'​apache consomme peu de ressources, our les amoureux de l'​écologie c'est de l'​énergie gaspillée sans raison valable. Pour les machines à faibles ressources, apache diminue la vitesse de démarrage ​  +
- +
-Pour désactiver le démarrage automatique du service apache2 : +
-<​code>​sudo systemctl disable apache2</​apache>​ +
-Pour vérifier si service apache2 est activé : +
-<​code>​sudo systemctl is-enabled apache2</​apache>​ +
- +
- +
- +
-===== Désinstallation ===== +
- +
-Pour supprimer cette application,​ il suffit de :\\ +
-  * [[:​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.)\\ +
- +
-===== Liens utiles ===== +
- +
-   * (en) [[http://​apache.org/​|Site officiel Projets Apache]] +
-   * [[http://​httpd.apache.org/​docs/​|Documentation Apache]] +
-   * [[tutoriel/​securiser_apache2_avec_ssl]] +
-   * [[lamp |installer un serveur LAMP]] +
-   * [[lamp_plus|serveur LAMP aller plus loin]] +
-   * (fr) [[https://​www.it-connect.fr/​cours-tutoriels/​administration-systemes/​serveur-web/​apache/​|Plusieurs tutoriels sur la configuration d'​Apache sur IT-Connect]] +
-   * (fr) [[http://​documentation.online.net/​fr/​serveur-dedie/​tutoriel/​installation-solution-lamp_apache-php-mysql]] +
-   * 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]]. //+
  • utilisateurs/yoboy/sandbox2.txt
  • Dernière modification: Le 24/03/2018, 09:36
  • par yoboy