Introduction

J’ai décidé de migrer de Pluxml que j’utilisais depuis 7 ans vers Jekyll, un outil développé en Ruby permettant de générer un site web statique à partir de fichiers utilisant la syntaxe Markdown.

L’un des intérêts de Jekyll est de pouvoir utiliser GIT pour créer des posts sur notre ordinateur et de les synchroniser sur le serveur qui héberge le site.

Le serveur se nomme comte.eriador.fr et il dispose de l’utilisateur jekyll dédié à la gestion du site. Le poste local se nomme gondor.eriador.fr et l’utilisateur se nomme aragorn.

Mise en place

Nous allons utiliser le protocole SSH entre le client et le serveur avec une authentification par clés. Pour cela, nous allons copier le condensat de notre clé publique personnelle dans le fichier ~/.ssh/authorized_keys de l’utilisateur jekyll sur le serveur.

aragorn@gondor:~$ ssh-copy-id jekyll@comte.eriador.fr

Puis paramétrons le serveur (je ne détaillerais pas l’installation de Jekyll ici).

jekyll@comte:~$ cd monsite
jekyll@comte:~/monsite$ git init
jekyll@comte:~/monsite$ git add .
jekyll@comte:~/monsite$ git commit -m "Premier commit du site Jekyll"

Sur l’ordinateur client, initialisons un dépôt GIT.

aragorn@gondor:~$ sudo apt install git
aragorn@gondor:~$ git clone jekyll@comte.eriador.fr:/home/jekyll/monsite
aragorn@gondor:~$ cd monsite
aragorn@gondor:~/monsite$ git init
aragorn@gondor:~/monsite$ git add .
aragorn@gondor:~/monsite$ git commit -m "Premier commit sur mon ordinateur pour mes posts"

Ensuite, sur le serveur, nous allons passer à la création d’un dépôt git un mode bare afin de pouvoir synchroniser le dépôt local présent sur le poste vers le serveur.

jekyll@comte:~$ rm -rf monsite
jekyll@comte:~$ mkdir monsite.git
jekyll@comte:~$ cd monsite.git
jekyll@comte:~/monsite.git$ git init --bare
jekyll@comte:~/monsite.git$ nano hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/home/jekyll/monsite git checkout -f
jekyll@comte:~/monsite.git$ chmod +x hooks/post-receive

La configuration est maintenant terminée. Lorsque nous publierons un nouveau post en Markdown sur notre ordinateur local, il nous restera simplement à le synchroniser sur le serveur.

aragorn@gondor:~/monsite$ cd _posts
aragorn@gondor:~/monsite/_posts$ nano 2020-11-20-monarticle.markdown
---
layout: post
title:  "Mon joli article en markdown"
date:   2020-11-20 12:00:00 +0100
categories: test
---

## Titre 1

Ceci est un premier article rédigé à l'aide de la syntaxe markdown.

* Have lot of fun !
aragorn@gondor:~/monsite$ git add .
aragorn@gondor:~/monsite$ git commit -m "Ajout d'un article le 20 novembre"
aragorn@gondor:~/monsite$ git remote add website jekyll@comte.eriador.fr:/home/jekyll/monsite.git
aragorn@gondor:~/monsite$ git push website +master:refs/heads/master

Puis si nous sommes amenés à synchroniser à nouveau notre dépôt local et notre serveur :

aragorn@gondor:~/monsite$ git push website master

Et voilà. Il ne nous reste plus qu’à créer autant de posts que nous voulons et à les synchroniser sur notre serveur via GIT. Enjoy !