Jacques Foucry bio photo

Jacques Foucry

IT, râleur et faiseur de pain

Email Twitter



Où l’on va voir comment ce blog est servi.

Pour éviter d’avoir à jouer avec les trous de sécurité de Wordpress, pour avoir un site web plus rapide, plus facilement maintenable, j’ai décidé d’utiliser Jekyll.

C’est quoi jekyll ?

jekyll est générateur de sites statiques, à partir de fichiers texte (au format markdown ou textile). On trouve des thèmes (gratuit ou payant). Il n’a pas besoin de base de données. Il est écrit en ruby.

Installation de Jekyll

L’installation va se faire en passant par notre poudriere.

Les paquets à ajouter sont :

1
2
www/rubygem-jekyll
www/rubygem-jekyll-watch

Après la compilation, nous pouvons installer notre paquet (et ses dépendances) :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# pkg install rubygem-jekyll                                                  
Updating poudriere repository catalogue...
poudriere repository is up-to-date.
All repositories are up-to-date.
Checking integrity... done (0 conflicting)
The following 28 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
    rubygem-jekyll: 2.5.3
    rubygem-jekyll-watch: 1.1.2
    rubygem-listen: 2.10.0_1
    rubygem-rb-kqueue: 0.2.4
    rubygem-ffi: 1.9.8
    rubygem-rb-inotify: 0.9.5
    libinotify: 20140622
    rubygem-rb-fsevent: 0.9.4
    rubygem-celluloid: 0.16.0
    rubygem-timers: 4.0.1
    rubygem-hitimes: 1.2.2
    rubygem-liquid: 2.6.1
    rubygem-kramdown: 1.4.2
    rubygem-jekyll-sass-converter: 1.3.0
    rubygem-jekyll-paginate: 1.1.0
    rubygem-jekyll-gist: 1.2.1
    rubygem-colorator: 0.1
    rubygem-toml: 0.1.2_1
    rubygem-parslet: 1.7.0
    rubygem-blankslate: 3.1.3
    rubygem-safe_yaml: 1.0.4
    rubygem-pygments.rb: 0.6.3
    rubygem-yajl-ruby: 1.2.1
    rubygem-posix-spawn: 0.3.11
    rubygem-mercenary: 0.3.5
    rubygem-jekyll-coffeescript: 1.0.1
    rubygem-classifier-reborn: 2.0.3
    rubygem-fast-stemmer: 1.0.2

The process will require 49 MiB more space.

Proceed with this action? [y/N]: 

Utilisation de Jekyll

Le but de cet article n’est pas de vous apprendre à utiliser jekyll, mais simplement à le mettre en place. Vous devrez vous référer à sa documentation pour aller plus loin.

Nous allons tout de même voir rapidement comment générer notre site à partir des sources et du fichier de configuration du site (_config.yml).

Dans le fichier de configuration la ligne destination indique le répertoire dans lequel les fichiers générés (et copiés) seront installés.

Note :ce répertoire peut-être un nouveau dataset ZFS.

1
$ jekyll build

Configuration du serveur HTTP

Pour que vos pages soient servies par un serveur http, il est nécessaire d’en avoir un. Je vais supposer que celui-ci est déjà installé. J’utilise nginx, je vais donc vous proposer la configuration pour ce serveur :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
server {
        listen 80;
        server_name adminblog.example.com blog.example.com;

        rewrite ^ https://$server_name/$request_uri permanent;
}
server {
    listen 443;
    charset utf-8;

    server_name adminblog.example.com blog.example.com;

    access_log /var/log/nginx/blog-access.log main;
    error_log /var/log/nginx/blog-error.log;

    ssl on;
    ssl_certificate         /etc/ssl/adminblog/adminblog.example.com.pem;
    ssl_certificate_key     /etc/ssl/private/example.com.key;
    ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/ssl/private/dhparams.pem;

    location / {
            index index.html;
            root /usr/local/www/blog;
    }
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
}
  • La première clause server écoute sur le port 80 (le port par défaut de http) et récrit la requête pour la diriger vers le port 443 (le port sécurisé pour http) ;
  • la seconde clause server écoute sur le port 443 (le port https) ;
  • le serveur envoie des pages qui sont encodées en utf-8 ;
  • on indique les noms du serveur, c’est grace à cela que l’on peut avoir plusieurs sites derrière la même adresse ip ;
  • les deux fichiers de trace, le premier pour les accès, le second pour les erreurs ;
  • on utilise ssl (puisque nous sommes-en https) ;
  • on indique le chemin vers le certificat du site et la clef du certificat ;
  • on indique les protocoles de chiffrement que l’on utilise et ceux que l’on exclut. Ceux qui commence par ! sont exclus ;
  • on préfère que le chiffrement soit initié par le serveur ;
  • le chemin vers le fichier d’entropie diffie-hellman ;
  • la directive location indique le chemin vers la racine du site (root) avec le nom du fichier à servir par défaut (index) ;
  • enfin, on ajoute à toutes les pages servies, un entête pour signifier que l’on préfère utiliser le port chiffré.

Une fois fichier crée et mis dans le bon répertoire pour votre configuration, nous testons la validité de notre configuration :

1
2
3
4
5
$ sudo service nginx configtest
Password:
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

Si tout est correct, nous pouvons redémarrer nginx pour prendre en compte notre nouveau site :

1
$ sudo service nginx restart

Si vous avez correctement renseigné votre DNS (ou plus exactement la zone de DNS faisant autorité pour votre domaine), vous devriez accéder à votre blog.


Article suivant :

Laisser un commentaire

Les commentaires sont soumis à modération.