Introduction
AlmaLinux est une distribution Linux enterprise-grade gratuite, fork 1:1 de Red Hat Enterprise Linux (RHEL), idéale pour les serveurs en production. Lancée en 2021 comme alternative stable à CentOS, elle garantit 10 ans de support LTS sans coût de licence. Pourquoi choisir AlmaLinux en 2026 ? Sa compatibilité binaire avec RHEL permet d'utiliser les mêmes outils (dnf, systemd) et paquets RPM, tout en évitant les pièges des distributions instables comme Ubuntu pour les environnements critiques.
Ce tutoriel beginner vous guide pas à pas : installation dans une machine virtuelle, mise à jour sécurisée, configuration d'un stack LAMP (Linux, Apache, MariaDB, PHP) fonctionnel. À la fin, vous aurez un serveur web prêt à déployer une app PHP, avec firewall actif et bonnes pratiques de sécurité. Imaginez comme assembler un puzzle : on commence par les bases (OS propre), on ajoute les pièces (services), et on sécurise l'ensemble. Temps estimé : 45 minutes. Parfait pour les devs qui veulent un serveur fiable sans courbe d'apprentissage raide.
Prérequis
- Machine virtuelle : VirtualBox ou VMware Workstation (gratuit), avec 2 Go RAM, 20 Go disque, 2 CPU.
- ISO AlmaLinux : Téléchargez la version 9.4 Minimal depuis get.almalinux.org (SHA256 vérifié pour sécurité).
- Outils hôte : Rufus (Windows) ou dd (Linux/Mac) pour créer une clé USB bootable.
- Connaissances de base en ligne de commande (sudo, éditeurs comme nano).
- Accès internet sur la VM.
Installation et première connexion
#!/bin/bash
# Connectez-vous en root ou utilisez sudo
sudo dnf clean all
sudo dnf update -y
sudo dnf upgrade -y
sudo rebootAprès boot sur l'ISO AlmaLinux dans votre VM (suivez l'assistant Anaconda : langue FR, partition auto, root password fort), exécutez ce script pour nettoyer le cache, mettre à jour tous les paquets et redémarrer. Cela applique les derniers correctifs de sécurité et patches kernel, évitant les vulnérabilités zero-day. Piège courant : oublier le '-y' pour automatiser les confirmations.
Activer le firewall de base
AlmaLinux utilise firewalld par défaut, plus flexible que iptables. On l'active et ouvre les ports essentiels (SSH:22, HTTP:80, HTTPS:443) pour un serveur web accessible. Cela bloque tout trafic non autorisé dès le démarrage, comme une porte verrouillée avec whitelist.
Configuration firewalld
#!/bin/bash
sudo systemctl enable firewalld
sudo systemctl start firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-allCe script active firewalld au boot, démarre le service, ajoute les services standards (pas de ports manuels pour éviter erreurs), recharge et liste les règles. Vérifiez avec 'sudo firewall-cmd --list-all' : vous verrez ssh, http/https ouverts. Piège : oublier --permanent, les règles disparaissent au reboot.
Installer Apache HTTP Server
Apache (httpd) est le serveur web par défaut sur AlmaLinux, modulaire et performant pour PHP. On l'installe depuis les repos officiels, configure un VirtualHost et teste. Analogie : comme poser les fondations d'une maison avant les murs.
Installation et config Apache
#!/bin/bash
sudo dnf install httpd -y
sudo systemctl enable httpd
sudo systemctl start httpd
sudo firewall-cmd --permanent --add-service=http --add-service=https
sudo firewall-cmd --reloadInstalle httpd, l'active au boot, le démarre et rouvre les ports firewall. Accédez à http://IP_VM : page 'Apache HTTP Server Test Page' confirme. Piège : SELinux bloque parfois ; vérifiez avec 'sudo ausearch -m avc -ts recent' et autorisez si besoin via semanage.
VirtualHost personnalisé
<VirtualHost *:80>
ServerName monapp.example.com
DocumentRoot /var/www/monapp
<Directory /var/www/monapp>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/httpd/monapp_error.log
CustomLog /var/log/httpd/monapp_access.log combined
</VirtualHost>
# Créer le dossier et tester
sudo mkdir -p /var/www/monapp
sudo chown -R apache:apache /var/www/monapp
echo "<?php phpinfo(); ?>" | sudo tee /var/www/monapp/index.php
sudo systemctl restart httpdCe fichier conf complet définit un vhost isolé pour 'monapp', avec logs dédiés et .htaccess activé. Le bash inline crée le dossier, assigne apache comme owner et ajoute un index.php de test. Redémarrez httpd ; accédez via IP pour voir phpinfo(). Piège : mauvais ownership cause 403 Forbidden.
Installer MariaDB et PHP
MariaDB remplace MySQL (drop-in compatible), optimisé pour AlmaLinux. PHP 8.3+ via module Remi pour perf. Sécurisez la DB post-install comme un coffre-fort.
Installation MariaDB
#!/bin/bash
sudo dnf install mariadb-server -y
sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo mysql_secure_installationInstalle MariaDB, active/démarre, puis lance l'installateur interactif : set root PW fort, supprime users anon/test, disable remote root. Sortie exemple : 'All done!'. Piège : ignorer secure_installation laisse DB vulnérable aux attaques.
Installation PHP 8.3
#!/bin/bash
sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y
sudo dnf module enable php:remi-8.3 -y
sudo dnf install php php-mysqlnd php-fpm php-gd php-xml -y
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
sudo setsebool -P httpd_exec_mod on
sudo systemctl restart httpdActive repo Remi pour PHP moderne, installe core + extensions courantes (mysqlnd pour DB), active FPM pour perf, autorise exec SELinux. Recharge httpd. Testez phpinfo() : version 8.3 confirmée. Piège : sans Remi, PHP 8.0 obsolète ; SELinux bloque sans setsebool.
Vérification finale du stack LAMP
Créez une DB test : mysql -u root -p, CREATE DATABASE testdb; SHOW DATABASES;. Upload un script PHP connecté DB dans /var/www/monapp. Votre serveur LAMP est live ! Accès : http://IP_VM/monapp/index.php.
Bonnes pratiques
- Mots de passe forts : Utilisez pwgen ou diceware ; stockez en KeePass.
- Updates automatisées :
sudo dnf install dnf-automatic ; sudo systemctl enable --now dnf-automatic.timerpour patches sécurité. - SSH clés only :
sudo install -m 700 -d /root/.ssh ; ssh-keygenet éditez /etc/ssh/sshd_config (PasswordAuthentication no). - Logs rotation : Vérifiez logrotate.conf pour httpd/mariadb.
- Backups : rsync /var/www vers offsite hebdo.
Erreurs courantes à éviter
- Oubli sudo : 80% des 'permission denied' ; toujours prefixer.
- Firewall non rechargé : Règles --permanent sans --reload = invisibles.
- SELinux en permissive : Ne désactivez jamais (setenforce 0) ; utilisez audit2allow.
- PHP sans FPM : Mod_php obsolète ; FPM isole les processes.
Pour aller plus loin
- Docs officielles : AlmaLinux Wiki.
- Avancé : Docker/Podman sur Alma, Nginx au lieu Apache.
- Formations Learni DevOps : Maîtrisez Ansible pour automatiser 10x plus vite.
- Communauté : Forum AlmaLinux Discord.