Installation d'un blog Hugo
Quoi de mieux pour commencer qu’un manuel indiquant comment déployer ce blog, simple et précis ?
Précisons alors qu’il tourne grâce au générateur de sites (Hugo)[https://gohugo.io], et est déployé sur un serveur nginx, tournant lui même sur un conteneur docker (mais ça, ça ne nous intéresse pas ici).
Création et développement du blog
Pour pouvoir créer le blog, on a besoin d’être sur un machine où on va pouvoir travailler. Ici, je pars d’une machine sous Debian, la commande est à adapter selon la distribution linux (la commande peut être du brew sous MacOS, et même se transformer en l’installation d’un programme sous Windows, je suppose).
Installation de hugo
Sur une machine sous Linux (Debian), donc:
sudo apt install hugo
Création du blog
Dans le dossier où l’on veut que le blog soit créé (le répertoire de travail):
hugo new site <nom-du-repertoire>
Installation du thème
Se poser ensuite dans le dossier des thèmes et cloner le thème voulu. Ici, on a choisi archie, mais tout un tas de (thèmes)[https://themes.gohugo.io/] existent:
cd my-blog/themes
git clone https://github.com/athul/archie.git
echo 'theme="archie"' >> ../hugo.toml
On remplacera donc, pour la dernière ligne, archie par le nom du thème choisi, et l’URL du thème en deuxième ligne par celui trouvé sur la page du thème.
Création d’un premier post
# on revient à la racine
cd ..
hugo new posts/installation-blog.md
Et voilà le site avec déjà du contenu et donc un intérêt à être déployé !
Déploiement du blog
Sur cette partie, on assume le fait qu’on est avec une instance de serveur en face de nous, avec un serveur web nginx. Si d’autres solutions sont envisagées, seule la génération du contenu peut-être nécessaire, pour ensuite déployer celui-ci de manière différente.
Génération du contenu
Pour pouvoir déployer le blog, il faut générer le contenu statique, ce qu’on s’empresse de faire:
hugo
Pour vérifier ensuite qu’on a bien ce qu’on veut dans le dossier public.
Copie du contenu sur le serveur
On copie alors le contenu sur le serveur:
rsync -avz --progress public <user>@<ip_ou_name_server>:<path>/blog
Ajout de la configuration Nginx
On modifie ensuite la config nginx, pour y ajouter une partie qui permettra de faire matcher le domaine choisi avec le blog:
server {
listen 80;
listen [::]:80;
server_name <domain>;
# Prevent nginx HTTP Server Detection
server_tokens off;
# Enforce HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name <domain> www.<domain>;
client_max_body_size 100m;
ssl_certificate /etc/nginx/cert/fullchain.pem;
ssl_certificate_key /etc/nginx/cert/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
root <path_to_public_files>;
location / {
try_files $uri $uri/ /index.html;
}
}
Gestion des certificats
On génère les certifs:
certbot certonly --nginx -d <domain> -d www.<domain> ...