Un blog avec Hugo

Ce blog est généré statiquement avec Hugo, un framework léger pour créer des sites. Petit tuto de mise en place.

Initialisation

Tout d'abord on installe le binaire Hugo sur sa machine. Sur MacOS j'utilise le gestionnaire de paquets Homebrew.

1brew install hugo

Ensuite on crée le projet de site et on le versionne :

1hugo new site aerogus.net
2cd aerogus.net
3git init

Si on ne veut pas coder son thème, on se le choisit parmi les 300 thèmes proposés dans la galerie des thèmes puis on l'intègre sous forme un submodule git. Cela permettra de profiter des mises à jour du thème.

1git submodule add https://github.com/mitrichius/hugo-theme-anubis.git themes/anubis

Dans archetypes/default.md se trouve le modèle généré à chaque création de contenu, on peut le customiser

1---
2title: "{{ replace .Name "-" " " | title }}"
3date: {{ .Date }}
4tags: []
5draft: true
6---

Dans config.yaml de la racine se trouve la configuration générale du blog, voici la mienne

 1baseURL: "https://aerogus.net/"
 2languageCode: "fr-FR"
 3DefaultContentLanguage: "fr"
 4title: "Blog de Guillaume Seznec"
 5theme: "anubis"
 6paginate: 10
 7
 8menu:
 9  main:
10  - identifier: about
11    name: À propos
12    title: À propos
13    url: /a-propos/
14    weight: 1
15  - identifier: tag
16    name: Étiquettes
17    title: Étiquettes
18    url: /tags/
19    weight: 2
20  - identifier: archive
21    name: Archive
22    title: Archive
23    url: /posts/
24    weight: 3
25
26taxonomies:
27  tag: "tags"

Ajout de contenus

1hugo new posts/titre-de-l-article.md

Déploiement

Le script suivant utilise rsync et nécessite un accès ssh sur le serveur distant.

créer un fichier de configuration .env sur ce modèle :

1DEPLOY_USER=ssh_user # login ssh
2DEPLOY_HOST=example.com # host ou ip destination
3DEPLOY_PORT=22 # port ssh
4DEPLOY_DIR=/var/www/html/ # garder le slash final

copier le script deploy.sh suivant :

 1#!/bin/sh
 2##
 3# Déploiement du blog hugo sur le serveur d'hébergement
 4##
 5
 6if [ ! -f ".env" ]; then
 7  echo ".env introuvable"
 8  exit -1
 9fi
10
11# Import des variables de déploiement
12. ".env"
13
14# mode 1 seul thème
15#CONFIF_FILE="config.yaml"
16
17# mode choix du thème (passé en paramètre)
18THEME=$1
19if [ -z $THEME ]; then
20  THEME="anubis"
21fi
22
23CONFIG_FILE="config-$THEME.yaml"
24
25if [ ! -f "$CONFIG_FILE" ]; then
26  echo "$CONFIG_FILE introuvable"
27  exit -1
28fi
29
30# Génération du blog
31hugo --config $CONFIG_FILE
32
33# Déploiement
34rsync -avz -e "ssh -p ${DEPLOY_PORT}" --delete "public/" "${DEPLOY_USER}@${DEPLOY_HOST}:${DEPLOY_DIR}"
35
36exit 0

Usages :

1./deploy.sh
2./deploy.sh $THEME_NAME
comments powered by Disqus