Je me suis fait une install de Ghost à ma façon qui me permet de facilement le mettre à jour. Comme c'est très différent de ce qui est préconisé dans la documentation, je me permet de vous le faire partager.
Pré-requis
Un serveur sous Debian ou Ubuntu. C'est un serveur web quand même, il faut quelque chose de sérieux.
Il faut évidemment nodejs et npm. Et le module forever qui servira à lancer l'application et à la relancer automatiquement si jamais elle plante.
sudo install -g forever
Un serveur frontal (NGinx, Apache, Cherokee…) ou une redirection de port.
Installation
Commencez par choisir le lieu de votre installation sur votre serveur. N'importe où, mais comme vous préférez. Par exemple, mettons nous sur /home/web/monblogghost.
Commençons par la première installation. Allez chercher le lien de la dernière release sous forme d'archive .zip. Pour l'exemple, je prendrais la version 0.4.0 afin de voir ensuite la mise à jour en 0.4.1. Téléchargeons le :
$ wget https://ghost.org/zip/ghost-0.4.0.zip
…puis décompressons le :
$ unzip ghost-0.4.0.zip -d ghost-0.4.0
$ rm ghost-0.4.0.zip
Nous allons procéder à l'installation de base :
$ cd ghost-0.4.0
$ cp config.example.js config.js
Éditez le fichier config.js afin d'y faire correspondre votre environnement. Ignorez la partie development et concentrez vous sur la partie production. Il vous faudra renseigner la propriété url en lui donnant le domaine auquel votre blog devra répondre. Pour le mail, vous devrez utiliser le serveur SMTP de GMail, c'est le plus simple :
mail: {
transport: 'SMTP',
options: {
service: 'Gmail',
auth: {
user: 'votrecompte@gmail.com',
pass: 'votremotdepasse'
}
}
},
Une fois ce fichier sauvegardé, il est temps d'installer les modules npm d'un preste :
$ npm install --production
Normalement, tout s'est bien passé et en lançant :
$ npm start
Vous devriez pouvoir vous connecter à votre blog, créer votre compte en vous rendant sur {url de votre blog }/ghost et vous y connecter.
Arretons maintenant le serveur d'un habile ctrl+c.
Init.d
Maintenant que le blog est installé, il nous faut un moyen de le lancer au démarrage du serveur. Nous allons pour cela créer un service init.d.
$ sudo vi /etc/init.d/monblogghost
Vous pouvez évidemment remplacer monblogghost par n'importe quoi. Chez moi, c'est blog.hadrien.eu.
Dans ce fichier, insérez le script suivant :
#! /bin/sh
. /lib/lsb/init-functions
USER="votre_user_name"
APP="/home/web/monblogghost/ghost-0.4.0/index.js"
do_start() {
/usr/bin/sudo -u $USER NODE_ENV=production /usr/local/bin/forever start $APP
}
do_stop() {
/usr/bin/sudo -u $USER /usr/local/bin/forever stop $APP
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
do_start
;;
*)
echo "Usage: $0 start|stop|restart" >&2
exit 3
;;
esac
Vous pouvez devez tester votre script immédiatement en invoquant :
$ sudo service monblogghost start
Si votre blog s'affiche à l'url demandée, c'est bon. Vous pouvez aussi utiliser les commandes :
$ sudo service monblogghost stop
pour arretez Ghost. Ça sera utile pour la mise à jour. Et :
$ sudo service monblogghost restart
qui sera utile si vous éditer ou ajouter de nouveaux thèmes, puisqu'un redémarrage de Ghost est nécessaire.
Il faut maintenant indiquer au système que ce service doit être lancé au démarrage :
$ sudo update-rc.d monblogghost defaults
À noter que vous pouvez aussi créer plusieurs services si vous voulez faire tourner plusieurs blogs Ghosts sur la même machine. Il suffit pour cela de leur donner des noms différents et de les faire pointer sur un dossier différent.
Nous en avons fini avec l'installation, nous allons maintenant préparer le terrain pour la prochaine mise à jour.
Préparation
Ce qui est agaçant quand on met à jour, c'est que certains dossier/fichiers très importants sont situés dans le dossier de Ghost et qu'il faut penser à les copier à chaque fois. Les fichiers en question, ce sont juste la base de données (sqlite3), la config et toutes les images. Ça va vite devenir pesant, et surtout, sensible. Alors moi ce que j'ai fait, c'est que je les ai sorti du dossier Ghost en utilisant des liens symboliques. J'en ai aussi profité pour sortir le dossier node_modules pour éviter d'avoir à tout réinstaller à chaque mise à jour. Ça donne ceci :
Tout d'abord on stoppe le serveur Ghost avec le service créé précédemment.
$ sudo service monblogghost stop
On est situé dans le dossier de Ghost et on va déplacer les éléments importants au niveau en dessous (donc dans /home/web/monblogghost/ :
$ mv config.js ..
$ mv content ..
$ mv node_modules ..
Puis nous créons des liens symboliques au même endroit vers ces fichiers :
$ ln -s ../config.js
$ ln -s ../content
$ ln -s ../node_modules
Et c'est tout. Vous pouvez relancer Ghost et constater que tout fonctionne comme avant.
Mise à jour
Voilà arrivé le jour tant attendu de la mise à jour ! Nous allons installer la 0.4.1. Nous nous plaçons dans le dossier du blog :
$ cd /home/web/mongblogghost/
Nous téléchargeons la nouvelle archive :
$ wget https://ghost.org/zip/ghost-0.4.1.zip
Et nous la dézippons :
$ unzip ghost-0.4.1.zip -d ghost-0.4.1
$ rm ghost-0.4.1.zip
Nous voilà donc avec deux dossier de Ghost !
$ ls
config.js content ghost-0.4.0 ghost-0.4.1 node_modules
Entrons dans le nouveau dossier et créons les alias vers les fichiers que nous avons déplacé :
Certains feront la remarque qu'il serait pertinent de copier le theme casper avant de supprimer le dossier content et ils ont raison.
$ cd ghost-0.4.1
$ ln -s ../config.js
$ rm ../content/themes/casper
$ mv content/themes/casper ../content/themes/
$ rm -rf content
$ ln -s ../content
$ ln -s node_modules
Mettez à jour les modules npm :
$ npm install --production
Coupez votre ghost courant (c'est très important de le couper maintenant et de ne pas faire un restart après) :
$ sudo service monblogghost stop
Éditez le service :
$ sudo vi /etc/init.d/monblogghost
Et changez le chemin dans la variable APP simplement en changeant le numéro de version. Relancez ensuite l'app :
$ sudo service monblogghost start
Et voilà, c'est à jour \o/