- 1 1. Introduction
- 2 2. Installation et configuration initiale d’Ubuntu
- 3 3. Installation et configuration d’Apache
- 4 4. Configuration des hôtes virtuels (Gestion de plusieurs sites Web)
- 4.1 Qu’est-ce qu’un hôte virtuel ?
- 4.2 Étapes pour configurer les hôtes virtuels
- 4.2.1 1. Créez des répertoires pour chaque site
- 4.2.2 2. Changez le propriétaire des répertoires
- 4.2.3 3. Créez un fichier HTML de test
- 4.2.4 4. Créez les fichiers de configuration des hôtes virtuels
- 4.2.5 Configuration pour example.com
- 4.2.6 Configuration pour test.com
- 4.2.7 5. Activez les hôtes virtuels
- 4.2.8 Test de la configuration d’Apache
- 4.3 6. Test local (édition du fichier hosts)
- 5 5. Activation du SSL/TLS (HTTPS)
- 6 6. Améliorer la sécurité du serveur Web
- 7 7. Optimisation des performances
- 8 8. Dépannage
- 9 9. Résumé
- 9.1 Ce que vous avez appris
- 9.2 Prochaines étapes
- 9.3 Questions fréquentes (FAQ)
- 9.3.1 Q1 : Dois‑je choisir Nginx ou Apache pour mon serveur web ?
- 9.3.2 Q2 : Les certificats SSL peuvent‑ils être renouvelés automatiquement ?
- 9.3.3 Q3 : Comment puis‑je renforcer davantage la sécurité de mon serveur ?
- 9.3.4 Q4 : Comment améliorer les performances d’Apache ?
- 9.3.5 Q5 : Pourquoi obtient‑je une erreur « 403 Forbidden » ?
- 9.4 Réflexions finales
1. Introduction
Qu’est‑ce qu’un serveur Web Ubuntu ?
Un serveur Web est un système qui délivre des sites Web sur Internet. Les logiciels de serveur Web populaires incluent Apache, Nginx et LiteSpeed, mais le plus largement utilisé sur Ubuntu est Apache.
Ubuntu est léger, très stable et open source, ce qui en fait un choix populaire tant pour les particuliers que pour les entreprises. Il est particulièrement adapté à la création d’une pile LAMP (Linux, Apache, MySQL/MariaDB, PHP), couramment utilisée pour héberger des sites Web et des applications Web.
À qui s’adresse ce guide ?
Cet article est destiné aux débutants qui configurent un serveur Web pour la première fois. Il fournit un guide étape par étape sur l’installation d’Apache sur Ubuntu, la configuration d’hôtes virtuels, la mise en place de certificats SSL, l’optimisation des performances et le renforcement de la sécurité.
Ce que vous apprendrez
- Comment configurer un serveur Web sur Ubuntu (installation et configuration d’Apache)
- Mise en place d’hôtes virtuels pour gérer plusieurs sites Web
- Installation de certificats SSL gratuits avec Let’s Encrypt
- Renforcement de la sécurité et optimisation des performances du serveur
- Dépannage des problèmes courants de serveur Web
2. Installation et configuration initiale d’Ubuntu
Exigences du système
Pour exécuter Ubuntu en tant que serveur web, les spécifications système minimales suivantes sont recommandées :
Component | Exigences minimales | Exigences recommandées |
---|---|---|
OS | Ubuntu 22.04 LTS | Ubuntu 22.04 LTS |
CPU | 1 GHz ou plus | 2 GHz ou plus |
Mémoire | 512MB | 2 Go ou plus |
Stockage | 10 Go ou plus | 20 Go ou plus |
Réseau | Internet connection | Connexion à haute vitesse recommandée |
Téléchargement et installation d’Ubuntu
Vous pouvez télécharger Ubuntu depuis le site officiel : https://ubuntu.com/download/server. Une fois que vous avez obtenu le fichier ISO, vous pouvez l’installer en utilisant VirtualBox ou VMware pour un environnement virtuel, ou sur un serveur dédié ou VPS.
Étapes d’installation :
- Créer le support d’installation
- Utiliser une clé USB (avec des outils comme Rufus)
- Monter le fichier ISO dans une machine virtuelle
- Suivre l’assistant d’installation
- Définir la langue sur l’anglais
- Vérifier la connectivité réseau
- Configurer le nom d’utilisateur et le mot de passe
- Installer le serveur SSH (optionnel, peut être fait plus tard)
- Terminer la configuration du système d’exploitation et redémarrer
- Se connecter et commencer la configuration initiale
Configuration initiale de base
Après l’installation, effectuez les étapes de configuration initiale suivantes :
- Mettre à jour les paquets du système
sudo apt update && sudo apt upgrade -y
→ Cela garantit que les correctifs de sécurité et les mises à jour logicielles sont appliqués.
- Définir le fuseau horaire
sudo timedatectl set-timezone America/New_York
→ Définissez le fuseau horaire en fonction de l’emplacement de votre serveur.
- Activer le pare-feu
sudo ufw enable
→ Cela protège le serveur contre les accès non autorisés.
- Configurer SSH (pour la gestion à distance)
- Vérifier si SSH est activé :
sudo systemctl status ssh
- Si ce n’est pas activé, démarrez-le :
sudo systemctl enable --now ssh
Une fois ces paramètres initiaux appliqués, le serveur Ubuntu est prêt à être configuré en tant que serveur web.
3. Installation et configuration d’Apache
Qu’est-ce qu’Apache ?
Apache (officiellement Apache HTTP Server) est un logiciel serveur web open source connu pour sa stabilité, son évolutivité et sa sécurité. Environ 30 % des serveurs web dans le monde utilisent Apache.
Fonctionnalités clés :
- Gratuit et open source
- Architecture modulaire pour une personnalisation facile
- Prend en charge SSL/TLS pour des connexions HTTPS sécurisées
- Prise en charge des hôtes virtuels pour gérer plusieurs sites web
Installation d’Apache
Sur Ubuntu, Apache peut être installé facilement en utilisant le gestionnaire de paquets apt
.
Installer Apache
Exécutez les commandes suivantes pour installer Apache :
sudo apt update
sudo apt install apache2 -y
Vérifier l’installation
Après l’installation, vérifiez la version d’Apache :
apache2 -v
Exemple de sortie :
Server version: Apache/2.4.52 (Ubuntu)
Server built: 2023-07-01T12:34:56
Si vous voyez ce message, Apache est installé avec succès.
Démarrage, arrêt et redémarrage d’Apache
Apache est géré à l’aide de la commande systemctl
.
Démarrer Apache
sudo systemctl start apache2
Activer Apache au démarrage
sudo systemctl enable apache2
Vérifier le statut d’Apache
Pour confirmer qu’Apache fonctionne :
sudo systemctl status apache2
Si Apache fonctionne, vous verrez un statut « active (running) ».
Redémarrer ou arrêter Apache
Si vous devez redémarrer Apache après avoir modifié la configuration :
sudo systemctl restart apache2
Pour arrêter temporairement Apache :
sudo systemctl stop apache2
4. Configuration des hôtes virtuels (Gestion de plusieurs sites Web)
Qu’est-ce qu’un hôte virtuel ?
Un hôte virtuel est une fonctionnalité qui permet à un seul serveur Apache d’héberger plusieurs domaines (ou sous‑domaines). Par exemple, un serveur unique peut héberger à la fois example.com
et test.com
.
Il existe deux types d’hôtes virtuels :
- Hôte virtuel basé sur le nom
- Héberge plusieurs sites sur la même adresse IP
- La façon la plus courante de gérer plusieurs sites web
- Hôte virtuel basé sur l’IP
- Chaque site se voit attribuer une adresse IP différente
- Nécessite plusieurs interfaces réseau sur le serveur
Typiquement, l’hébergement virtuel basé sur le nom est utilisé.
Étapes pour configurer les hôtes virtuels
1. Créez des répertoires pour chaque site
Chaque hôte virtuel nécessite un répertoire dédié pour stocker les fichiers de son site web.
sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html
2. Changez le propriétaire des répertoires
Pour garantir qu’Apache puisse accéder aux fichiers, définissez le propriétaire sur www-data
.
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/test.com/public_html
3. Créez un fichier HTML de test
Pour vérification, créez un index.html
fichier pour chaque site.
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Welcome to test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html
4. Créez les fichiers de configuration des hôtes virtuels
Les configurations des hôtes virtuels sont stockées dans /etc/apache2/sites-available/
.
Configuration pour example.com
Créez et éditez un fichier de configuration :
sudo nano /etc/apache2/sites-available/example.com.conf
Ajoutez la configuration suivante :
<VirtualHost *:80>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>
Configuration pour test.com
sudo nano /etc/apache2/sites-available/test.com.conf
Ajoutez le contenu suivant :
<VirtualHost *:80>
ServerAdmin admin@test.com
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com/public_html
<Directory /var/www/test.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>
5. Activez les hôtes virtuels
Une fois les fichiers de configuration créés, activez‑les avec a2ensite
.
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
Test de la configuration d’Apache
Vérifiez les erreurs de syntaxe :
sudo apachectl configtest
Si la sortie est :
Syntax OK
Redémarrez Apache pour appliquer les changements :
sudo systemctl restart apache2
6. Test local (édition du fichier hosts)
Pour vérifier que les hôtes virtuels fonctionnent correctement, éditez votre fichier local hosts
.
sudo nano /etc/hosts
Ajoutez les lignes suivantes :
127.0.0.1 example.com
127.0.0.1 test.com
Après avoir enregistré, ouvrez un navigateur et saisissez :
http://example.com/
Si vous voyez ** »Welcome to example.com »**, la configuration est réussie.
5. Activation du SSL/TLS (HTTPS)
Qu’est-ce que SSL/TLS ?
SSL (Secure Sockets Layer) et TLS (Transport Layer Security) sont des technologies de chiffrement qui sécurisent les communications sur Internet.
Avantages de SSL/TLS :
✅ Chiffre les communications (réduit les risques de vol de données et de falsification)
✅ Améliore le référencement SEO (Google privilégie les sites HTTPS dans les résultats de recherche)
✅ Évite les avertissements du navigateur (les sites HTTP peuvent afficher « Non sécurisé »)
✅ Sécurise les paiements en ligne et les identifiants de connexion
Utiliser Let’s Encrypt pour un SSL gratuit
Let’s Encrypt est une autorité de certification qui fournit des certificats SSL gratuits. Nous utilisons certbot
pour le configurer facilement.
Installer Certbot
sudo apt update
sudo apt install certbot python3-certbot-apache -y
Configurer automatiquement SSL pour Apache
sudo certbot --apache -d example.com -d www.example.com
Vérifier que HTTPS fonctionne
Après l’installation, vérifiez :
https://example.com/
Si vous voyez une **icône de cadenas** dans le navigateur, SSL fonctionne.
6. Améliorer la sécurité du serveur Web
Configuration d’un pare-feu (UFW)
Activer le pare-feu et ouvrir les ports nécessaires
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
Protection de SSH
Modifier le port SSH
sudo nano /etc/ssh/sshd_config
Modifier :
Port 2222 # Change 22 to a custom port
Redémarrer SSH :
sudo systemctl restart ssh
7. Optimisation des performances
Optimisation d’Apache
Par défaut, Apache n’est pas toujours optimisé pour gérer un trafic élevé efficacement. Vous pouvez ajuster les paramètres suivants pour améliorer les performances.
Optimisation du MPM (Multi-Processing Module)
Le MPM (Multi-Processing Module) détermine la façon dont Apache traite les requêtes.
Vérifiez la configuration actuelle du MPM :
apachectl -M | grep mpm
Exemple de sortie :
mpm_prefork_module (shared)
Si vous voyez mpm_prefork_module
, envisagez de passer à mpm_event
pour de meilleures performances.
Passer au MPM Event :
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2
Activation de KeepAlive
KeepAlive permet des connexions persistantes, réduisant le nombre de nouvelles requêtes.
Modifiez le fichier de configuration d’Apache :
sudo nano /etc/apache2/apache2.conf
Ajoutez ou modifiez les paramètres suivants :
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
Redémarrez Apache :
sudo systemctl restart apache2
Exploiter la mise en cache
L’utilisation de la mise en cache côté navigateur et côté serveur réduit les requêtes redondantes, améliorant les temps de réponse.
Activer mod_expires
pour la mise en cache du navigateur
sudo a2enmod expires
sudo systemctl restart apache2
Modifiez le fichier de configuration de votre hôte virtuel :
sudo nano /etc/apache2/sites-available/example.com.conf
Ajoutez :
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
Redémarrez Apache :
sudo systemctl restart apache2
Activer la compression Gzip
Activez la compression pour réduire la taille des fichiers et améliorer la vitesse de chargement.
Activer mod_deflate
sudo a2enmod deflate
sudo systemctl restart apache2
Modifiez le fichier de configuration de l’hôte virtuel :
sudo nano /etc/apache2/sites-available/example.com.conf
Ajoutez :
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Redémarrez Apache :
sudo systemctl restart apache2
Limiter les ressources
Pour éviter une utilisation excessive des ressources, limitez le nombre de connexions par IP.
Activer mod_ratelimit
sudo a2enmod ratelimit
sudo systemctl restart apache2
Modifiez le fichier de configuration de l’hôte virtuel :
sudo nano /etc/apache2/sites-available/example.com.conf
Ajoutez :
<Location />
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 200
</Location>
Redémarrez Apache :
sudo systemctl restart apache2
8. Dépannage
Apache ne démarre pas ou s’arrête de façon inattendue
Vérifier le statut d’Apache
sudo systemctl status apache2
Si la sortie contient :
Active: failed
Alors une erreur s’est produite.
Vérifier les journaux d’erreurs
sudo journalctl -xe
sudo tail -f /var/log/apache2/error.log
Vérifier les conflits de ports
sudo netstat -tulnp | grep ':80'
Ou :
sudo lsof -i:80
Problèmes de certificat SSL
Certificat SSL expiré
sudo certbot renew --force-renewal
Erreur de configuration SSL d’Apache
Modifier le fichier de configuration SSL d’Apache :
sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf
Vérifier :
SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
Redémarrer Apache :
sudo systemctl restart apache2
Site web ne charge pas (erreurs 403, 404, 500)
403 Interdit
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com/public_html
404 Non trouvé
Vérifier la configuration de l’hôte virtuel :
DocumentRoot /var/www/example.com/public_html
Activer mod_rewrite
si nécessaire :
sudo a2enmod rewrite
sudo systemctl restart apache2
500 Erreur interne du serveur
Vérifier les journaux d’erreurs :
sudo tail -f /var/log/apache2/error.log
Essayer de renommer .htaccess
:
mv /var/www/example.com/public_html/.htaccess /var/www/example.com/public_html/.htaccess.bak
9. Résumé
Ce que vous avez appris
Passons en revue les principaux sujets abordés dans ce guide.
Section | Points clés |
---|---|
1. Introduction | Aperçu du serveur Web Ubuntu et l’objectif de ce guide |
2. Installation et configuration initiale d’Ubuntu | Configuration d’Ubuntu, mise à jour des paquets et configuration du pare-feu |
3. Installation et configuration d’Apache | Installation d’Apache, démarrage du service et vérification du fonctionnement |
4. Configuration des hôtes virtuels | Hébergement de plusieurs sites Web sur un seul serveur Apache |
5. Activation de SSL/TLS | Utilisation de Let’s Encrypt pour la configuration HTTPS |
6. Renforcement de la sécurité du serveur Web | Configuration du pare-feu, sécurité SSH et renforcement d’Apache |
7. Optimisation des performances | Utilisation du cache, de la compression et réglage des paramètres Apache |
8. Dépannage | Correction des erreurs Apache, des problèmes SSL et des erreurs courantes du site Web |
Prochaines étapes
Maintenant que votre serveur web Ubuntu est opérationnel, envisagez d’apprendre des sujets plus avancés pour améliorer les capacités de votre serveur :
✅ Déployer des applications WordPress ou PHP
✅ Configurer un serveur de base de données (MySQL / MariaDB)
✅ Configurer Nginx comme proxy inverse pour Apache
✅ Mettre en place l’auto‑scaling avec les plateformes cloud (AWS, GCP, Azure)
✅ Journalisation et surveillance avancées (Fail2Ban, Logwatch, Prometheus)
Questions fréquentes (FAQ)
Q1 : Dois‑je choisir Nginx ou Apache pour mon serveur web ?
R1 : Si votre site Web sert principalement du contenu statique, Nginx est recommandé. Si vous avez besoin de traitement de contenu dynamique (comme PHP), Apache est un meilleur choix. Vous pouvez également utiliser Nginx comme proxy inverse devant Apache.
Q2 : Les certificats SSL peuvent‑ils être renouvelés automatiquement ?
R2 : Oui, Certbot prend en charge le renouvellement automatique. Vous pouvez vérifier l’état du renouvellement avec :
sudo certbot renew --dry-run
Pour un renouvellement entièrement automatique, il est recommandé de configurer une tâche cron.
Q3 : Comment puis‑je renforcer davantage la sécurité de mon serveur ?
R3 : Mettez en place Fail2Ban pour prévenir les attaques par force brute, masquer les détails de version d’Apache, désactiver les modules inutilisés et appliquer des pratiques de sécurité SSH robustes.
Q4 : Comment améliorer les performances d’Apache ?
R4 : Passez à MPM Event, activez la mise en cache (mod_cache), utilisez la compression gzip (mod_deflate) et optimisez les paramètres KeepAlive.
Q5 : Pourquoi obtient‑je une erreur « 403 Forbidden » ?
R5 : Assurez‑vous que le propriétaire du répertoire est défini sur www-data
et ajustez les permissions des fichiers :
sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com/public_html
Réflexions finales
Mettre en place un serveur web Ubuntu implique plusieurs étapes, de l’installation et la configuration à l’optimisation et le dépannage. Cependant, une fois que vous comprenez le processus, vous pouvez créer et gérer un environnement d’hébergement web puissant.
🚀 Suivez ce guide pour créer un serveur web sécurisé, rapide et fiable, et continuez à améliorer vos compétences en tant qu’administrateur serveur ! 🚀