Ghost, le gentil moteur de blog

Ghost

Ghost est un projet open source (licence MIT) de moteur de blog relativement récent (version 0.3.3 à l’heure actuelle). Son approche est simpliste et minimaliste ce qui m’a motivé à le tester et par la même occasion à me relancer dans une activité de blog ;)

Installation

Le plus simple est de se créer un compte sur http://ghost.org et de récupérer la dernière archive en date.

C’est assez rapide et direct à mettre en place une fois que l’archive est décompressée sur le serveur :

  • On édite le fichier config.js pour y mettre nos paramètres (url du blog, port sur lequel écoute le serveur d’application, accès à la base de données, etc.) ;
  • On lance le serveur d’application (node index.js) ;
  • Et enfin on fait la configuration du serveur web qui va bien pour accéder au serveur d’application.

Configuration

Je vais livrer ici la configuration que j’ai mise en place sur mon serveur (c’est assez similaire pour toutes les applications que j’installe).

Tout d’abord pour info, la machine est une Ubuntu server avec du Nginx comme serveur web et j’utilise supervisord pour gérer les processus qui doivent tourner tout le temps (et les redémarrer quand ils se vautrent comme des otaries bourrées à la bière).

J’ai donc créé un utilisateur dédié qui fera tourner l’application. Une fois loggué avec le compte, on récupère et décompresse l’archive de Ghost.
Le fichier de configuration ressemble à ça (je n’ai mis que la configuration de production) :

Le serveur d’application va donc écouter sur localhost sur le port 2368.

Supervisord

Une configuration simple, les logs sont stockés dans un répertoire indépendant de l’application et il ne faut pas oublier de passer la variable d’environnement NODE_ENV à production !

Nginx

Là aussi une configuration relativement simple. On définit tout d’abord un upstream vers le serveur d’application configuré plus haut et ensuite la configuration du site en HTTP qui redirige tout vers HTTPS.
Au niveau du site je déclare comme racine le répertoire contenant les assets de Ghost. Ainsi c’est nginx qui s’occupera de les servir plutôt que Node.
D’ailleurs l’astuce complète réside dans le fait de dire à nginx d’essayer l’url qu’on lui passe avant de passer le tout à Node (proxy pass) grâce à la directive try_files.


Si ce n’est pas très clair, que vous avez des remarques ou des questions, n’hésitez pas à me contacter sur Twitter (@flink91), Google+ ou encore par mail (flink chez belfalas point eu).

Photo sous licence CC-BY 2.0 par Môsieur J.