Laboratoire infra Linux HA #1
LAB07-FRONT-01
Afin d’acquĂ©rir les bases de l’administration systĂšme de Linux, j’ai rĂ©alisĂ© le laboratoire suivant dans lequel chaque Ă©tage est redondĂ© (sauf le monitoring) :
- Ătage LB : Load balancer HAProxy,
- Ătage Front : Frontaux Apache + PHP (Sury),
- Ătage DB : SGBD MySQL (Percona),
- Ătage NFS : nfs-kernel-server,
- Ătage mĂ©trologie : Monitoring Munin.
Le but du laboratoire est de servir en haute disponibilitĂ© le blog WordPress du laboratoire de juillet “lab07.lab”. On utilisera WordPress qui est simple Ă installer car ce que l’on veut c’est s’entraĂźner sur les middleware.
La trĂȘve estivale m’invite Ă rĂ©aliser de nouveau ce lab tout en le documentant pour toi ou pour rĂ©fĂ©rence future. Comme d’hab je peux probablement Ă©crire des Ă©normitĂ©s alors excuse-moi par avance… ou pas… c’est ton problĂšme en fait.
On partira d’une VM Debian 12 (Ă jour, update && upgrade) que l’on clonera 8 fois. Dans mon Virtualbox, j’ai conservĂ© un Debian 12 avec OpenSSH et VIM pour seuls paquets ajoutĂ©s et configurĂ©s et si tu es plus malin que moi tu penseras Ă virer nano avant de cloner ta VM.
On aura donc 9 machines virtuelles et 3 adresses IP virtuelles (pour le LB, la DB et le NFS). Les machines sont configurĂ©es en connexion par pont afin de se connecter facilement Ă internet et d’ĂȘtre accessibles depuis depuis les autres postes.
On rĂ©alise le lab par itĂ©ration en partant d’un seul serveur LAMP et on Ă©tend au fur et Ă mesure. L’ensemble des Ă©tapes permet de voir une liste d’outils basiques et indispensables Ă l’administration Linux ainsi que l’Ă©volution d’une plateforme informatique.
ParamĂštres de base pour chaque VM
Les exemples ci-dessous concernent notre premier hĂŽte lab07-front-01
. Il faudra procĂ©der de la mĂȘme maniĂšre sur chacune des VM en adaptant le nom d’hĂŽte et l’adresse IP afin de passer le plus vite possible en connexion SSH.
Avant toute chose, on va virer nano et éditer le paramétrage TCP/IP de la machine :
root@debian:~$ apt purge nano
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances... Fait
Lecture des informations d'Ă©tat... Fait
Les paquets suivants seront ENLEVĂSÂ :
nano*
0 mis à jour, 0 nouvellement installés, 1 à enlever et 0 non mis à jour.
AprĂšs cette opĂ©ration, 2âŻ871 ko d'espace disque seront libĂ©rĂ©s.
Souhaitez-vous continuer ? [O/n]
(Lecture de la base de données... 34136 fichiers et répertoires déjà installés.)
Suppression de nano (7.2-1+deb12u1) ...
update-alternatives: utilisation de « /usr/bin/vim.basic » pour fournir « /usr/bin/editor » (editor) en mode automatique
(Lecture de la base de données... 34025 fichiers et répertoires déjà installés.)
Purge des fichiers de configuration de nano (7.2-1+deb12u1)Â ...
root@debian:~$ vi /etc/network/interfaces
On va modifier notre interface primaire et passer de DHCP (auto) Ă manuelle (static).
iface enp0s3 inet static
address 192.168.50.23/24
gateway 192.168.50.1
dns-nameservers 1.0.0.1
De mĂȘme, on va modifier le nom d’hĂŽte de notre VM :
root@debian:~$ echo lab07-front-01 > /etc/hostname
Pour éviter un redémarrage, on applique le nouveau nom à la session actuelle :
root@debian:~$ hostname lab07-front-01
On pourra vĂ©rifier que le nouveau nom d’hĂŽte est bien appliquĂ© en se dĂ©co-reconnectant.
Enfin on Ă©ditera par avance le fichiers /etc/hosts de la sorte :
Le premier serveur LAMP : lab07-front-01
On va installer Apache sans oublier qu’en rĂ©alitĂ© il s’agit d’apache2, Percona MySQL et ajouter le dĂ©pĂŽt logiciel de Sury pour la prise en charge de PHP.
Pour prĂ©parer l’installation, on se documente directement auprĂšs des Ă©diteurs/mainteneurs :
- Sury : https://packages.sury.org/php/README.txt
- Percona : https://docs.percona.com/percona-server/8.0/quickstart-apt.html#installation-steps
Installation des paquets
# Installation des utilitaires nécessaires
apt install curl lsb-release ca-certificates gnupg2
# Téléchargement et installation des clés du dépÎt Sury
curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
dpkg -i /tmp/debsuryorg-archive-keyring.deb
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
# Téléchargement et installation des clés du dépÎt Percona
curl -so /tmp/percona-release_latest.generic_all.deb https://repo.percona.com/apt/percona-release_latest.generic_all.deb
apt install /tmp/percona-release_latest.generic_all.deb
# Mise Ă jour d'APT
apt update
# Installer le dépÎt Percona pour MySQL 8.0
percona-release setup ps80
# Mise Ă jour d'APT
apt update
# Installer Apache2, MySQL et PHP sans oublier le module MySQL de PHP !
apt install apache2 percona-server-server php8.3 php8.3-mysql
On pourra s’assurer que PHP a bien Ă©tĂ© installĂ© Ă l’aide du dĂ©pĂŽt Sury :
root@lab07-front-01:~$ apt show php8.3
Package: php8.3
Version: 8.3.9-1+0~20240708.36+debian12~1.gbp429c36
Priority: optional
Section: php
Maintainer: Debian PHP Maintainers <team+pkg-php@tracker.debian.org>
Installed-Size: 65,5 kB
Provides: php
Depends: libapache2-mod-php8.3 | php8.3-fpm | php8.3-cgi, php8.3-common
Homepage: http://www.php.net/
Download-Size: 29,9 kB
APT-Manual-Installed: yes
APT-Sources: https://packages.sury.org/php bookworm/main amd64 Packages
Description: server-side, HTML-embedded scripting language (metapackage)
This package is a metapackage that, when installed, guarantees that you
have at least one of the four server-side versions of the PHP interpreter
installed. Removing this package won't remove PHP from your system, however
it may remove other packages that depend on this one.
.
PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used
open source general-purpose scripting language that is especially suited
for web development and can be embedded into HTML.
Afin de se concentrer sur l’essentiel, on va utiliser php en tant que module d’Apache.
root@lab07-front-01:~$ a2enmod php8.3
Magnifique ! On a déjà une premiÚre couche de middleware, on va pouvoir commencer à avancer.
Préparation du stockage
On va créer un dossier pour héberger les données de notre site web, télécharger, décompresser WordPress et, donner la propriété des fichiers à Apache.
#On créé le dossier qui hébergera le contenu du blog et on le nomme selon son URL pour s'affranchir d'un éventuel futur changement d'applicatif
root@lab07-front-01:~$ mkdir /var/www/lab07.lab
#Ici on télécharge le tarball de la derniÚre version de WordPress que l'on décompresse directement dans le dossier du blog
root@lab07-front-01:~$ wget -qO- https://wordpress.org/latest.tar.gz | tar xvz --strip-components=1 -C /var/www/wordpress
#On attribue enfin la propriété à www-data tant pour le groupe que pour le nom d'utilisateur (www-data est l'utilisateur/groupe d'Apache2 dans Debian)
root@lab07-front-01:~$ chown -R www-data:www-data /var/www/lab07.lab/
Base de données
Let’s go pour notre SGBD. S’agissant d’un lab, j’ai pas fait d’installation sĂ©curisĂ©e de MySQL et je ne pense pas qu’on y revienne.
# On va générer un mdp pour notre utilisateur de base de données wordpress, le créer auprÚs de MySQL et lui donner tous les droits sur la base adhoc
root@lab07-front-01:~$ pwgen -sBc 14 1
JH3uYwPE7qhY39
root@lab07-front-01:~$ mysql
mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0,02 sec)
mysql> CREATE USER "wordpress"@"%" IDENTIFIED BY "JH3uYwPE7qhY39";
Query OK, 0 rows affected (0,14 sec)
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO "wordpress"@"%";
Query OK, 0 rows affected (0,03 sec)
mysql> ^DBye
HĂŽte virtuel Apache (vhost)
On va créer un fichier de configuration pour notre vhost lab07.lab et autoriser Apache à servir notre WordPress.
root@lab07-front-01:~$ vi /etc/apache2/site-available/lab07.lab.conf
<VirtualHost *:80>
ServerName lab07.lab
# Indexes, root directory
DirectoryIndex index.php index.html
DocumentRoot /var/www/lab07.lab/
# Logs
ErrorLog /var/log/apache2/error_lab07.lab_log
CustomLog /var/log/apache2/access_lab07.lab_log combined
Options FollowSymLinks
</VirtualHost>
root@lab07-front-01:~$ a2ensite lab07.lab
Enabling site lab07.lab.
To activate the new configuration, you need to run:
systemctl reload apache2
root@lab07-front-01:~$ systemctl reload apache2
Le grand saut
DerniĂšre modification de notre fichier hosts local pour affecter l’url de notre blog WordPress Ă l’adresse IP de lab07-front-01
.
On passe sur l’installation web de WordPress qui est une grande ligne droite (on renseigne le nom de la base de donnĂ©es, l’utilisateur et le mot de passe MySQL… etc.) et si tout s’est bien passĂ©, tu devrais avoir quelque chose du genre :
Fin de la bande
2 réflexions sur « Laboratoire infra Linux HA #1 »
Le jour ou l’ICANN va attribuer le .lab, tu vas rire đ
C’est vrai que c’Ă©tait pas forcĂ©ment explicite pour tout le monde : le blog ne va jamais ĂȘtre exploitĂ©. Un laboratoire n’est qu’une excuse pour mettre en pratique des technologies et s’entraĂźner.