J’ai passé des années à installer des serveurs web sur Linux, et laissez-moi vous dire une chose : la première fois que j’ai lancé un serveur Apache, j’ai cru que c’était magique. Puis j’ai passé trois jours à comprendre pourquoi mon site ne répondait pas – spoiler : j’avais oublié d’ouvrir un port dans le pare-feu. Ce tutoriel n’est pas une énième copie de la doc officielle. C’est ce que j’aurais aimé lire quand j’ai commencé : un guide qui va droit au but, avec les erreurs à éviter et les astuces qui font gagner des heures.
Points clés à retenir
- Deux serveurs dominent le marché : Apache (45 % des sites en 2025 selon W3Techs) et Nginx (33 %). Le choix dépend de vos besoins – statique vs. dynamique.
- L’installation de base prend moins de 5 minutes sur Ubuntu ou Debian, mais la configuration de la sécurité vous prendra une heure.
- Le pare-feu (UFW) et les permissions des fichiers sont les deux pièges les plus fréquents pour les débutants.
- HTTPS n’est plus une option : 92 % des sites en ligne utilisent HTTPS. Let’s Encrypt rend ça gratuit et simple.
- Un serveur mal configuré peut être compromis en moins de 24 heures. La sécurité commence dès l’installation.
Choisir le bon serveur : Apache ou Nginx ?
Avant de taper la moindre commande, il faut choisir votre moteur. J’ai commencé avec Apache parce que c’était le standard. Puis j’ai migré vers Nginx pour un projet à fort trafic. Résultat : les deux sont excellents, mais ils ne répondent pas aux mêmes besoins.
Apache vs. Nginx : le match
Apache gère le contenu dynamique (PHP, Python) directement via des modules. C’est simple : vous installez, vous activez mod_php, et ça tourne. Nginx, lui, délègue le traitement dynamique à un processeur externe (PHP-FPM, par exemple). Ça le rend plus rapide sur les fichiers statiques, mais un peu plus complexe à configurer.
Voici un tableau comparatif basé sur mon expérience et les données de 2025 :
| Critère | Apache | Nginx |
|---|---|---|
| Facilité d’installation | Très facile (apt install apache2) | Facile (apt install nginx) |
| Gestion du contenu dynamique | Natif (mod_php, mod_python) | Via proxy (PHP-FPM, uWSGI) |
| Performance fichiers statiques | Bonne | Excellente (jusqu’à 2x plus rapide) |
| Configuration des hôtes virtuels | Fichiers dans /etc/apache2/sites-available/ | Fichiers dans /etc/nginx/sites-available/ |
| Consommation mémoire | Plus élevée (processus par connexion) | Plus faible (événements asynchrones) |
| Courbe d’apprentissage | Douce | Modérée (comprendre les blocs location) |
Mon conseil : si vous débutez ou si vous hébergez un site WordPress, prenez Apache. Si vous visez un site à fort trafic ou une API, Nginx est le meilleur choix. J’ai fait l’erreur de vouloir Nginx pour un petit blog perso – j’ai perdu une journée à configurer PHP-FPM pour rien.
Préparer votre système Linux
Une fois le serveur choisi, il faut préparer le terrain. J’ai appris ça à mes dépens : une installation sans mise à jour préalable, c’est l’assurance de bugs incompréhensibles.
Connectez-vous en SSH à votre machine (ou ouvrez un terminal si vous êtes en local). La première chose à faire :
sudo apt update && sudo apt upgrade -y Ça met à jour la liste des paquets et installe les dernières versions. Ensuite, installez les dépendances de base :
sudo apt install curl wget git -y Le piège classique : oublier de configurer le pare-feu. Sur Ubuntu, UFW (Uncomplicated Firewall) est votre ami. Activez-le et autorisez les ports nécessaires :
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable J’ai passé une nuit à me demander pourquoi mon serveur ne répondait pas. Le pare-feu bloquait tout. Depuis, je vérifie UFW avant même d’installer le serveur web.
Un détail qui compte : vérifiez que votre système est à jour. En 2026, les failles de sécurité comme Log4j ou Heartbleed nous rappellent qu’un serveur non patché est une porte ouverte.
Installer Apache sur Ubuntu/Debian
Apache est le serveur web le plus utilisé au monde – environ 45 % des sites en 2025. Son installation est triviale, mais sa configuration mérite de l’attention.
Installation de base
Tapez simplement :
sudo apt install apache2 -y Une fois installé, démarrez le service et activez-le au démarrage :
sudo systemctl start apache2
sudo systemctl enable apache2 Vérifiez que ça fonctionne : ouvrez un navigateur et tapez l’adresse IP de votre serveur. Vous devriez voir la page par défaut d’Apache – un écran blanc avec le texte « Apache2 Ubuntu Default Page ».
Erreur fréquente : si vous voyez une page vide ou une erreur 403, c’est souvent un problème de permissions. Le dossier par défaut est /var/www/html/. Vérifiez que l’utilisateur www-data a les droits :
sudo chown -R www-data:www-data /var/www/html/
sudo chmod -R 755 /var/www/html/ Modifier la page par défaut
Pour remplacer la page d’accueil, créez un fichier index.html dans /var/www/html/ :
echo "<h1>Mon premier serveur Apache</h1>" | sudo tee /var/www/html/index.html Rechargez la page dans votre navigateur – vous devriez voir votre texte. Facile, non ?
Installer Nginx sur Ubuntu/Debian
Nginx gagne du terrain, surtout pour les sites statiques et les proxys inverses. En 2025, il sert environ 33 % des sites. Son installation est tout aussi simple.
Installation de base
sudo apt install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx Vérifiez avec l’adresse IP : la page par défaut de Nginx s’affiche – un fond bleu avec le texte « Welcome to nginx ».
La différence clé : Nginx utilise des fichiers de configuration dans /etc/nginx/sites-available/ et /etc/nginx/sites-enabled/. Le dossier racine par défaut est /var/www/html/, comme pour Apache.
Configurer un site simple
Créez un fichier de configuration pour votre site :
sudo nano /etc/nginx/sites-available/monsite Ajoutez ce bloc :
server {
listen 80;
server_name monsite.local;
root /var/www/monsite;
index index.html index.htm;
} Activez le site :
sudo ln -s /etc/nginx/sites-available/monsite /etc/nginx/sites-enabled/
sudo systemctl reload nginx Petit conseil : testez toujours la configuration avant de recharger :
sudo nginx -t Si vous voyez « syntax is ok », vous êtes bon. Sinon, Nginx vous dira exactement où se trouve l’erreur – un luxe qu’Apache n’offre pas toujours.
Configurer le serveur : hôtes virtuels, permissions et sécurité
L’installation de base, c’est bien. Mais un serveur web sans configuration solide, c’est un peu comme une voiture sans freins. Voici les trois points que je vérifie systématiquement.
Hôtes virtuels : héberger plusieurs sites
Les hôtes virtuels permettent de servir plusieurs domaines sur un même serveur. Avec Apache, ça se fait via des fichiers dans /etc/apache2/sites-available/. Avec Nginx, c’est le même principe.
Exemple pour Apache :
sudo nano /etc/apache2/sites-available/monsite.conf Ajoutez :
<VirtualHost *:80>
ServerAdmin admin@monsite.com
ServerName monsite.com
ServerAlias www.monsite.com
DocumentRoot /var/www/monsite
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost> Activez-le :
sudo a2ensite monsite.conf
sudo systemctl reload apache2 Astuce : utilisez a2dissite default.conf pour désactiver le site par défaut. Sinon, tous les domaines non configurés pointeront vers la page par défaut.
Permissions des fichiers : le nerf de la guerre
J’ai déjà vu des serveurs où tout était en 777 (lecture, écriture, exécution pour tout le monde). Une horreur. La règle d’or :
- Les fichiers : 644 (lecture pour tous, écriture pour le propriétaire)
- Les dossiers : 755 (lecture et exécution pour tous, écriture pour le propriétaire)
- Le propriétaire doit être
www-data(ou l’utilisateur du serveur web)
sudo chown -R www-data:www-data /var/www/monsite
sudo find /var/www/monsite -type f -exec chmod 644 {} \;
sudo find /var/www/monsite -type d -exec chmod 755 {} \; Sécurité de base : les réflexes à avoir
En 2026, les bots scannent Internet en permanence. Voici ce que je fais sur chaque nouveau serveur :
- Désactiver l’affichage des versions : dans
/etc/apache2/conf-available/security.conf, mettezServerTokens ProdetServerSignature Off. - Limiter les requêtes : installez
libapache2-mod-evasivepour Apache oungx_http_limit_req_modulepour Nginx. - Désactiver les méthodes HTTP inutiles : bloquez PUT, DELETE, TRACE si vous n’en avez pas besoin.
- Changer le port SSH : ça réduit les tentatives de connexion de 90 %.
J’ai appliqué ces règles sur un serveur exposé à Internet. Résultat : zéro compromission en deux ans, alors que mon serveur précédent (non sécurisé) avait été piraté en 48 heures.
Sécuriser avec HTTPS via Let’s Encrypt
HTTP, c’est fini. Google pénalise les sites sans HTTPS, et 92 % des sites en ligne utilisent désormais le chiffrement. Let’s Encrypt rend ça gratuit et simple.
Installer Certbot
Certbot est l’outil officiel pour obtenir des certificats Let’s Encrypt. Installez-le :
sudo apt install certbot python3-certbot-apache -y # Pour Apache
sudo apt install certbot python3-certbot-nginx -y # Pour Nginx Obtenir le certificat
Pour Apache :
sudo certbot --apache -d monsite.com -d www.monsite.com Pour Nginx :
sudo certbot --nginx -d monsite.com -d www.monsite.com Certbot va modifier automatiquement votre configuration pour rediriger HTTP vers HTTPS. Il configure aussi le renouvellement automatique.
Testez le renouvellement :
sudo certbot renew --dry-run Si ça fonctionne, vous n’aurez plus jamais à y penser. J’ai configuré ça sur une dizaine de serveurs, et je n’ai jamais eu de certificat expiré.
Tester et dépanner votre serveur
Une fois le serveur installé et configuré, il faut le tester. J’ai une checklist que je suis à chaque fois :
- Test de base : ouvrez l’IP ou le domaine dans un navigateur. Vous devez voir votre page.
- Test HTTPS : vérifiez que le cadenas vert s’affiche. Utilisez SSL Labs pour un audit complet.
- Test de performance : utilisez
ab(Apache Bench) pour simuler des requêtes :ab -n 1000 -c 10 https://monsite.com/. - Test de sécurité : scannez avec
nmappour voir les ports ouverts :sudo nmap -sS -O monsite.com.
Problème courant n°1 : « Connection refused ». Vérifiez que le service tourne (sudo systemctl status apache2) et que le pare-feu autorise le port 80.
Problème courant n°2 : « 403 Forbidden ». C’est un problème de permissions. Vérifiez que le dossier racine appartient à www-data et que les fichiers sont lisibles.
Problème courant n°3 : « 500 Internal Server Error ». Souvent un problème de configuration PHP. Regardez les logs : sudo tail -f /var/log/apache2/error.log.
J’ai passé des heures sur ce dernier. La solution était un point-virgule manquant dans un fichier .htaccess. Depuis, je vérifie toujours les logs en premier.
Le serveur est en ligne, et maintenant ?
Installer un serveur web sur Linux, c’est une chose. Le maintenir, c’en est une autre. Vous avez maintenant un serveur fonctionnel, sécurisé avec HTTPS, et capable de servir des pages web. Félicitations – vous avez fait le plus dur.
Mais ne vous arrêtez pas là. La prochaine étape, c’est de déployer un vrai site. WordPress, un framework PHP, une application Node.js – le choix est vaste. Et surtout, continuez à surveiller les logs, à appliquer les mises à jour, et à tester la sécurité.
Votre prochaine action : prenez 10 minutes pour vérifier les points de sécurité que j’ai listés. Si tout est bon, déployez votre premier site. Sinon, corrigez les failles maintenant – c’est toujours plus simple que de gérer une compromission.
Et si vous bloquez, les logs sont vos meilleurs amis. Un serveur web, ça se dompte. Avec un peu de pratique, vous serez capable de le configurer les yeux fermés.
Questions fréquentes
Quelle est la différence entre Apache et Nginx pour un débutant ?
Apache est plus simple à configurer pour le contenu dynamique (PHP, Python) car il intègre les modules directement. Nginx est plus performant pour les fichiers statiques mais nécessite de configurer un processeur externe (PHP-FPM) pour le dynamique. Si vous débutez, commencez par Apache.
Comment installer un serveur web sur Linux sans ligne de commande ?
Sur Ubuntu, vous pouvez utiliser Webmin (interface web) ou Cockpit (interface graphique). Mais honnêtement, la ligne de commande reste plus rapide et plus fiable. Une fois que vous maîtrisez les commandes de base, vous gagnez un temps fou.
Est-ce que je peux installer Apache et Nginx sur le même serveur ?
Oui, mais pas sur les mêmes ports. Vous pouvez faire tourner Apache sur le port 8080 et Nginx sur le port 80, par exemple. Nginx peut aussi servir de proxy inverse vers Apache. C’est une configuration avancée, mais très utile pour certains projets.
Comment sécuriser un serveur web Linux gratuitement ?
Utilisez Let’s Encrypt pour HTTPS, configurez UFW pour le pare-feu, désactivez l’affichage des versions du serveur, et mettez à jour régulièrement. Tout ça est gratuit. Ajoutez Fail2ban pour bloquer les tentatives de connexion SSH répétées.
Mon serveur web ne répond pas : que faire ?
Vérifiez dans l’ordre : 1) le service tourne-t-il ? (systemctl status apache2), 2) le pare-feu autorise-t-il le port 80 ? (sudo ufw status), 3) le service écoute-t-il sur le bon port ? (sudo netstat -tlnp | grep 80), 4) les logs du serveur (/var/log/apache2/error.log). Dans 90 % des cas, c’est le pare-feu ou une erreur de configuration.