0% ont trouvé ce document utile (0 vote)
20 vues11 pages

Cours4 Packages Web

Le document traite de la gestion des packages et de l'administration des serveurs web, en se concentrant sur les systèmes Debian/Ubuntu et RedHat/Centos. Il explique les types de mises à jour, les commandes de gestion des packages, ainsi que les configurations et le fonctionnement des serveurs web Apache et Nginx. Des concepts tels que les VHOST, CGI et Fast-CGI sont également abordés pour illustrer le traitement des requêtes dynamiques sur les serveurs web.

Transféré par

extra
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
20 vues11 pages

Cours4 Packages Web

Le document traite de la gestion des packages et de l'administration des serveurs web, en se concentrant sur les systèmes Debian/Ubuntu et RedHat/Centos. Il explique les types de mises à jour, les commandes de gestion des packages, ainsi que les configurations et le fonctionnement des serveurs web Apache et Nginx. Des concepts tels que les VHOST, CGI et Fast-CGI sont également abordés pour illustrer le traitement des requêtes dynamiques sur les serveurs web.

Transféré par

extra
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

14/11/2022

Gestion des packages


Administration d’un serveur
web

Gestion des packages

 Debian/Ubuntu: dpkg / apt-get (fichiers .deb)


 RedHat/Centos: dnf / yum (.rpm)

1
14/11/2022

Repository list

 List des « repository »


 Serveur stockant les packages
 Se trouve dans /etc/apt-get/[Link]

Pour installer …
les binaires deb [Link] focal-security main restricted
#deb-src [Link] focal-security main restricted
Pour installer

les sources

Le serveur (son adresse) Type de repos (voir


slide suivant)
Release: la Ubuntu c’est « focal ».
Tapez la commande « lsb_release
–cs » pour vérifier. Voir slide suivant
pour le second terme.

Repos

 Repos officiels
 main: logiciels maintenu (par Canonical), et open-source. Contient les packages
qui viennent avec l’installation.
 restricted: logiciel non open source (closed source) et propriétaires. Contient les
pilotes par exemple (nvidia, etc.).
 universe: logiciels open-source maintenu par la communauté. Pas de support de
la part de « Canonical ».
 multiverse: logiciels closed-source, ayant des copyright, etc.
 Il existe aussi des repos non officiels.
 Qui peuvent être ajouté dans [Link] par exemple

2
14/11/2022

Type de mis à jour

 Sans type: les logiciels courants.


 Les différents types de mis à jour:
 Update: contient les logiciels qui devraient être mis à jour
 Security: logiciels qui devraient être mis à jour pour des raisons de sécurité
 Backports: logiciels stables fournit à des release Ubuntu plus ancienne
 Proposed: logiciels non encore stable (ne devraient pas faire partie de votre
liste).
 Il peut y en avoir d’autres.

 Comparaison des logiciels installés et ceux de ces repos (par votre gestionnaire
de packages).

Les commandes

 apt-get update: met à jour la liste des repos.


 apt-get upgrade: met à jour les logiciels déjà installé
 apt-get dist-upgrade: met à jour la distribution Linux
 apt-get install xxxx: installe le logiciel xxxxx
 apt-get remove xxxx: désinstalle le logiciel xxxx
 L’option –purge supprime aussi les fichiers de config.

 apt-cache search gvim : cherche dans la description des packages disponibles


ceux ou le mot clé gvim est indiqué (il peut y avoir plusieurs mots clés).
 apt-cache show gvim: affiche les propriétés du package gvim (si il existe).
 apt list –installed: affiche la liste des packages installés.

3
14/11/2022

Qu’est ce qu’un package

 Un package est une archive qui contient:


 Une arborescence de dossiers (identiques à celles du système) indiquant les
différentes destinations des fichiers.
 Des fichiers binaires, des fichiers de configurations, un man, etc.
 Un fichier « control » qui contient les informations sur le package:
 Description
 L’architecture (i386 par exemple)
 Les dépendances
 Les conflits: ne peut pas être installé avec tel logiciel
 Replaces: le logiciel qu’il remplace

 Un fichier permettant de vérifier l’intégrité des fichiers (optionnel)


 Un copyright (optionnel)

Serveurs web

4
14/11/2022

Serveur apache
 Apache est un serveur web open-source
 40% des serveurs web dans le monde1
 Pour rappel:
 Transfert de fichier régit par le protocole http
 Code pouvant être exécuté côté serveur ou côté client

Ouverture de connexion
TCP sur le port 80
Requête http:
get http1.1 /path/[Link]
Réponse http: Serveur apache
L’en-tête de réponse peut http 1.1 200 OK
contenir beaucoup + le fichier
d’autres informations
(cache, cookie, etc.). 1 [Link]

Lancement des services

 systemctl start/restart/reload/stop/etc xxxxxxx

 Scripts se trouvant dans le dossier /etc/systemd/system/


 Peut dépendre de la distribution
 Ils servent à gérer proprement l’exécution des services
 Les services doivent être gérés via ces scripts
 Variable d’environnement qui peuvent être fixées au démarrage
 Fermeture/écriture des fichiers ou autres lors de l’arrêt du service
 Options passées en paramètres
 Etc.

5
14/11/2022

Lancez le serveur

 Sous Ubuntu
 /etc/init.d/apache2 start/stop/restart/reload/fullstatus/graceful/config-test/etc.
 systemctl start/etc. apache2
 config-test: vérifie la syntaxe des fichiers de configuration
 graceful et graceful-stop: redémarre et arrête apache mais en ne coupant pas
les connexions en cours
 Doit être lancé à partir des scripts
 À cause des variables d’environnement entre autres

Les fichiers de configuration


 Peuvent être légèrement différent d’une distribution à l’autre (Ubuntu ici)
 /etc/apache2/[Link] (conf générale)
 Format des logs par exemple
 /etc/apache2/[Link]: ports à l’écoute (défaut : 80)
 Dossiers mods-available: configuration des modules
 *.load : directive LoadModule vers un module/librairie
 *.conf: fichier de conf correspondant

 Dossiers sites-available: vhost (voir plus loin)


 Dossiers confs-enables: autres éléments de configuration
 Les modules/vhost/ou les autres éléments de configuration sont activés en
plaçant un lien symbolique dans le dossier *-enabled qui pointe dans *-
available.

6
14/11/2022

MPM: Multi Processes Module


 Plusieurs processus écoutent sur le port 80
 Traitement des requêtes et des clients en parallèles
 Gain en efficacité (en particulier dans un environnement multi processeurs/cœurs)
 Les connexions sur le port 80 sont réparties
 Les variantes (suivant le système et la configuration apache)
 MPM Pre-fork
 Un processus fils est créer pour chaque nouvelle connexion

 MPM Worker
 Ancienne version de MPM event
 Un thread pouvait rester assigné à une connexion TCP persistante
 MPM Event: multi processus et multi thread
 Un processus parent gère un ensemble de fils (fork)
 Il y a « ThreadsPerChild » threads pour chaque processus fils
 Traitement des requêtes très parallélisé
 Un thread par fils est à l’écoute de la socket
 Une connexion entrante est associée à un autre thread (du même processus bien sûr)
 Les connexions TCP persistantes peuvent être gérées par des threads différents pour optimiser les ressources
(minimiser les temps d’attentes)

MPM event

Processus parent

Processus fils 1 Processus fils 2

Thread à Thread à
Thread 1 Thread 2 Thread 2 Thread 3
l’écoute l’écoute

Beaucoup plus de threads en pratique. Le thread à l’écoute


attend les connexions entrantes. Il les donne aux autres
threads pour traitement des requêtes.

7
14/11/2022

MPM event
Processus parent

Processus fils 1 Processus fils 2

Thread à l’écoute Thread 1 Thread 2 Thread à l’écoute Thread 1 Thread 2

VHOST
 Un serveur web peut hebergé plusieurs site web
 [Link] ; [Link] ; etc.
 Directive HOST obligatoire dans les champs de la requête http 1.1
 Configuration pouvant être différente au travers des vhost apache
 Serveur virtuel /Virtual Host qui héberge un des sites
 En fonction du host (son nom)
 En fonction de l’adresse IP (si correspondance entre site et adresse IP dans le DNS)
 Un fichier de configuration par vhost dans sites-available
 Un lien dans sites-enable pour les vhost actifs
 Voir exercice du TD pour les détails.

8
14/11/2022

CGI: common gateway interface


 CGI: interface générique qui traite du contenu dynamique
 A chaque requête http nécessitant l’exécution du programme un processus est
lancé (binaire C/C++, perl, java, php, etc.)
 Le serveur web récupère la sortie standard du processus et l’envoie au client
(une page web typiquement)
 Problèmes de performance:

Requête http  Ceci impose la création des processus pour chaque requête
Sollicitant du  Autant de processus CGI en cours d’exécution que de requête web en cours
contenu
dynamique
Serveur web
Get http 1.1
[Link]/search?q=icon+ser
veur&client=firefox

Proc Proc Proc


cgi 1 cgi 2 cgi 2

CGI (2)
 La requête est passé au travers de variables d’environnement
 PATH_INFO: contient le chemin du fichier ([Link]
 Si GET: la variable REQUEST contient la requête
 Si POST: la requête est passé sur l’entrée standard
 Le processus cgi renvoie le contenu sur sa sortie standard

Get http 1.1


[Link]/search?q=icon+ser
veur&client=firefox

1 Serveur web Sortie standard:


<html>
<head>
4 http 1.1 200 OK
3 <title> Page </title>
…. 2 Requête </head>
<html> <body>
<head> Proc cgi 1 Ceci est une page dynamique!
… </body>
</html>

9
14/11/2022

Fast-cgi
 Un ou des processus actifs gèrent les requêtes dynamiques
 Pas de création de processus pour chaque requête
 Nombre de processus plus ou moins indépendants du nombre de requêtes
 Les requêtes et des variables d’environnement sont envoyées par (au choix):
 Tube nommé
 Connexion TCP
 Connexion Unix
 Intérêt:
 Performance: pas besoin de créer un processus à chaque fois (lourd)
 Gestion des services séparés du serveur web (plus flexible)
 Implémentation non dépendantes du serveur web (on choisit ce que l’on veut)
 Sécurité qui peut être propre.

Module php dans apache

 Deux approches
 Module apache2 (intégré à apache)
 Processus indépendant d’apache
 Plus performant (code/processus indépendant d’apache)
 Plus sécurisé (droits et configuration différente d’apache)
 Peut être utilisé par d’autres serveur web
 Exemple: php-fpm

10
14/11/2022

Nginx (engine ex)

 Créer en 2004 (opensource)


 Concurrent de apache
 Apache reste le plus populaire (de l’ordre de 50% des sites)
 Les sites les plus performants/populaires utilisent Nginx
 Même principe que apache MPM-event:
 Plusieurs processus / plusieurs threads
 Distribution des requêtes http cliente sur les threads par un processus maître
 Une même connexion persistante peut être servi par plusieurs threads
 Moins de module que apache allégeant le serveur
 Pas de module php par exemple

Nginx: fonctionnalités et configuration

 Serveur web
 Reverse proxy
 Reçoit les requêtes http des clients
 Les redistribue sur d’autres serveurs
 Partage de charge
 Connexion sécurisé (https)
 Streaming vidéo

 Configuration:
 Même principe que apache: dossier *-enable et *-available

11

Vous aimerez peut-être aussi