'Staying Alive' by Ghost

Osvaldo Toja bio photo By Osvaldo Toja Comment

This site was meant to be an static site (generated, of course). However, I found some issues with the generated site (links pointing to folder/index.html instead of just folder/) so the decision to run it behind an nginx server was made.

Today ghost crashed:

/var/www/ghost/toja.io/node_modules/express-hbs/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:444
    throw new Exception("You must pass a string or Handlebars AST to Handlebar"

Luckily there’re a couple of options: supervisord, init scripts and forever. Being this a temporary setup (the static site version is the ultimate goal remember?) the third option was choosen.

forever can be used to run Ghost as a background task. forever will restart the node process if it crashes.

Installation is simple:

sudo npm -g install forever

Being temporary doesn’t means it should run without leaving any track. Forever allows you to use a log file. Since the daemon will be running under a non-root account a directory was created, owned by the same user the script will be executed.

sudo mkdir /var/www/ghost/logs/
sudo chown osvaldo:osvaldo /var/www/ghost/logs/

By default, forever will start ghots in development mode. To start Ghost in production mode type NODE_ENV=production forever start index.js The command should be run from the ghost installation directory.

cd /var/www/ghost/toja.io/
forever -l /var/www/ghost/logs/toja-io.log start index.js

To check if Ghost is currently running type forever list

osvaldo@li68-220:~$ forever list
info:    Forever processes running
data:        uid  command             script   forever pid   logfile                         uptime
data:    [0] mnz9 /usr/local/bin/node index.js 20031   20033 /var/www/ghost/logs/toja-io.log 0:0:1:26.478
osvaldo@li68-220:~$

To stop Ghost type forever stop index.js

comments powered by Disqus