Différences
Ci-dessous, les différences entre deux révisions de la page.
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 01/02/2020, 16:23] krodelabestiole [mod_rewrite] |
apache2 [Le 07/10/2021, 18:36] Amiralgaby chemin logo changé + tag Focal |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | {{tag>réseau serveur internet Xenial Bionic}} | + | {{tag>réseau serveur internet Xenial Bionic 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 ====== | ||
- | Un [[https://fr.wikipedia.org/wiki/Serveur_HTTP|serveur HTTP]] permet à un site web de communiquer avec un navigateur en utilisant le protocole [[https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol|HTTP(S)]] et ses extensions ([[https://fr.wikipedia.org/wiki/WebDAV|WebDAV]], etc.). **Apache** est probablement le serveur HTTP le plus populaire. C'est donc lui qui met à disposition la plupart des sites internet du [[https://fr.wikipedia.org/wiki/World_Wide_Web|WWW]].\\ | + | Un [[https://fr.wikipedia.org/wiki/Serveur_HTTP|serveur HTTP]] permet à un site web de communiquer avec un navigateur en utilisant le protocole [[https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol|HTTP(S)]] et ses extensions ([[https://fr.wikipedia.org/wiki/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 [[https://fr.wikipedia.org/wiki/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]]. | Il est produit par la //Apache Software Foundation//. C'est un logiciel libre fourni sous la [[wpfr>Licence_Apache|licence spécifique Apache]]. | ||
Ligne 17: | Ligne 15: | ||
===== Installation ===== | ===== Installation ===== | ||
- | Pour installer Apache seul, [[:tutoriel:comment_installer_un_paquet|installez simplement le paquet]] **[[apt>apache2|apache2]]**. | + | Pour installer Apache seul, [[:tutoriel:comment_installer_un_paquet|installez simplement le paquet]] **[[apt>apache2]]**. |
Pour installer Apache avec PHP et MySQL ou MariaDB, reportez vous à l'[[:lamp#installation|installation de LAMP]]. | Pour installer Apache avec PHP et MySQL ou MariaDB, reportez vous à l'[[:lamp#installation|installation de LAMP]]. | ||
Ligne 199: | Ligne 197: | ||
<code>sudo systemctl reload apache2</code> | <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. | + | <note tip> |
+ | On peut définir un hôte virtuel sans avoir de nom de domaine enregistré chez un registrar. | ||
+ | |||
+ | On peut soit 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), soit 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 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 : | 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 : | ||
Ligne 208: | Ligne 209: | ||
Avec la directive ''ServerName example'' dans le //VirtualHost//, l'hôte virtuel sera accessible depuis ce client à l'adresse [[http://example/]]. | 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> | ||
===== HTTPS ===== | ===== HTTPS ===== | ||
Ligne 216: | Ligne 218: | ||
Il n'est ni nécessaire, ni faisable de mettre en place HTTPS avec un certificat valide sur un serveur de développement local. | Il n'est ni nécessaire, ni faisable de mettre en place HTTPS avec un certificat valide sur un serveur de développement local. | ||
- | 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/|Cerbot]]** de [[https://letsencrypt.org/|Let's Encrypt]]. | + | 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> | <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> | ||
Ligne 236: | Ligne 238: | ||
=== Installation de Certbot === | === Installation de Certbot === | ||
- | Pour installer Certbot, [[:ppa#ajout_d_un_ppa_a_vos_sources_logicielles|ajoutez le PPA]] officiel **ppa:certbot/certbot**, puis installez le paquet [[apt>python-certbot-apache]] : | + | Pour installer Certbot : |
- | <code>sudo apt install python-certbot-apache</code> | + | <code>sudo apt install python3-certbot-apache</code> |
=== Utilisation de Certbot === | === Utilisation de Certbot === | ||
Ligne 252: | Ligne 254: | ||
=== Renouvellement automatique === | === Renouvellement automatique === | ||
- | Pour information c'est la commande ''certbot renew'' qui permet de renouveler les certificats très simplement, mais Certbot créé automatiquement une [[:cron|tâche cron]] à cet effet dans ''/etc/cron.d/certbot''. | + | Pour information c'est la commande ''certbot renew'' qui permet de renouveler les certificats très simplement, mais 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). |
Le script est lancé automatiquement toutes les 12 heures, mais les certificats ne seront renouvelés que si nécessaire. En principe il n'y a donc rien à faire. | Le script est lancé automatiquement toutes les 12 heures, mais les certificats ne seront renouvelés que si nécessaire. En principe il n'y a donc rien à faire. | ||
Ligne 329: | Ligne 331: | ||
<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> | <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> | ||
+ | <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 : | ||
+ | <code> | ||
+ | <Directory /var/www/html> | ||
+ | AllowOverride All | ||
+ | </Directory> | ||
+ | </code> | ||
+ | </note> | ||
==== mod_proxy==== | ==== mod_proxy==== | ||