Déploiement d'un serveur web avec des hôtes virtuels et SSL
1. Préparation de l'environnement
Il est temps de tout rassembler. Aujourd'hui, on déploie un serveur avec plusieurs hôtes virtuels et on leur connecte HTTPS. On va tester, débugger et faire les derniers réglages.
Notre mission
Dans ce projet, on va déployer deux sites sur un seul serveur web :
- example.com
- test.com
Pour chaque site, on configurera un hôte virtuel, on activera HTTPS et on montrera les étapes de débogage et de vérification. Vous êtes prêts ? C'est parti !
Préparation
Avant de commencer, assurons-nous que tout est bien configuré :
Vous avez déjà un serveur web installé (Nginx ou Apache).
Si vous utilisez Nginx :
sudo apt-get update sudo apt-get install nginx
Ou Apache :
sudo apt-get update sudo apt-get install apache2
Le package Certbot pour travailler avec SSL est installé.
Pour Nginx :
sudo apt-get install certbot python3-certbot-nginx
Pour Apache :
sudo apt-get install certbot python3-certbot-apache
Vous avez accès au serveur où les DNS pour les domaines example.com et test.com sont configurés, ou vous pouvez utiliser
/etc/hosts
pour les tests.
2. Configuration du répertoire pour chaque site
On commence par créer les répertoires et les fichiers pour nos sites.
Étape 1 : Créer des dossiers pour les sites
sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com
Étape 2 : Créer des fichiers HTML de test
On va créer un fichier HTML basique pour chaque site :
example.com
sudo nano /var/www/example.com/index.html
Contenu :
<!DOCTYPE html>
<html>
<head>
<title>Bienvenue sur example.com</title>
</head>
<body>
<h1>Ceci est example.com</h1>
<p>Bienvenue sur example.com ! Le site est en ligne et sécurisé avec SSL !</p>
</body>
</html>
test.com
sudo nano /var/www/test.com/index.html
Contenu :
<!DOCTYPE html>
<html>
<head>
<title>Bienvenue sur test.com</title>
</head>
<body>
<h1>Ceci est test.com</h1>
<p>Bienvenue sur test.com ! Le site est opérationnel et sécurisé avec SSL !</p>
</body>
</html>
3. Configuration des hôtes virtuels
On va créer un fichier de configuration séparé pour chaque site.
Étape 1 : Configuration pour Nginx
example.com
sudo nano /etc/nginx/sites-available/example.com
Contenu :
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
test.com
sudo nano /etc/nginx/sites-available/test.com
Contenu :
server {
listen 80;
server_name test.com www.test.com;
root /var/www/test.com;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
On active la configuration :
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
On redémarre le serveur :
sudo nginx -t
sudo systemctl reload nginx
Étape 2 : Configuration pour Apache
example.com
sudo nano /etc/apache2/sites-available/example.com.conf
Contenu :
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com
<Directory /var/www/example.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
test.com
sudo nano /etc/apache2/sites-available/test.com.conf
Contenu :
<VirtualHost *:80>
ServerName test.com
ServerAlias www.test.com
DocumentRoot /var/www/test.com
<Directory /var/www/test.com>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
On active les configurations :
sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2
4. Configuration de HTTPS pour les sites
Maintenant, on va configurer SSL pour les deux sites en utilisant Let’s Encrypt.
sudo certbot --nginx
# ou pour Apache :
sudo certbot --apache
Le processus vous proposera de sélectionner pour quels sites générer les certificats. Choisissez example.com
et test.com
. Certbot mettra automatiquement à jour la configuration des serveurs.
5. Vérification du fonctionnement des sites
Après avoir terminé la configuration, visitez vos sites :
Vous devriez voir les pages HTML créées. Vérifiez que le navigateur affiche "Sécurisé" (Secure) dans la barre d'adresse.
6. Débogage et vérification
Si quelque chose ne va pas, vérifie les logs :
Pour Nginx :
sudo tail -f /var/log/nginx/error.log
Pour Apache :
sudo tail -f /var/log/apache2/error.log
Ou teste l'accessibilité avec curl
:
curl -I http://example.com
curl -I https://example.com
7. Renouvellement des certificats
Certbot met automatiquement à jour les certificats en utilisant le cron
du système. Pour vérifier, tu peux exécuter manuellement :
sudo certbot renew --dry-run
Et voilà, étape par étape, on a configuré un serveur web prenant en charge plusieurs sites et HTTPS. Tu viens de parcourir tout le chemin d’un serveur vide à un serveur fonctionnant avec des hosts virtuels et SSL. Maintenant, ton serveur est prêt à montrer ses sites au monde. Trop cool, non ?
GO TO FULL VERSION