Rappel du principe de base : transformer le site sous WordPress en site statique afin de gagner en sécurité et performances.

Pour ce faire, il existe différents plugins qui permettent de générer le site dans un sous-dossier et d’en reproduire l’arborescence en version html.

Pour ce projet j’utilise le plugin Simply Static, téléchargeable directement dans WordPress sur une simple recherche d’extension, ou via l’URL officielle du dépôt WordPress : https://fr.wordpress.org/plugins/simply-static/

Configuration de Simply Static

Voici la configuration à mettre en place sur Simply Static :

  • D’abord, s’assurer que tout est au vert dans l’onglet « Diagnostics » (si ce n’est pas le cas il faut veiller à bien installer les dépendances nécessaires pour le bon fonctionnement de l’outil)
  • Dans l’onglet « General », choisir l’option « Offline usage »
  • Dans l’onglet « Deployment Method », choisir « Local Directory » et indiquer un nom de répertoire dans lequel le site s’exportera en HTML. Par exemple « version_statique »
  • Si vous avez privatisé votre site via la méthode « Basic Auth » (authentification via http), allez dans l’onglet « Misc » et entrez le login et mot de passe configuré pour débloquer l’accès au site.

Une fois l’application installée, assurez-vous que les fichiers html se créent bien dans le dossier /version_statique.

Si tel est le cas vous pouvez poursuivre, sinon il faut d’abord vous assurer que les fichiers se génèrent bien avant d’aller plus loin !

Configuration de Git / Syncro avec Github ou Gitlab

Pour ce projet j’utilise Github, mais toute autre solution similaire est utilisables.

Initialiser un Dépôt Git dans /version_statique :

Accédez au sous-dossier /version_statique sur votre serveur.

Initialisez un dépôt Git avec

git init

Configurer l’Authentification SSH pour GitHub :

Générez une clé SSH et ajoutez-la à votre compte GitHub pour permettre l’authentification. Vous pouvez suivre les indications de cette page pour configurer l’accès SSH : https://docs.gitlab.co.jp/ee/user/ssh.html (remplacez les occurences de Gitlab par Github si vous utilisez ce dernier).

NB : Je préciserai cette partie un peu plus tard, je me suis un peu cassé les dents dessus la première fois ^^

Ensuite il suffit de synchroniser le dossier qui va contenir les fichiers statiques du site avec le compte Github comme vous savez le faire habituellement.

git add .
git commit -m "Premier commit"
git remote add origin URL_DU_DEPOT
git push -u origin main

Créer un Script d’Auto-Commit et Push :

Pour faciliter le travail de push de la moindre modif, j’ai créé un petit workflow automatiquement qui push automatiquement la moindre modif repérée dans le dossier statique.

Voici ce qu’il faut faire en bref :

  • Créer un script qui, lorsqu’il est exécuté, effectue un commit + push des modifs sur le dépôt Github
  • Créer un service qui exécute ce script automatiquement dès qu’une modification est détectée dans le répertoire /version_statique

1. Création du script de push automatique

Commencer par installer le packet inotify

sudo apt-get update
sudo apt-get install inotify-tools

Voici le contenu du script Bash qui commit et push automatiquement vers Github :

#!/bin/bash

# Chemin du répertoire à surveiller
WATCHED_DIR="/chemin/vers/votre/dossier"

# Chemin du dépôt Git
GIT_REPO_DIR="/chemin/vers/votre/depot/git"

# Boucle infinie pour surveiller les modifications
while true; do
    # Attendre pour toute modification dans le répertoire
    inotifywait -r -e modify,create,delete,move $WATCHED_DIR

    # Se déplacer dans le répertoire du dépôt Git
    cd $GIT_REPO_DIR

    # Générer le message de commit avec la date et l'heure
    COMMIT_MESSAGE="Mise à jour automatique $(date '+%Y-%m-%d %H:%M:%S')"

    # Ajouter toutes les modifications au dépôt
    git add .

    # Committer les modifications
    git commit -m "$COMMIT_MESSAGE"

    # Pousser les modifications
    git push
done

Ensuite, rendre le scripte exécutable :

chmod +x git_auto_commit_push.sh

2. Créer un service qui exécute le fichier automatiquement au démarrage du système

Remplacez « my_script.service »

sudo nano /etc/systemd/system/my_script.service

Contenu du fichier service

[Unit]
Description=Mon script de commit et push automatique

[Service]
ExecStart=/chemin/vers/votre/script.sh
Restart=always
User=nom_utilisateur
Group=nom_groupe

[Install]
WantedBy=multi-user.target

Ensuite, recharger les daemons Systemd

sudo systemctl daemon-reload

Activer le service et le paramétrer pour qu’il démarre avec le système

sudo systemctl start my_script.service
sudo systemctl enable my_script.service

Puis journalisez le service :

sudo journalctl -u my_script.service

Vous pouvez faire un essai : ajoutez un article dans le blog, allez dans « Simply Static » -> « Generate Static Files ». En théorie si tout fonctionne correctement, le script génère un nouveau fichier html, le script bash détecte une modification dans le dossier /version_statique et déclenche le push automatique sur Github.

Prochaine étape : configurer Netlify de façon à ce qu’il déploie le site sur un domaine à partir du contenu du dépôt Github.