Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Red Hat Enterprise Linux - CentOS
  3. Services de production courants
Extrait - Red Hat Enterprise Linux - CentOS Mise en production et administration de serveurs (4e édition)
Extraits du livre
Red Hat Enterprise Linux - CentOS Mise en production et administration de serveurs (4e édition) Revenir à la page d'achat du livre

Services de production courants

Introduction

Dans ce chapitre, nous examinons la mise en place de certains services rencontrés couramment sur les serveurs Red Hat Enterprise Linux.

L’objectif n’est pas de fournir un manuel complet des logiciels. En effet, Internet regorge de tutoriels, de guides et d’études de cas bien expliqués. Ce chapitre vous explique plutôt la mise en œuvre de base de ces services sur Red Hat Enterprise Linux, de façon à pouvoir ajouter facilement et rapidement les options de configuration adaptées à votre architecture.

Ainsi, pour déployer un service, lisez l’ensemble de la section concernée de l’ouvrage, comprenez les options et configurez-le. Ensuite, démarrez le service et effectuez des tests.

Si vous rencontrez des problèmes au démarrage du service après configuration, votre réflexe doit être d’analyser les logs qui se trouvent dans /var/log. Ces fichiers vous expliquent toujours ce qui se passe au démarrage du service.

Également, assurez-vous que le pare-feu du système n’empêche pas l’accès au service. Vérifiez que les ports nécessaires sont ouverts.

Attention également à SELinux qui peut parfois empêcher un service de fonctionner sans raison apparente. Il faudra alors le désactiver afin de s’en assurer. 

Serveur web Apache

1. Présentation

Apache est un serveur HTTP produit par l’Apache Software Foundation. De nom officiel Apache HTTP Server, c’est le serveur web le plus populaire sur Internet. 

Les raisons de sa popularité, en plus d’être libre (open source), sont qu’il est disponible sur plusieurs systèmes d’exploitation : UNIX et dérivés (Linux, Mac OSX, Solaris, BSD) et Windows.

Apache est utilisé dans les produits de grands noms de l’industrie, comme Oracle ou IBM avec le logiciel WebSphere.

En plus d’être très performant, ce logiciel dispose également d’un nombre de modules impressionnants, allant du support de langages variés comme Perl, Python, PHP aux modules SSL/TLS pour le web sécurisé, la fonction proxy, en passant par le Virtual hosting, permettant à une seule machine physique d’héberger plusieurs sites web.

La dernière version d’Apache est 2.4 ; il n’est pas recommandé d’utiliser une version plus ancienne de ce service.

2. Configuration

a. Installation

Le nom du serveur Apache est (sans surprise) httpd. Installez-le comme suit :

dnf install httpd 

Activez le lancement du service httpd au démarrage et exécutez-le :

systemctl enable --now httpd 

Apache doit être démarré. En fait, l’installation par défaut est déjà configurée pour le fonctionnement standard d’un site web.

Configuration du pare-feu

Le serveur HTTP utilise les ports suivants pour fonctionner, veillez à ce qu’ils soient ouverts sur le pare-feu :

http            80/tcp       # WorldWideWeb HTTP 
https           443/tcp      #...

Serveur web Nginx

1. Présentation

Nginx, pour engine x (prononcer "en-jine-x"), se pose en outsider concurrent de Apache httpd. Ce serveur créé en 2004 a été conçu dans le but avoué de dépasser Apache et a ainsi vocation à être plus rapide pour les tâches suivantes :

  • Site web classique 

  • Reverse Proxy (exploré plus loin) : agit comme serveur frontal pour le filtrage et le traitement de flux HTTP/S entrants, avant de rediriger vers des serveurs web internes.

  • Équilibrage de charge : distribuer les flux entrants à plusieurs serveurs, pour améliorer la distribution des performances.

  • Cache HTTP : enregistre localement les pages les plus consultées pour les servir plus rapidement aux utilisateurs.

  • Proxy Mail : agit comme serveur frontal pour le filtrage et le traitement d’e-mails entrants, avant de rediriger vers des serveurs internes.

Dans les pages qui suivent, nous découvrons la configuration minimale pour un site web classique, à la manière d’Apache avec l’équivalent des Virtual Hosts, puis nous explorons une utilisation répandue de Nginx car simple à mettre en œuvre, en tant que serveur Reverse Proxy.

L’installation de Nginx est simple :

dnf install -y nginx 

Une fois l’installation effectuée, lancez le serveur et activez-le au démarrage :

systemctl enable --now nginx 

Vous voudrez peut-être désactiver un éventuel serveur Apache occupant les ports 80 et 443 avec la commande systemctl disable --now httpd.

Finalement, autorisez les ports 80 et 443 avec la commande firewall-cmd.

2. Servir un site web classique

Le serveur est installé. Tout comme Apache, une configuration et un site web par défaut sont déjà installés. Il ne reste plus qu’à se connecter (après...

PHP et MySQL (MariaDB)

En complément d’Apache, MySQL et PHP forment la fameuse équipe constituant les serveurs LAMP (Linux Apache PHP MySQL) très populaires sur le Web.

PHP est un language interprété par le serveur web pour générer des pages web dynamiques. La page web n’est pas statique, mais est construite à la demande en fonction de divers paramètres.

MySQL est un système de gestion de base de données SQL performant. Son rachat par Sun Microsystems a généré un "fork" (embranchement) par le fondateur de MySQL qui s’appelle MariaDB. Cependant, MariaDB reste très compatible avec MySQL.

MariaDB est maintenant adopté par des acteurs importants de la communauté open source et se trouve être le système de gestion de base de données par défaut dans RHEL.

LAMP s’inscrit dans une architecture client-serveur 3-tiers classique :

  • Tiers présentation : c’est la donnée finale présentée au client. Il s’agit ici d’une page web envoyée par le serveur Apache.

  • Tiers métier : c’est la partie fonctionnelle, celle qui réalise le "cœur de métier" de l’architecture, en réalisant diverses opérations sur les données en fonction de ce que veut le client. Elle est ici opérée par le langage PHP et pourra par exemple consister à afficher les fiches clients et les devis.

  • Tiers données : c’est la partie s’occupant de la gestion des données. Elle stocke les données qui devront être traitées par l’application métier. Il s’agit souvent d’une base de données, ici MySQL/MariaDB.

Les principes vus ici sont adaptés à RHEL 7, mais ils sont facilement transposables à...

Développement avec Python

1. Présentation

Au chapitre des technologies à connaître, il est nécessaire de parler de Python, langage de scripting à tout faire, bien utile dans la boîte à outils d’un administrateur système.

Python est un langage de programmation interprété, comme PHP dont nous venons de parler, c’est-à-dire qu’il n’a pas besoin d’être compilé en un langage directement compréhensible par le processeur. Ce langage mature, puisqu’il existe depuis 1991, a vocation à être simple à apprendre tout en restant puissant. 

Sa versatilité le rend incontournable. En effet, on retrouve Python dans des applications aussi diverses que :

  • La programmation scientifique : très célèbre dans la communauté scientifique, Python remplace Matlab dans certains cas car il possède des bibliothèques de fonctions adaptées aux sciences pour le traitement des données d’expériences, de mathématiques avancées, de visualisation, etc.

  • Les extensions de logiciels, consistant à rajouter des fonctionnalités programmées en Python (on pense à Blender, GIMP, Inkscape).

  • L’outil de scripting web : aidé de structures de développement comme Django, Python peut remplacer des langages de scripting tels que PHP ou JavaScript, et a fait sa place parmi des grands noms du Web.

  • L’outil de scripting shell Linux : au même titre que le scripting bash ou sh (qui sont aussi des interpréteurs de commandes), Python peut accompagner l’administrateur système dans ses tâches quotidiennes de gestion des serveurs. 

  • Le multiplateforme : on le trouve sur des systèmes aussi variés que Windows, MacOS, Android ou Linux.

C’est la fonction de langage...

DNS

1. Présentation de BIND et de DNS

Le serveur BIND (Berkeley Internet Name Daemon), développé sous l’égide d’Internet Systems Consortium, est le serveur DNS le plus utilisé sur Internet. Il est donc devenu un standard, et chacune de ses versions est attendue avec impatience, principalement à cause du rôle stratégique qu’il joue sur le réseau des réseaux.

Concepts de DNS

Les machines accessibles sur un réseau IP (typiquement Internet) ont une adresse IP. Les humains, quant à eux, mémorisent plutôt des noms. Il existe deux mécanismes qui permettent d’associer une adresse IP à un nom :

  • Lorsqu’une adresse IP est retournée pour un nom donné, c’est la résolution DNS. C’est le type de résolution le plus courant, lorsqu’on accède à un serveur sur Internet par exemple.

Exemple

Quelle est l’adresse IP de la machine www.wikipedia.org ? Résolution DNS : l’adresse IP de www.wikipedia.org est 91.198.174.232.

  • Lorsque l’on souhaite connaître le nom d’une adresse IP connue, c’est la résolution DNS inverse. On trouve souvent ce type de résolution dans un résultat de commande traceroute.

Exemple

Quel est le nom associé à l’adresse IP 212.27.50.197 ? Résolution DNS inverse : le nom associé à l’adresse IP 212.27.50.197 est velizy-6k-1-po1.intf.routers.proxad.net

Le service permettant l’association entre un nom et une adresse IP est le DNS (Domain Name System, ou système de noms de domaine). Les machines offrant les services DNS sont les serveurs DNS.

Cette résolution est faite lorsque le client envoie une requête DNS à l’un des serveurs DNS qui sont configurés localement. Si votre machine...

FTP

1. Présentation

FTP (File Transfer Protocol) est un protocole de transfert de fichiers sur réseau IP standardisé par l’IETF (Internet Engineering Task Force). Même s’il est préférable d’utiliser des protocoles sécurisés de transfert de fichiers comme SFTP ou SCP, FTP reste extrêmement utilisé sur Internet. Par exemple, Red Hat utilise un serveur FTP pour mettre à disposition les images ISO de ses systèmes d’exploitation, tout comme Cisco afin de distribuer les IOS de ses routeurs, commutateurs et pare-feux.

On trouve deux configurations type de serveurs FTP :

  • Serveurs anonymes, sur lesquels n’importe qui peut se connecter.

  • Serveurs avec authentification : il faut un login/mot de passe pour accéder au contenu.

Pour cette dernière utilisation, il est maintenant préférable d’utiliser SFTP, qui est l’équivalent de FTP avec le chiffrement et l’authentification SSH.

Parmi les solutions de serveurs FTP disponibles sur les systèmes Red Hat Enterprise Linux, nous pouvons trouver vsftpd, pour Very Secure FTP daemon (service FTP très sécurisé).

Celui-ci possède plusieurs avantages :

  • Son authentification est basée sur PAM, il dispose donc de ses moyens d’authentification très variés. Il est ainsi possible d’authentifier les utilisateurs avec une base de données MySQL par exemple.

  • Il utilise des utilisateurs virtuels, qui n’ont pas d’existence dans le système d’exploitation, mais sont rattachés à un compte système unique.

2. Configuration

a. Installation

Pour installer vsftpd, tapez :

dnf install vsftpd 

La version de vsftpd utilisée pour les exemples est la 2.2.2.

Quand la configuration est achevée, activez le lancement de vsftpd au démarrage de...

NFS

1. Présentation

NFS (Network File System) est littéralement un système de fichiers réseau. Grâce à NFS, une machine peut accéder à un système de fichiers monté sur un serveur distant, et le voir comme un système de fichiers local. Ainsi, les fichiers distants feront partie de l’arborescence locale du serveur.

NFS étant un protocole UNIX/Linux, c’est la plupart du temps des machines de ce type qui accéderont au répertoire partagé.

La version la plus courante de NFS est la version 3, dont les fonctionnalités sont étendues. La version 4 est adaptée à l’utilisation sur Internet, puisqu’elle permet de traverser simplement des pare-feu.

Par défaut sous Red Hat Enterprise Linux, NFS utilise TCP pour transporter les données, mais il est possible également d’utiliser UDP. Sur un réseau stable, TCP est plus performant et plus fiable que UDP.

2. Configuration

a. Installation

NFS est installé par défaut sur Red Hat Enterprise Linux.

Si ce n’est pas le cas, installez le serveur et tous les outils :

dnf install nfs-utils 

Le nom du service est nfs-service.

Quand la configuration est achevée, activez le lancement de NFS au démarrage de la machine :

systemctl enable nfs-server.service 

Puis, démarrez le serveur manuellement avec la commande :

systemctl start nfs-server.service 

Configuration du pare-feu

Le serveur NFS utilise les ports suivants pour fonctionner. Veillez à ce qu’ils soient ouverts sur le pare-feu :

nfs             2049/tcp     # Network File System 
nfs             2049/udp     # Network File System 

Il faut également...

DHCP

1. Présentation

DHCP signifie Dynamic Host Configuration Protocol (protocole de configuration dynamique d’hôtes). Ce protocole est conçu pour configurer automatiquement les paramètres réseau d’une machine qui le demande.

Le serveur DHCP contient les paramètres des machines du réseau.

Une machine configurée en DHCP sollicite à son démarrage le serveur DHCP pour obtenir sa configuration réseau.

Le serveur DHCP lui alloue un bail DHCP : les paramètres qu’il lui fournit seront valides pendant un certain temps.

Red Hat Enterprise Linux contient un serveur DHCP pour IPv4 et IPv6.

2. Configuration

a. Installation

Le nom du serveur DHCP est dhcpd mais il s’appelle dhcp dans yum. Installez-le comme suit :

dnf install dhcp-server 

La version de dhcpd utilisée pour les exemples est la 4.1.1.

Activez le lancement du service dhcpd au démarrage :

systemctl enable dhcpd 

Démarrez dhcpd :

systemctl start dhcpd 

Démarrez dhcpd pour IPv6 :

systemctl enable dhcpd6 

b. Fichier et répertoire importants

Emplacement

Utilité

/etc/dhcp/dhcpd.conf

Configuration du serveur DHCP

/etc/dhcp/dhcpd6.conf

Configuration du serveur DHCP en IPv6

/etc/sysconfig/dhcpd et dhcpd6

Options de démarrage du serveur en IPv4 et IPv6

/var/lib/dhcpd/dhcpd/dhcpd.leases et dhcpd6.leases

Base de données des baux affectés aux machines en IPv4 et IPv6

c. Configuration de démarrage

La configuration de démarrage du serveur DHCP en IPv4 est :

/etc/sysconfig/dhcpd 

Ce fichier contient une ligne :

DHCPDARGS= 

Ce sont les arguments passés au serveur dhcpd à son démarrage.

Une option intéressante consiste à définir l’interface sur laquelle le serveur DHCP doit servir des adresses IP.

Par exemple :

DHCPDARGS=eth1 

Le serveur n’écoute alors plus...

Machines virtuelles et conteneurs

1. Virtualisation avec KVM/Qemu

a. Présentation

La virtualisation, maintenant bien connue, est une technologie permettant d’émuler des machines avec leurs systèmes d’exploitation sur des machines physiques.

Par exemple, sur une machine RHEL 7 physique, on peut faire tourner des machines virtuelles (VM, Virtual Machines), Windows 10 et Ubuntu.

Le principe de la virtualisation consiste à émuler une architecture matérielle complète. Ainsi, le système d’exploitation de la machine invitée n’a pas conscience de fonctionner sur un hôte physique. Les processeurs modernes intègrent des jeux d’instructions adaptés à la virtualisation (Intel VT-x ou AMD-V), permettant d’obtenir des performances pour les machines virtuelles proches de celles d’une machine physique.

Les avantages de la virtualisation sont infinis :

  • Réduction du nombre de machines physiques.

  • Optimisation des performances et meilleure gestion des ressources matérielles.

  • Facilitation et assouplissement de l’administration (à distance le plus souvent). 

  • Déploiement en masse d’applications, amélioration de la fiabilité.

  • Etc.

La plupart des serveurs, surtout les serveurs web, sont maintenant virtualisés. Ils existent avec des dizaines ou des centaines d’autres, sur des serveurs en rack dans des datacenters (centres de données) spécialisés. Vous pouvez facilement louer un serveur privé virtuel (VPS, Virtual Private Server) pour quelques euros sur Internet.

Il est possible d’installer des machines virtuelles sur votre PC de bureau, par exemple pour tester des environnements différents.

VMware est aujourd’hui le leader sur le marché, en proposant de la virtualisation pour datacenters, avec VMware vSphere ainsi que de la virtualisation...

Concepts d’orchestration : Kubernetes/OpenShift

La conteneurisation se suffit à elle-même pour le lancement de quelques services sur quelques machines.

Lorsque les conteneurs sont utilisés en masse et passent au centre de la stratégie de l’entreprise, leur gestion peut vite devenir un cauchemar. C’est pourquoi l’utilisation d’outils d’orchestration devient indispensable à partir d’un certain volume de conteneurs, ou lorsque la fiabilité est nécessaire.

En effet, lorsque des services utilisent plusieurs conteneurs répartis sur plusieurs machines, leur gestion individuelle devient impossible. Les systèmes d’orchestration de conteneurs synchronisent des jeux de conteneurs interdépendants à travers plusieurs hôtes, avec les avantages suivants :

  • Lancement des conteneurs sur plusieurs hôtes, physiques ou machines virtuelles. 

  • Augmentation ou diminution du nombre de conteneurs en fonction de la demande.

  • Gestion du stockage partagé entre les conteneurs.

  • Distribution de la charge entre les conteneurs.

  • Gestion de la fiabilité, lancement de nouveaux conteneurs en cas de problème. 

Kubernetes est sans doute la solution la plus populaire d’orchestration de conteneurs. À l’origine développé par Google, il est maintenant open source et maintenu par la communauté.

Avec un cycle de développement assez rapide et une communauté active et bienveillante pour obtenir de l’aide, Kubernetes s’installe sur n’importe quelle distribution Linux. À partir de là, le serveur principal, ou master, prend la main sur des nodes (nœuds) où se trouvent les conteneurs, qu’il vous est possible de contrôler avec une interface web.

Une fois configuré, Kubernetes offre les services d’orchestration de manière...