Lecture : 14 minutes · Niveau : intermédiaire-avancé · Mise à jour : avril 2026
Linux propulse la majorité des serveurs en production dans le monde — y compris ceux qui hébergent les sites WordPress, applications, bases de données et outils internes des PME africaines. Ce guide couvre les compétences sysadmin vraiment utilisables au quotidien : gestion services, performance, networking, sécurité, automation.
L’objectif n’est pas l’exhaustivité encyclopédique. Linux a des dizaines de milliers de pages de documentation, et les chercher au moment du problème fait perdre des heures. Ce qui distingue un sysadmin opérationnel d’un débutant qui rame, c’est un socle de réflexes : les bonnes commandes au bon moment, une démarche de diagnostic structurée, et la capacité à automatiser ce qui se répète. Tout le reste se cherche dans le manuel.
Le contexte PME apporte des contraintes spécifiques qui orientent les choix techniques : équipes IT réduites (un ou deux administrateurs pour tout le parc), budgets serrés qui privilégient les solutions auto-hébergées plutôt que les SaaS coûteux, connexions Internet parfois capricieuses qui rendent les opérations distantes plus délicates, et besoin de fiabilité parce qu’un site e-commerce ou un ERP en panne signifie une perte de chiffre d’affaires immédiate. Toutes les recommandations qui suivent tiennent compte de ces contraintes.
Sommaire
- Distribution choisie : Ubuntu LTS, Debian, Rocky ?
- systemd : gérer les services en 2026
- Logs et debug : journalctl, dmesg, /var/log
- Réseau Linux : ip, ss, nftables
- Performance : top, htop, iotop, perf
- Hardening sécurité production
- Cron, systemd timers et automation
- Mises à jour et maintenance
- Plan de monitoring proactif
- FAQ
1. Distribution choisie : Ubuntu LTS, Debian, Rocky ?
Le choix de distribution conditionne toute la maintenance future : disponibilité des paquets, fréquence des mises à jour, durée du support, qualité de la documentation francophone, écosystème d’outils tiers compatibles. Changer de distribution sur un serveur en production est rarement trivial, donc autant choisir intelligemment dès le début.
Trois grandes familles dominent l’usage serveur : la famille Debian (Debian, Ubuntu) qui domine massivement le cloud public et les déploiements modernes ; la famille Red Hat (RHEL, Rocky Linux, AlmaLinux) historiquement présente dans les grandes entreprises et toujours pertinente dans les environnements régulés ; et les distributions spécialisées comme Alpine pour les conteneurs ou NixOS pour les configurations reproductibles.
Pour serveurs production
| Distribution | Avantages | À considérer |
|---|---|---|
| Ubuntu LTS (24.04) | Très large support, doc immense, écosystème riche | Cycle 2 ans |
| Debian (12) | Très stable, peu d’imprévus, philosophie sobre | Cycle plus long, packages parfois plus anciens |
| Rocky Linux 9 | Compatible RHEL, lifecycle 10 ans | Moins répandu en cloud public |
| Alpine | Très légère (~5 Mo base) | musl libc, parfois incompatibilités |
Recommandation PME : Ubuntu 24.04 LTS pour serveurs principaux (équilibre support / fraîcheur). Debian 12 si vous valorisez la stabilité maximale. Alpine uniquement pour conteneurs où la légèreté compte.
Mises à jour de la distribution
- Ubuntu LTS : support sécurité étendu via Ubuntu Pro (offre gratuite limitée pour usage personnel/petite échelle — vérifier les conditions actuelles sur ubuntu.com/pro)
- Debian : support sécurité long via le projet
securitypuisLTS(voir wiki.debian.org/LTS) - Planifier la migration vers la version suivante avant fin de support
2. systemd : gérer les services en 2026
systemd est devenu le standard de gestion de services. Maîtriser ses commandes essentielles fait gagner énormément de temps.
Adopté par toutes les distributions majeures (Ubuntu, Debian, Rocky, Fedora, openSUSE, Arch), systemd a remplacé l’ancien système SysV init. Le débat religieux qui a entouré ce changement s’est largement éteint : les avantages opérationnels — démarrage parallélisé, dépendances explicites, journalisation centralisée, sandboxing intégré, gestion de timers — l’emportent dans la quasi-totalité des cas d’usage serveur. Les distributions sans systemd existent encore (Alpine avec OpenRC, par exemple) mais sortent du périmètre standard PME.
Pour un sysadmin qui découvre systemd, l’investissement d’apprentissage est rentable rapidement. Les concepts à maîtriser tiennent en quelques heures : units, types de service, dépendances, targets, timers. L’écriture d’un fichier .service propre devient une compétence répétable sur tous les déploiements. Un détail clé : pour les services applicatifs (Node.js, Python, Go, services web maison), créer un unit file dédié est presque toujours préférable à des hacks comme nohup ou screen. La traçabilité, la résilience (redémarrage automatique) et l’intégration aux logs justifient les quelques minutes supplémentaires d’écriture.
Commandes du quotidien
# Statut d'un service
sudo systemctl status nginx
# Démarrer/arrêter/redémarrer
sudo systemctl start/stop/restart nginx
# Activer au boot (et démarrer maintenant)
sudo systemctl enable --now nginx
# Désactiver
sudo systemctl disable nginx
# Recharger config sans interruption (si supporté)
sudo systemctl reload nginx
# Voir les services en échec
sudo systemctl --failed
# Voir tous les services actifs
sudo systemctl list-units --type=service --state=active
Créer un service systemd custom
Fichier : /etc/systemd/system/mon-app.service
[Unit]
Description=Mon application Node.js
After=network.target
[Service]
Type=simple
User=monapp
Group=monapp
WorkingDirectory=/opt/mon-app
Environment=NODE_ENV=production
ExecStart=/usr/bin/node server.js
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal
# Sécurité (sandboxing)
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
NoNewPrivileges=true
ReadWritePaths=/var/log/mon-app
[Install]
WantedBy=multi-user.target
Puis :
sudo systemctl daemon-reload
sudo systemctl enable --now mon-app
sudo systemctl status mon-app
Voir les logs d’un service
sudo journalctl -u mon-app -f # suivi temps réel
sudo journalctl -u mon-app -n 100 # 100 dernières lignes
sudo journalctl -u mon-app --since "1 hour ago"
sudo journalctl -u mon-app --since today --priority err
3. Logs et debug : journalctl, dmesg, /var/log
Les logs sont le premier réflexe quand quelque chose va mal. Une infrastructure sans logs lisibles, c’est piloter à l’aveugle. Mais le piège inverse existe aussi : trop de logs, mal structurés, mal indexés, deviennent inutilisables. La règle pratique est de savoir où chercher plutôt que de lire séquentiellement.
Sur un serveur Linux moderne, deux mondes coexistent : les logs journald (centralisés, indexés, requêtables via journalctl) qui couvrent les services systemd, et les logs traditionnels en clair dans /var/log/ que beaucoup de logiciels écrivent encore (Nginx, MySQL, applicatifs custom). Connaître les deux est indispensable.
journalctl (logs systemd)
# Tous les logs depuis le boot
sudo journalctl -b
# Logs depuis le boot précédent
sudo journalctl -b -1
# Filtrer par priorité
sudo journalctl -p err # erreurs et plus graves
sudo journalctl -p warning # avertissements et plus graves
# Filtrer par service ET temps
sudo journalctl -u nginx --since "2 hours ago" --until "1 hour ago"
# Logs des kernels (analogue à dmesg)
sudo journalctl -k
Logs traditionnels dans /var/log
/var/log/auth.log → authentification (sudo, ssh)
/var/log/syslog → général système
/var/log/dpkg.log → installations/désinstallations
/var/log/nginx/ → web (access.log, error.log)
/var/log/mysql/ → base de données
/var/log/unattended-upgrades/ → mises à jour auto
Surveillance proactive
# Tail avec couleurs sur erreurs
sudo tail -f /var/log/nginx/error.log | grep -i --color error
# Top des erreurs aujourd'hui
sudo grep -i error /var/log/syslog | head -20
4. Réseau Linux : ip, ss, nftables
La couche réseau d’un serveur est souvent invisible quand tout fonctionne, et critique dès que ça plante. Connaître les commandes modernes (ip, ss, nft) plutôt que les anciennes (ifconfig, netstat, iptables) évite de chercher des commandes parfois absentes des installations minimales récentes. Le paquet net-tools qui fournissait les anciennes commandes n’est plus installé par défaut sur Ubuntu Server depuis plusieurs versions.
Les diagnostics réseau s’organisent en couches : vérifier que l’interface a bien une IP (ip a), que la route par défaut est correcte (ip route), que le DNS résout (dig), que la cible est joignable (ping, mtr), que le port distant écoute (nc -zv host port), et enfin que le service applicatif répond (curl). Quand un site est lent ou inaccessible, parcourir cette pile dans l’ordre identifie où ça coince en quelques minutes.
Commandes ip (remplace ifconfig/route)
# Voir interfaces et IPs
ip a
# Voir tables de routage
ip route
# Statistiques par interface
ip -s link show eth0
# Ajouter une route temporaire
sudo ip route add 10.0.0.0/24 via 192.168.1.1
ss (remplace netstat)
# Toutes les connexions actives
sudo ss -tunap
# Ports en écoute
sudo ss -tunlp
# Connexions vers un port spécifique
sudo ss -tunap | grep :443
# Stats par protocole
sudo ss -s
nftables (remplace iptables)
# Lister les règles
sudo nft list ruleset
# Sauvegarder
sudo nft list ruleset > /etc/nftables.conf
# Recharger au boot
sudo systemctl enable nftables
Pour la majorité des PME : UFW (frontend simple à iptables/nftables) suffit largement et est plus accessible.
5. Performance : top, htop, iotop, perf
Le diagnostic de performance se résume à une question simple : quelle ressource est saturée ? CPU, mémoire, disque ou réseau. Chaque ressource a ses outils de mesure et ses signaux d’alerte. Sans démarche structurée, on perd des heures à chasser un problème dans la mauvaise direction. Le plus courant : conclure trop vite à un manque de RAM alors que c’est le disque qui est saturé, ou inversement.
La méthode USE (Utilization, Saturation, Errors) popularisée par Brendan Gregg fournit un cadre robuste : pour chaque ressource, mesurer son taux d’utilisation, sa saturation (file d’attente de requêtes en attente), et ses erreurs. Cette approche évite de se fixer trop tôt sur une cause supposée. Le détail de cette méthodologie est traité dans l’article satellite Performance Linux : troubleshooting méthodique.
htop (top amélioré)
sudo apt install htop
htop
Touches utiles : F2 (config), F4 (filtre), F5 (treeview), F6 (sort), F9 (kill), t (tree mode), k (kill process), M (sort by mem), P (sort by CPU).
iotop (I/O par processus)
sudo apt install iotop
sudo iotop -aoP
# -a accumulé, -o seulement processus avec I/O, -P par processus
Quand le disque est saturé (ce qui ralentit tout) → trouver le coupable rapidement.
iftop / nethogs (réseau par processus)
sudo apt install iftop nethogs
sudo iftop -i eth0 # bande passante par connexion
sudo nethogs eth0 # bande passante par processus
Identifier les bottlenecks
# Charge système (1, 5, 15 min)
uptime
# Mémoire détaillée
free -h
cat /proc/meminfo | head -20
# Disque : usage et inodes
df -h
df -i
# Top des dossiers les plus volumineux
sudo du -sh /var/* | sort -hr | head -10
# Processus consommant le plus de RAM
ps aux --sort=-%mem | head -10
# Connexions réseau actives par PID
sudo ss -tunap | head
6. Hardening sécurité production
Un serveur Linux frais d’installation n’est pas un serveur prêt pour la production. Il fonctionne, mais il est ouvert à des dizaines de risques que les bonnes pratiques de hardening réduisent en quelques heures de travail. La question n’est pas de savoir si un bot va tenter une attaque par force brute SSH dans les heures qui suivent l’exposition publique : c’est garanti, et les logs le prouvent. La question est de savoir si le serveur sera correctement configuré pour résister à ces tentatives banales.
Le hardening procède par couches : d’abord réduire la surface d’attaque (services désactivés, ports fermés), puis durcir les accès qui restent (SSH avec clés, sudo restreint), puis instaurer une détection automatique (fail2ban, audit logs), puis prévoir la réponse aux incidents (sauvegardes, logs centralisés). Chaque couche a un coût d’implémentation faible et un bénéfice cumulatif important. L’article satellite Linux sécurité et hardening en production détaille chaque étape.
Voir aussi → Sécuriser WooCommerce : checklist 30 points et VPN PME avec WireGuard.
Checklist serveur production
# 1. SSH : clé uniquement, port custom, pas de root
sudo nano /etc/ssh/sshd_config
# PermitRootLogin no
# PasswordAuthentication no
# Port 2222 (optionnel, security through obscurity)
sudo systemctl restart ssh
# 2. fail2ban
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
# 3. UFW pare-feu
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 2222/tcp comment 'SSH custom'
sudo ufw allow 'Nginx Full'
sudo ufw enable
# 4. Mises à jour automatiques sécurité
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
# 5. Désactiver les services inutiles
systemctl list-unit-files --state=enabled
# Pour chaque service inutile :
sudo systemctl disable --now <service>
# 6. Audit utilisateurs
cat /etc/passwd | grep -v nologin | grep -v false
# Désactiver utilisateurs inutilisés :
sudo usermod -L <user> # lock
# OU
sudo deluser <user>
# 7. Permissions critiques
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
# 8. SELinux ou AppArmor activé
sudo aa-status # AppArmor sur Ubuntu/Debian
Audit avec Lynis
sudo apt install lynis
sudo lynis audit system
# Génère un rapport avec recommandations sécurité
7. Cron, systemd timers et automation
Tout ce qui se fait deux fois manuellement doit se documenter. Tout ce qui se fait trois fois doit s’automatiser. Cette règle simple, appliquée systématiquement, transforme la qualité opérationnelle d’une équipe IT. Les sauvegardes, les nettoyages de logs, les vérifications de santé, les renouvellements de certificats Let’s Encrypt, les rotations de secrets : tout cela se prête naturellement à l’automation.
Au-delà des tâches planifiées sur un seul serveur, l’Infrastructure as Code (Ansible en tête pour la simplicité, Terraform pour le provisioning cloud) permet de standardiser des dizaines ou des centaines de serveurs avec la même configuration. Pour une PME de moins de dix serveurs, Ansible suffit largement et apporte des gains concrets : reproductibilité, traçabilité git des changements, inspection facile de l’état attendu d’un parc.
Cron classique
crontab -e
# Format : min hour day month dayweek command
0 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
*/15 * * * * /opt/scripts/health-check.sh
0 3 * * 0 /opt/scripts/weekly-cleanup.sh
systemd timers (alternative moderne)
Pour des tâches plus complexes que cron, systemd timers offrent : monitoring intégré, dépendances, persistance après reboot raté.
/etc/systemd/system/backup.service :
[Unit]
Description=Backup quotidien
[Service]
Type=oneshot
ExecStart=/opt/scripts/backup.sh
User=admin
/etc/systemd/system/backup.timer :
[Unit]
Description=Lance backup.service quotidiennement à 02h
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl enable --now backup.timer
sudo systemctl list-timers
Anacron pour serveurs pas toujours allumés
Si le serveur peut être éteint au moment du cron : utiliser anacron qui rattrape les exécutions manquées.
8. Mises à jour et maintenance
La maintenance d’un serveur Linux n’est pas optionnelle, c’est ce qui sépare un serveur sain d’un serveur qui dérive lentement vers l’incident. Les vulnérabilités logicielles découvertes chaque semaine concernent les briques fondamentales (kernel, OpenSSL, sudo, systemd, glibc) tout autant que les applicatifs (Nginx, Apache, MySQL, PostgreSQL, PHP). Reporter les patches de sécurité, c’est accumuler une dette qui finira par coûter beaucoup plus cher qu’une fenêtre de maintenance régulière.
La stratégie sensée pour une PME tient en quelques règles : activer les mises à jour de sécurité automatiques (uniquement les patches mineurs, pas les changements de version majeurs), planifier une fenêtre mensuelle de mise à jour générale avec test en environnement de pré-production si possible, snapshotter avant toute upgrade significative, et tracer les changements dans un log d’exploitation. Les distributions LTS facilitent cette discipline : moins de changements de version, plus de stabilité de l’écosystème, support sécurité long.
Mise à jour standard
sudo apt update && sudo apt upgrade -y
sudo apt autoremove --purge -y
sudo apt clean
Mises à jour automatiques sécurité (recommandé)
Voir section hardening, déjà couvert.
Suivi des paquets installés
# Tout ce qui a été installé manuellement
apt-mark showmanual
# Historique des installations
zcat /var/log/dpkg.log* | grep -E "install|remove"
Migration de version (Ubuntu LTS → LTS)
# Tester d'abord sur un environnement de test !
sudo apt update && sudo apt upgrade -y
sudo apt dist-upgrade
sudo apt autoremove
sudo do-release-upgrade
⚠️ Faire un snapshot complet avant.
9. Plan de monitoring proactif
Sans monitoring = découverte d’incidents par ses utilisateurs. Voir notre tutoriel → Monitoring réseau PME avec Grafana et Prometheus.
L’observabilité d’un serveur en production se structure en trois piliers complémentaires : les métriques (chiffres dans le temps : CPU, RAM, requêtes par seconde, latences) qui répondent à la question « est-ce que ça va ? », les logs (événements horodatés : erreurs, accès, audit) qui répondent à « que s’est-il passé ? », et les traces (parcours d’une requête à travers les services) qui répondent à « où est passé le temps ? ». Une PME peut commencer simple — Uptime Kuma pour la disponibilité, Netdata ou Glances pour les métriques locales — et étoffer progressivement vers Prometheus + Grafana dès que le parc dépasse trois ou quatre serveurs.
La doctrine d’alerting compte autant que la collecte de données. Une équipe submergée d’alertes finit par toutes les ignorer ; c’est le syndrome de la fatigue d’alerte (alert fatigue). Définir clairement ce qui mérite un SMS à 3h du matin (serveur down, base de données injoignable, certificat expiré dans moins de 24h) et ce qui peut attendre l’ouverture des bureaux (espace disque qui décroît lentement, pic de CPU passager) protège la disponibilité humaine de l’équipe IT autant que celle des serveurs.
Checks minimum à mettre en place
- Disponibilité des services (systemd watcher, Uptime Kuma)
- Espace disque (alerte si > 80 %)
- CPU/RAM (alerte si soutenu > 80 %)
- Connexions SSH échouées (signal d’attaque)
- Latence services critiques
- Logs d’erreur récents
- Sauvegardes réalisées avec succès
Alertes vraiment utiles
- Email + Slack/Telegram pour critique
- SMS uniquement pour vraie urgence (serveur down)
- Seuils ajustés pour éviter alert fatigue
10. FAQ
Ubuntu Server ou Ubuntu Desktop pour un serveur ?
Server, sans hésiter. Pas d’environnement graphique, plus léger, plus sécurisé par défaut. Tout se fait en SSH.
Faut-il vraiment apprendre vim ?
Au moins savoir : i (insert), Esc (sortir), :wq (save), :q! (quit no save), /texte (search), dd (delete line). Suffit pour 90% des cas. Alternative : nano (plus simple, suffit aussi).
Mon serveur Linux est lent. Par où commencer ?
htop→ CPU saturé ?free -h→ RAM ou swap saturé ?iotop→ disque saturé ?df -h→ disque plein ?journalctl -p err -n 50→ erreurs récentes ?ss -s→ trop de connexions ?
90% des ralentissements sont identifiés par ces 6 commandes.
Combien d’utilisateurs sysadmin pour gérer N serveurs ?
Pas de ratio universel. Avec une bonne automation (Ansible / Salt / Puppet), des images standardisées et un monitoring centralisé, un sysadmin peut gérer un parc bien plus important qu’en gestion manuelle. Au-delà d’une dizaine de serveurs, l’investissement dans l’automation devient indispensable, sinon la dette opérationnelle explose.
Mises à jour automatiques : risque de casser la prod ?
Oui, en théorie. C’est pourquoi on active uniquement les mises à jour sécurité automatiques (patches mineurs sans changement majeur). Les upgrades de version restent manuelles + testées.
Quel langage pour scripter en sysadmin ?
- Bash : pour glue / scripts simples
- Python : pour scripts complexes, manipulation de données, API REST
- Ansible (YAML) : pour gestion configuration multi-serveurs
Articles liés (cluster Linux administration)
- 👉 systemd : gérer les services en production — tutoriel pratique
- 👉 Performance Linux : troubleshooting méthodique
- 👉 Linux sécurité et hardening en production
Article mis à jour le 25 avril 2026. Pour signaler une erreur, écrivez-nous.