« LINUX:HTTP » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(25 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
---- | |||
''→ [[LINUX:Serveur WEB|retour au menu du serveur Web]]'' | |||
---- | |||
__FORCETOC__ | __FORCETOC__ | ||
=But= | =But= | ||
Sous Linux, distribution Fedora, Apache est un serveur Web principalement pour les protocoles HTTP et HTTPS. | Sous Linux, distribution Fedora, Apache est un serveur Web bien connu principalement pour les protocoles HTTP et HTTPS. Il existe bien sûr d'autres programmes de serveur Web. | ||
Pour le volet sécurité, les certificats sont nécessaires; voyez l'article [[LINUX:Certificats|suivant]]. | Pour le volet sécurité, les certificats sont nécessaires; voyez l'article sur la [[LINUX:Certificats|Sécurité via les certificats]]. | ||
=Installation= | |||
Sous Fedora, les paquets suivants sont à installer: | |||
* httpd : Apache | |||
* mod_ssl : le module SSL pour le protocole HTTPS | |||
* mod_http2 : activation de la couche application HTTP/2, plus performante et sécurisée qu'HTTP/1 | |||
avec les commandes: | |||
dnf install httpd | |||
dnf install mod_ssl | |||
dnf install mod_http2 | |||
=Structure des fichiers de configuration= | |||
Les paramètres de configuration d'Apache se trouvent sous le répertoire "/etc/httpd" dans divers sous-répertoires. | |||
* le sous-répertoire "conf" contient le fichier de paramètres de base "httpd.conf"; il contient aussi les fichiers "/etc/mime.types" et "magic" appelé par le précédent. Ces derniers permettent de lier un type d'extension de fichier (ou de contenu) à une catégorie d'application (image, vidéo, son, texte, PDF, ...). | |||
* le sous-répertoire "conf.modules.d" contient les fichiers d'activation des nombreux modules d'Apache"; il suffit de commenter (mettre le caractère "#") devant la ligne correspondante pour désactiver le module. Ils sont appelés par le fichier "/etc/httpd/conf/httpd.conf". | |||
* le sous-répertoire "conf.d" contient les fichiers de paramètres de fonctionnalités générales tels SSL ou PHP. Il contient aussi les fichiers de paramètres des différentes applications Web de vos sites. Ils sont appelés par le fichier "/etc/httpd/conf/httpd.conf". | |||
Ce dernier sous-répertoire "conf.d" est soumis aux mises à jour. Or il y a des fonctionnalités que l'on ne désire pas activer tel celle du fichier "welcome.conf"; si on l'élimine, il sera à nouveau recréé suite à la mise à jour suivante. Dans un soucis d'organisation et de clarté, nous créons une série de sous-répertoires: | |||
* un pour les configurations communes nommé "conf.commun.d" | |||
* divers autres par domaines ou groupe de domaines nommés par Apache de "virtualhost" de format "conf.<vhosts>.d" ou "conf.<groupe>.d". | |||
Ces différents sous-répertoires seront appelés par le fichier "/etc/httpd/conf/httpd.conf" et le sous-répertoire "conf.d" en sera éliminé. On reclasse et modifie selon nos besoins le contenu de "conf.d" dans les autres et nous en créons de nouveaux. | |||
Ces inclusions peuvent être imbriquées. | |||
=Structure des répertoires des sites= | |||
Par défaut, le répertoire "/var/www/html" est le répertoire où on met les scripts de nos sites et le répertoire "/var/www/cgi-bin" contient les CGI. | |||
Par contre, les applications Web qui viennent avec la distribution sont habituellement placée sous le répertoire "/usr/share" dans un répertoire portant le nom de l'application. | |||
Nous n'allons pas utiliser l'arborescence "/var/www" dont nous désactiverons l'accès. Nous préférons placer les sources de nos sites sur un autre disque non soumis au trafic du système. Nous nommerons ce répertoire lié à un disque "/web" dans les exemples suivants. On peut aussi mettre les documents annexes plus gourmands (images, vidéo, PDF,...) sur un disque à part plus gros. | |||
Nous n'utiliserons pas de CGI personnel. | |||
=Stratégie= | |||
Nous allons créer une infrastructure ouverte sur Internet gérant plusieurs domaines en plus de la machine locale. Il est sûr que cette infrastructure est imparfaite mais elle présentera quelques approches faisant apercevoir les énormes possibilités de ce type de produit Apache. | |||
Le schéma suivant présente le squelette de cette organisation. Les flèches représentent les différents niveaux d'inclusion ou de dépendance. | |||
[[FILE:LINUX:Serveur.web.png|800px|center]] | |||
Au début, nous passerons en revue les fichiers de paramétrages généraux. Nous ne modifierons pas les "Mimes". Nous aborderons ensuite la notion de "VirtualHost" qui permet de présenter notre machine sous un aspect d'un hébergement de multiples machines. Nous nous orienterons vers des échanges cryptés grâce au SSL et à ses certificats. Chaque machine virtuelle donne accès à divers sites sélectionnés. Cette partie commence par un paramétrage Apache de ce site qui renvoie vers le logiciel Web concerné. A partir de l'étape "machine", ce niveau et les suivants sont à démultiplier autant de fois qu'il y a de machines virtuelles. Il est extensible à volonté. | |||
=[[LINUX:HTTP - httpd.conf|Fichier de paramètres de base : httpd.conf]]= | |||
Par défaut, le fichier "/etc/httpd/conf/httpd.conf" constitue le point d'entrée du paramétrage d'Apache. | |||
=[[LINUX:HTTP - Paramétrage des modules|Paramétrage des modules]]= | |||
Le logiciel Apache est accompagné d'un grand nombre de modules qui chacun vient ajouter une fonctionnalité particulière. On peut en ajouter à la liste installée d'office. | |||
Chaque module peut être activé ou désactivé. Ce paramétrage se retrouve dans le répertoire "/etc/httpd/conf.modules.d". | |||
=[[LINUX:HTTP - Paramétrage commun|Paramétrage commun]]= | |||
Le répertoire "/etc/httpd/conf.d" comporte des configurations particulières propre à un logiciel. On peut les classer en deux catégories: | |||
* ceux ayant une portée générale | |||
* ceux propres à un site | |||
Nous allons individualiser parmi la première catégorie, ceux qui nous intéressent et éventuellement en ajouter nos propres fichiers. | |||
=Machines virtuelles= | |||
Notre machine Linux a un nom repris dans le fichier "/etc/hostname" et que l'on peut retrouver dans le fichier "/etc/hosts" lié a l'adresse IP de la machine. | |||
Un machine est toujours associée à une adresse IP. Dans notre exemple, nous sommes dans un LAN privé. Son adresse IP est "192.168.1.100" et son nom de machine "serverdb.home.dom". Son alias est "serverdb". Dans un but pédagogique, nous avons ajouté dans le fichier "/etc/hosts" l'alias "www.home.dom". | |||
N'oublions pas l'adresse IP de bouclage local "127.0.0.1" standard sur toute machine, associée au nom "localhost". | |||
Cette machine est accessible par Internet. C'est le router de notre fournisseur d'accès Internet (FAI) qui assure cette liaison. Vu d'Internet, l'adresse IP privée n'est pas connue. Ce sera l'adresse IP publique du router de notre FAI. En ce qui concerne le nom de machine, c'est le DNS mondial qui assure ce service. Voyez l'article sur le [[LINUX:Internet|Serveur visible sur Internet]]. Nous y avons ajouté les noms de machines "www.adbweb.gslb.eu", "adbweb.gslb.eu", "laplanchedenvol.be" et "archive.laplanchedenvol.be". | |||
Ces différents noms et adresses IP seront passés en revue dans la suite de ces articles. | |||
=Certificats= | |||
Un site Web est habituellement accessible via le protocole HTTP mais actuellement c'est le protocole HTTPS qui est fortement conseillé. Il sécurise les échanges par cryptage. Ce dernier protocole HTTPS nécessite des certificats. | |||
Pour nos machines virtuelles vues d'Internet, ces certificats sont disponibles via la plateforme "Let's Encrypt". Nous avons effectué cette tâche sur base de l'article sur [[LINUX:LetsEncrypt|Let's Encrypt: certificats gratuits SSL/TLS]]. | |||
Du côté de nos machines virtuelles privées (serverdb.home.dom, serverdb, www.home.dom, localhost) et ses adresses IP, on suit la procédure de l'article sur les certificats de l'[[LINUX:Extension de la CA privée (V3)|Extension de la CA privée (V3)]]. | |||
Comme cette Autorité de Certification privée est inconnue, ainsi que nos noms de machines virtuelles privées, il faut effectuer diverses opérations sur notre serveur et sur nos autres machines qui travaillent dans notre LAN privés selon l'OS et le client Internet utilisé. Voyez les divers rubriques de l'article sur la [[LINUX:Certificats|Sécurité via les certificats]] ([[LINUX:Fichier HOSTS|Le fichier HOSTS]], [[LINUX:Cryptage sous Mozilla|Certificats sous les applicatifs clients de Mozilla]], [[LINUX:Cryptage sous Internet Explorer, Edge, Chrome|Certificats sous Internet Explorer, Edge, Chrome]] et [[LINUX:Cryptage sous Linux|Certificats sous Linux]]). | |||
=[[LINUX:HTTP - Paramétrage des machines virtuelles, port HTTP|Paramétrage des machines virtuelles, port HTTP]]= | |||
En premier lieu, on va paramétrer les diverses machines virtuelles pour le port HTTP, c'est à dire le n° 80. Toutes vont se ressembler car toute requête sur le port HTTP sera réécrite pour utiliser le port HTTPS. | |||
=[[LINUX:HTTP - Paramétrage des machines virtuelles, port HTTPS|Paramétrage des machines virtuelles, port HTTPS]]= | |||
En second lieu, on va paramétrer les diverses machines virtuelles pour le port HTTPS, c'est à dire le n° 443. | |||
=[[LINUX:HTTP - Paramétrage des sites|Paramétrage des sites]]= | |||
La dernière pièce à paramétrer dans Apache est celle des sites. | |||
=[[LINUX:HTTP - Gestion des accès|Gestion des accès]]= | |||
Un aspect très important a trait à la gestion des accès à vos sites Web en totalité ou partiellement. | |||
=Test de configuration= | |||
Il est important de tester la syntaxe de nos fichiers de configuration avant toute mise en application car s'il y a une erreur, notre serveur Web sera en erreur et sera donc inaccessible. Tant que le serveur Apache n'est pas redémarré, c'est toujours l'ancienne configuration qui est active. | |||
La commande suivante permet ce test: | |||
httpd -t | |||
Si tout va bien vous recevrez un message laconique suivant: | |||
---- | |||
Syntax OK | |||
---- | |||
Cette commande permet d'autres actions telle la commande suivante qui affiche nos différents "Vhosts": | |||
httpd -D DUMP_VHOSTS | |||
D'autres peuvent vous aider comme: | |||
httpd -D DUMP_MODULES | |||
qui fournit la liste des modules chargés | |||
ou | |||
httpd -D DUMP_INCLUDES | |||
pour visionner la hiérarchie des inclusions successives des fichiers de paramètres. | |||
Voyez l'aide pour plus d'options: | |||
httpd -h | |||
=Activation et lancement du service= | |||
Le service à lancer est "httpd.service". La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service. | |||
systemctl enable httpd.service | |||
systemctl start httpd.service | |||
systemctl restart httpd.service | |||
=[[LINUX:Apache sous Ubuntu|Apache sous Ubuntu]]= | |||
Il m'est arrivé d'utiliser Apache sous Ubuntu et de rencontrer quelques problèmes. | |||
---- | |||
''→ [[LINUX:Serveur WEB|retour au menu du serveur Web]]'' | |||
---- | ---- | ||
__NOEDITSECTION__ | __NOEDITSECTION__ | ||
[[Category:LINUX]] | [[Category:LINUX]] |
Dernière version du 26 juin 2025 à 20:28
→ retour au menu du serveur Web
But
Sous Linux, distribution Fedora, Apache est un serveur Web bien connu principalement pour les protocoles HTTP et HTTPS. Il existe bien sûr d'autres programmes de serveur Web. Pour le volet sécurité, les certificats sont nécessaires; voyez l'article sur la Sécurité via les certificats.
Installation
Sous Fedora, les paquets suivants sont à installer:
- httpd : Apache
- mod_ssl : le module SSL pour le protocole HTTPS
- mod_http2 : activation de la couche application HTTP/2, plus performante et sécurisée qu'HTTP/1
avec les commandes:
dnf install httpd dnf install mod_ssl dnf install mod_http2
Structure des fichiers de configuration
Les paramètres de configuration d'Apache se trouvent sous le répertoire "/etc/httpd" dans divers sous-répertoires.
- le sous-répertoire "conf" contient le fichier de paramètres de base "httpd.conf"; il contient aussi les fichiers "/etc/mime.types" et "magic" appelé par le précédent. Ces derniers permettent de lier un type d'extension de fichier (ou de contenu) à une catégorie d'application (image, vidéo, son, texte, PDF, ...).
- le sous-répertoire "conf.modules.d" contient les fichiers d'activation des nombreux modules d'Apache"; il suffit de commenter (mettre le caractère "#") devant la ligne correspondante pour désactiver le module. Ils sont appelés par le fichier "/etc/httpd/conf/httpd.conf".
- le sous-répertoire "conf.d" contient les fichiers de paramètres de fonctionnalités générales tels SSL ou PHP. Il contient aussi les fichiers de paramètres des différentes applications Web de vos sites. Ils sont appelés par le fichier "/etc/httpd/conf/httpd.conf".
Ce dernier sous-répertoire "conf.d" est soumis aux mises à jour. Or il y a des fonctionnalités que l'on ne désire pas activer tel celle du fichier "welcome.conf"; si on l'élimine, il sera à nouveau recréé suite à la mise à jour suivante. Dans un soucis d'organisation et de clarté, nous créons une série de sous-répertoires:
- un pour les configurations communes nommé "conf.commun.d"
- divers autres par domaines ou groupe de domaines nommés par Apache de "virtualhost" de format "conf.<vhosts>.d" ou "conf.<groupe>.d".
Ces différents sous-répertoires seront appelés par le fichier "/etc/httpd/conf/httpd.conf" et le sous-répertoire "conf.d" en sera éliminé. On reclasse et modifie selon nos besoins le contenu de "conf.d" dans les autres et nous en créons de nouveaux.
Ces inclusions peuvent être imbriquées.
Structure des répertoires des sites
Par défaut, le répertoire "/var/www/html" est le répertoire où on met les scripts de nos sites et le répertoire "/var/www/cgi-bin" contient les CGI.
Par contre, les applications Web qui viennent avec la distribution sont habituellement placée sous le répertoire "/usr/share" dans un répertoire portant le nom de l'application.
Nous n'allons pas utiliser l'arborescence "/var/www" dont nous désactiverons l'accès. Nous préférons placer les sources de nos sites sur un autre disque non soumis au trafic du système. Nous nommerons ce répertoire lié à un disque "/web" dans les exemples suivants. On peut aussi mettre les documents annexes plus gourmands (images, vidéo, PDF,...) sur un disque à part plus gros.
Nous n'utiliserons pas de CGI personnel.
Stratégie
Nous allons créer une infrastructure ouverte sur Internet gérant plusieurs domaines en plus de la machine locale. Il est sûr que cette infrastructure est imparfaite mais elle présentera quelques approches faisant apercevoir les énormes possibilités de ce type de produit Apache.
Le schéma suivant présente le squelette de cette organisation. Les flèches représentent les différents niveaux d'inclusion ou de dépendance.

Au début, nous passerons en revue les fichiers de paramétrages généraux. Nous ne modifierons pas les "Mimes". Nous aborderons ensuite la notion de "VirtualHost" qui permet de présenter notre machine sous un aspect d'un hébergement de multiples machines. Nous nous orienterons vers des échanges cryptés grâce au SSL et à ses certificats. Chaque machine virtuelle donne accès à divers sites sélectionnés. Cette partie commence par un paramétrage Apache de ce site qui renvoie vers le logiciel Web concerné. A partir de l'étape "machine", ce niveau et les suivants sont à démultiplier autant de fois qu'il y a de machines virtuelles. Il est extensible à volonté.
Fichier de paramètres de base : httpd.conf
Par défaut, le fichier "/etc/httpd/conf/httpd.conf" constitue le point d'entrée du paramétrage d'Apache.
Paramétrage des modules
Le logiciel Apache est accompagné d'un grand nombre de modules qui chacun vient ajouter une fonctionnalité particulière. On peut en ajouter à la liste installée d'office.
Chaque module peut être activé ou désactivé. Ce paramétrage se retrouve dans le répertoire "/etc/httpd/conf.modules.d".
Paramétrage commun
Le répertoire "/etc/httpd/conf.d" comporte des configurations particulières propre à un logiciel. On peut les classer en deux catégories:
- ceux ayant une portée générale
- ceux propres à un site
Nous allons individualiser parmi la première catégorie, ceux qui nous intéressent et éventuellement en ajouter nos propres fichiers.
Machines virtuelles
Notre machine Linux a un nom repris dans le fichier "/etc/hostname" et que l'on peut retrouver dans le fichier "/etc/hosts" lié a l'adresse IP de la machine.
Un machine est toujours associée à une adresse IP. Dans notre exemple, nous sommes dans un LAN privé. Son adresse IP est "192.168.1.100" et son nom de machine "serverdb.home.dom". Son alias est "serverdb". Dans un but pédagogique, nous avons ajouté dans le fichier "/etc/hosts" l'alias "www.home.dom".
N'oublions pas l'adresse IP de bouclage local "127.0.0.1" standard sur toute machine, associée au nom "localhost".
Cette machine est accessible par Internet. C'est le router de notre fournisseur d'accès Internet (FAI) qui assure cette liaison. Vu d'Internet, l'adresse IP privée n'est pas connue. Ce sera l'adresse IP publique du router de notre FAI. En ce qui concerne le nom de machine, c'est le DNS mondial qui assure ce service. Voyez l'article sur le Serveur visible sur Internet. Nous y avons ajouté les noms de machines "www.adbweb.gslb.eu", "adbweb.gslb.eu", "laplanchedenvol.be" et "archive.laplanchedenvol.be".
Ces différents noms et adresses IP seront passés en revue dans la suite de ces articles.
Certificats
Un site Web est habituellement accessible via le protocole HTTP mais actuellement c'est le protocole HTTPS qui est fortement conseillé. Il sécurise les échanges par cryptage. Ce dernier protocole HTTPS nécessite des certificats.
Pour nos machines virtuelles vues d'Internet, ces certificats sont disponibles via la plateforme "Let's Encrypt". Nous avons effectué cette tâche sur base de l'article sur Let's Encrypt: certificats gratuits SSL/TLS.
Du côté de nos machines virtuelles privées (serverdb.home.dom, serverdb, www.home.dom, localhost) et ses adresses IP, on suit la procédure de l'article sur les certificats de l'Extension de la CA privée (V3).
Comme cette Autorité de Certification privée est inconnue, ainsi que nos noms de machines virtuelles privées, il faut effectuer diverses opérations sur notre serveur et sur nos autres machines qui travaillent dans notre LAN privés selon l'OS et le client Internet utilisé. Voyez les divers rubriques de l'article sur la Sécurité via les certificats (Le fichier HOSTS, Certificats sous les applicatifs clients de Mozilla, Certificats sous Internet Explorer, Edge, Chrome et Certificats sous Linux).
Paramétrage des machines virtuelles, port HTTP
En premier lieu, on va paramétrer les diverses machines virtuelles pour le port HTTP, c'est à dire le n° 80. Toutes vont se ressembler car toute requête sur le port HTTP sera réécrite pour utiliser le port HTTPS.
Paramétrage des machines virtuelles, port HTTPS
En second lieu, on va paramétrer les diverses machines virtuelles pour le port HTTPS, c'est à dire le n° 443.
Paramétrage des sites
La dernière pièce à paramétrer dans Apache est celle des sites.
Gestion des accès
Un aspect très important a trait à la gestion des accès à vos sites Web en totalité ou partiellement.
Test de configuration
Il est important de tester la syntaxe de nos fichiers de configuration avant toute mise en application car s'il y a une erreur, notre serveur Web sera en erreur et sera donc inaccessible. Tant que le serveur Apache n'est pas redémarré, c'est toujours l'ancienne configuration qui est active.
La commande suivante permet ce test:
httpd -t
Si tout va bien vous recevrez un message laconique suivant:
Syntax OK
Cette commande permet d'autres actions telle la commande suivante qui affiche nos différents "Vhosts":
httpd -D DUMP_VHOSTS
D'autres peuvent vous aider comme:
httpd -D DUMP_MODULES
qui fournit la liste des modules chargés ou
httpd -D DUMP_INCLUDES
pour visionner la hiérarchie des inclusions successives des fichiers de paramètres.
Voyez l'aide pour plus d'options:
httpd -h
Activation et lancement du service
Le service à lancer est "httpd.service". La première commande active le service pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service.
systemctl enable httpd.service systemctl start httpd.service systemctl restart httpd.service
Apache sous Ubuntu
Il m'est arrivé d'utiliser Apache sous Ubuntu et de rencontrer quelques problèmes.
→ retour au menu du serveur Web