Jekyll è un semplice generatore di siti statici per blog. Il software è strutturato in maniera che i file html vengano genrati a partire da una serie di modelli e file di testo ( tipo Markdown ).

Jekyll è il motore dietro le pagine di GitHub, il che significa che è possibile utilizzare Jekyll per generare la pagina, il blog o il sito web del progetto dei server di GitHub.

Installazione

ubuntu/debian

apt install jekyll

centos/fedora

yum install jekyll

Uso di base

Creare un nuovo sito

Per inizializzare un nuovo sito con il nome mio blog eseguire jekyll new my_blog

verrà creata una cartella my_blog :

~/Desktop/my_blog$ tree
.
├── about.md
├── _config.yml
├── css
│   └── main.scss
├── feed.xml
├── _includes
│   ├── footer.html
│   ├── header.html
│   ├── head.html
│   ├── icon-github.html
│   ├── icon-github.svg
│   ├── icon-twitter.html
│   └── icon-twitter.svg
├── index.html
├── js
│   ├── html5shiv.js
│   └── respond.js
├── _layouts
│   ├── default.html
│   ├── page.html
│   └── post.html
├── _posts
│   └── 2017-10-06-welcome-to-jekyll.markdown
└── _sass
    ├── _base.scss
    ├── _layout.scss
    ├── _normalize.scss
    └── _syntax-highlighting.scss

File di configurazione

Questo è un esempio di file di configurazione :

# Welcome to Jekyll!
#
# This config file is meant for settings that affect your whole blog, values
# which you are expected to set up once and rarely need to edit after that.
# For technical reasons, this file is *NOT* reloaded automatically when you use
# 'jekyll serve'. If you change this file, please restart the server process.

# Site settings
title: Titolo
email: tua-email@dom.net
description: > # questo sigifica che gli a capo verranno ignorati fino a "baseurl:"
  Qui inserirsci una desccrizione del tuo sito
baseurl: "" # il percorso del sito, es. /blog
url: "http://yourdomain.com" # protocollo e dominio di base
twitter_username: jekyllrb
github_username:  jekyll

# Build settings
markdown: kramdown

Aggiungere un post

Per aggiungere un post basta copire il post di esempio presente nella cartella _post ed editarlo, da notare che la data nel nome del file devono essere coerenti:

nome file aaaa-mm-gg-titlo_articolo.markdown

header file

---
layout: post
title:  "titolo articolo"
date:   aaaa-mm-gg hh:mm:ss +tttt
category: news
---

Aggiungere una pagina statica

Per aggiungere una pagina statica partire dal modello della pagina about.md, anche in questo caso modifcare i metadati in maniera coerente:

---
title: titolo pagina
permalink: /titolo-pagina/
layout: page
---

Generare il proprio stio

Per generare la i file statici del nostro sito si possono usare i seguenti comandi

jekyll build
# La cartella corrente verra generata in ./_site

jekyll build --destination <destinazione>
# La cartella corrente verrrà generata nella cartella <destinazione>

jekyll build --source <sorgente> --destination <destinazione>
# La cartella <sorgente> verra generata nella cartella <destinazione>

jekyll build --watch
# La posizione corrente verra generato in ./_site,
# nel caso ci siano cambiamenti verra rigenerato in automatico``

Per facilitare lo sviluppo di siti web Jekyll dispone di un server web integrato, richiamabile :

jekyll serve
# Il servver di sviluppo è disponibile su http://localhost:4000/
# Auto-regeneration: enabled. Use `--no-watch` to disable.

Per visualizzare il risultato inserire nella barra del browser http://localhost:4000/

jekyll serve --detach
# Come nel caso di `jekyll serve` viene lanciato il server di debug, ma in background.
# Per terminare l'esecuzione si può procedere con `kill -9 1234` dove "1234" è  il PID.
# Per trovare il pid si può usare `ps aux | grep jekyll`.

Deploy con git

Per poter eseguire il deploy di un sito usando git è necessario che sul server remoto sia presente un utente in grado di scrivere la DocumentRoot del sito, e dovrebbe essere possibile aggiugere al file authorized_keys la propria chiave pubblica. Da notare che sul server remoto devono essere installati :

  • jekyll
  • git

Successivamente si dovrà creare un repo git e modificarne l’hook di post-recive, tutto nel seguente modo:

laptop$ ssh deployer@example.com
server$ mkdir myrepo.git
server$ cd myrepo.git
server$ git --bare init
server$ cp hooks/post-receive.sample hooks/post-receive
server$ mkdir /var/www/myrepo

Dopo di che modificare il file hooks/post-receive aggiungendo le seguenti linee :

GIT_REPO=$HOME/myrepo.git
TMP_GIT_CLONE=$HOME/tmp/myrepo
PUBLIC_WWW=/var/www/myrepo

git clone $GIT_REPO $TMP_GIT_CLONE
bundle exec jekyll build -s $TMP_GIT_CLONE -d $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit

In fine dal proprio pc aggingere la destinazione remota

laptops$ git remote add deploy deployer@example.com:~/myrepo.git

Adesso è possibile usare il comando per eseguire il deploy

laptops$ git push deploy master

Riferimenti

  • https://jekyllrb.com/docs/usage/