Objectif du tutoriel
Cette documentation explique comment déployer un site web HTML statique sur un serveur Linux (Debian 13) avec :
- Serveur web Nginx
- Certificat SSL gratuit Let’s Encrypt (Certbot)
- Accès sécurisé en HTTPS
- Structure propre adaptée production CroustyCloud
Architecture cible
Internet
↓
DNS (domaine client)
↓
Nginx (VPS CroustyCloud)
↓
/var/www/mon-site
↓
Site HTML statiqueConfiguration DNS
Afin de pouvoir annoncer que le nom de domaine pointe vers l'adresse IP de votre VPS, il sera nécessaire de vous connecter sur votre gestion de DNS (OVH, Ionos, LWS). Après vous être connecté, vous devrez aller dans la gestion des Zone DNS et y ajouter l'entrée ci-dessous :
| Type | Nom | Valeur |
|---|---|---|
| A | @ | IP_VPS |
| CNAME | www | mondomaine.com |
La propagation de cette modification peut prendre de 5 minutes à 24h
Connexion au serveur
Afin de pouvoir effectuer la configuration de Nginx, il nous est nécessaire de se connecter via la connexion SSH sécurisée :
ssh root@IP_DU_SERVEURMise à jour système
Il est ensuite recommandé après la connexion de vérifier les mises à jours des packages de Linux via la commande ci-dessous qui les met à jours automatiquement :
apt update && apt upgrade -yInstallation de Nginx
Nous allons une fois les mises à jour effectuées, installer Nginx :
apt install nginx -yComme pour tout site internet, nous aimerions qu'il soit de nouveau en ligne après le redémarrage du VPS, c'est donc pour cela que nous effectuons une activation du service Nginx au démarrage (souvent déjà effectuée lors de l'installation) :
systemctl enable nginx
systemctl start nginx
systemctl status nginxStructure du site
Afin de pouvoir importer les fichiers de notre site internet, nous devons créer le dossier à cet effet :
Le chemin avec "mon-site" peut être modifié en fonction du nom de votre site internet (ex: /var/www/portfolio)
mkdir -p /var/www/mon-siteNous devons par la suite accorder les permissions à Nginx sur notre fichier pour qu'il puisse lire les fichiers html :
chown -R www-data:www-data /var/www/mon-site
chmod -R 755 /var/www/mon-siteDéploiement du site HTML
Maintenant nous passons à l'étape où nous déposons les fichiers de notre site internet. Pour ce faire, nous allons devoir utiliser un logiciel SFTP (ex: FileZilla, WinSCP)
Vous pouvez également utiliser le logiciel Termius qui permets de se connecter en SSH ainsi que en SFTP
Une fois sur le logiciel, vous devrez renseigner les informations de connexion :
- Identifiant : root (ou l'identifiant de votre VPS)
- Mot de passe : password123
- Port : 22
Une fois connecté, nous allons ensuite pouvoir accéder au dossier concerné. En général, lors de la connexion, vous serez sur le dossier /root. Pour pouvoir accéder au dossier en question, vous devrez cliquer sur "..." se trouvant en haut de la liste des dossiers.
Une fois dans le dossier /var/www/mon-site, vous pourrez glisser et déposer les fichiers/dossiers de votre site internet HTML.
Configuration Nginx (Virtual Host)
Nous passons ensuite à la configuration de Nginx qui est donc notre serveur Web. Pour ce faire, nous allons nous rendre dans le fichier de configuration dédié à notre site internet grâce à la commande ci-dessous.
Pour débuter, nous allons supprimer la configuration par défaut de nginx.
rm /etc/nginx/sites-enabled/defaultUne fois cela effectuée, nous pouvons passer à notre configuration
le nom "mon-site" doit correspondre au nom de votre site internet et vous permettra de mieux vous y retrouver
nano /etc/nginx/sites-available/mon-siteUne fois dans l'edition du fichier, vous pourrez y coller la configuration ci-dessous en adaptant les éléments suivant :
- mondomaine.com => Effectuer le remplacement avec votre domaine à vous
- /var/www/mon-site => Effectuer le changement avec le lien de votre dossier précédement créé
- /var/log/nginx/mon-site => Ce chemin est celui qui vous permettra de lire les logs en cas de problème sur votre site internet
server {
listen 80;
server_name mondomaine.com wwww.mondomaine.com;
root /var/www/mon-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/mon-site.access.log;
error_log /var/log/nginx/mon-site.error.log;
}Une fois la configuration terminée, vous pouvez fermer l'edition nano en faisant la commande CRTL+X et taper Y puis la touche "entrée".
Activation du site
Il est ensuite nécessaire d'activer la configuration afin de mettre le site en ligne.
Pensez à nouveau de changer le chemin de votre configuration
ln -s /etc/nginx/sites-available/mon-site /etc/nginx/sites-enabled/Nous allons ensuite tester la configuration afin de vérifier qu'aucune erreur n'est présente :
nginx -tNous rechargeons ensuite la configuration afin de prendre en compte nos modifications :
systemctl reload nginxCertificat SSL (HTTPS)
Tout le monde aime avoir un site en https, c'est possible grâce LetsEncrypt ! Pour pouvoir le faire, nous allons installer certbot qui est une solution très simple à utiliser pour la génération et le renouvellement des certificats :
apt install certbot python3-certbot-nginx -yUne fois l'installation effectuée, nous devons lancer la génération du certificat. Et comme vous pouvez le voir dans la commande ci-dessous, il y a l'argument "--nginx" qui lui permet d'aller récupéré la configuration que nous avons précédement effectuée et l'adapter automatique avec le certificat.
certbot --nginx -d mondomaine.com -d www.mondomaine.comRenouvellement automatique
Nous pouvons ensuite tester le renouvellement automatique :
certbot renew --dry-runLogs & supervision
Si vous souhaitez lire les fichiers de log de votre site internet en cas de problème, vous pouvez le faire via les commandes suivantes :
La commande ci-dessous lit les logs de toutes les requêtes effectuées sur le site internet
tail -f /var/log/nginx/mon-site.access.logLa commande ci-dessous est la
tail -f /var/log/nginx/mon-site.error.logCommandes utiles
Redémarrer Nginx :
systemctl restart nginxRecharger la configuration :
systemctl reload nginxTester la configuration :
nginx -tBonnes pratiques CroustyCloud
- Toujours activer HTTPS
- Isoler chaque site internet dans
/var/www/ - Logs séparés par domaine
- Sauvegarde
/etc/nginx/
Des problèmes sont présents ?
En cas de problème :
- vérifier DNS
- vérifier
nginx -t - vérifier ports 80/443 ouverts
- vérifier firewall