Comment ce site Web hexo est-il construit et déployé ?
This article is available in English
Ce site web est construit avec le framework de blog Hexo
et l’élégant thème NexT.
Rien de très exceptionnel pour l’instant… 🥸
Voyons en détail la maintenance du serveur et le déploiement du blog.
🔗Génération des Pages/Articles Asymptote
Toutes les pages Asymptote et les
articles Asymptote proviennent des
exemples de codes Asymptote
et sont générés automatiquement par le générateur d’exemples Asymptote.
Une fois les fichiers markdown Hexo générés, une synchronisation rsync
est effectuée via ce simple script.
Grâce à cette organisation, tous les projets autour d’Asymptote sont séparés par concept avec leur signification propre, leur périmètre d’usage propre, et leur fonctionnement spécifique.
🔗Génération de HTML avec Docker
Le déploiement commence par la génération des fichiers statiques html
via un Dockerfile NodeJS
et un fichier docker-compose.yml, de sorte que la commande make generate
fait tout le travail de génération des fichiers html
statiques.
🔗Serveur avec Caddy
L’étape suivante du déploiement consiste à servir les fichiers statiques html
avec une instance du
serveur web Caddy sur le port 4280
via un simple Dockerfile Caddy
en utilisant le même docker-compose.yml
, de sorte que la commande make serve
fait tout le travail de création d’image et de mise en service.
Le port 4280
est défini par la variable d’environnement SERVER_PORT
et vous pouvez voir le fichier Caddy utilisé pour mon blog Hexo.
Cependant, il n’est pas suffisant de servir le blog dans un conteneur Docker sur le port 4280
, le blog doit
être accessible sur les ports 80
et 443
pour le domaine blog.piprime.fr
!
🔗Proxy du Port 443 vers 4280 avec Caddy-Docker-Proxy
Sur la machine hôte, nous souhaitons servir plusieurs services web accessible par les ports 80
et 443
, et non sur le port 4280
.
Pour atteindre cela, j’utilise un
Caddy Docker Proxy avec la configuration Docker suivante :
1 | networks: |
et, pour rediriger temporairement www.piprime.fr
vers le blog, les lignes suivantes :
1 | caddy_1: www.piprime.fr |
Bien que la commande make deploy-caddy-docker-proxy
réalise tout le processus de déploiement de ce
blog, je ne veux pas avoir à me souvenir où cloner le projet, comment le mettre à jour, ni quels sont les logiciels
à installer sur l’hôte (git
, make
, Docker
globalement sur la machine hôte).
🔗Déploiement/Maintenance avec Ansible
Lorsqu’il faut utiliser une nouvelle instance de serveur, quelle qu’en soit la raison, c’est
vraiment pénible d’installer toutes les dépendances logicielles, de faire toutes les configurations
et de réaliser tout le processus de déploiement pour tous les services.
Même pour mettre à jour le blog, j’en ai assez de me connecter via ssh
, d’aller dans le bon répertoire, de me rappeler
quelle commande lancer, et de m’assurer que tout a été fait correctement sans oublier une commande magique
cachée derrière les fagots.
Pour automatiser toute l’installation, la mise à jour et la maintenance du serveur, j’ai choisi le logiciel d’automatisation Ansible.
Ma configuration Ansible est à ce point sécurisée que j’ai confiance de la partager !
Concernant ce blog, la seule chose à faire et à retenir est de lancer la commande make piprimefr-blog
;
cela garantira que les logiciels nécessaires sont installés, correctement configurés, et cela clonera
le blog ou le mettra à jour si besoin.
- Pour installer une nouvelle instance de serveur ou la mettre à jour, la seule commande à lancer est
make all
! - Vous pouvez jeter un œil à la tâche Ansible principale pour déployer ce blog Hexo.
🔗Conclusion
Ce blog est partiellement généré par un outil d’automatisme (pages et articles Asymptote), servi par une instance dockerisée d’un serveur web Caddy, elle-même proxyfiée par Caddy Docker Proxy.
Toute la maintenance du serveur et le déploiement du blog sont réalisés grâce au moteur d’automatisation Ansible.