Astuce: ghost blog avec un utilisateur particulier

Bonjour à tous,

Un petit billet rapide.
J'utilise Ghost blog ici même et je souhaitais qu'il ne soit pas lancé par root et pouvoir l'arrêter, le démarrer, le redémarrer, et vérifier le status facilement.

Donc j'ai réalisé un script à placer dans /etc/init.d/ :

#!/usr/bin/env sh
# Launch Ghost blog

order=${1}
work_dir="/var/www/blog/"
www_user="www-data"
www_shell="/bin/bash"

# Functions
get_pid () {
  ghost_pid=`pgrep nodejs`
  return ${ghost_pid}
}

ghost_stop () {
  get_pid
  echo "Ghost blog stopping...."
  for pid in ${ghost_pid}; do
    kill ${pid}
  done
  sleep 5
  get_pid
  if [ -z "${ghost_pid}" ]; then
    echo "Ghost blog is stop!"
  else
    echo "Ghost blog is not stop, check!"
    echo ${ghost_pid}
  fi
}

ghost_status () {
  get_pid
  if [ ! -z "${ghost_pid}" ]; then
    echo "Ghost blog is up!"
    echo ${ghost_pid}
  else
    echo "Ghost blog is down!"
  fi
}

ghost_start () {
  echo "Ghost blog starting...."
  cd ${work_dir}
  su -c "NODE_ENV=production forever start index.js" -s ${www_shell} ${www_user}
  sleep 5
  ghost_status
}

ghost_restart () {
  ghost_stop
  ghost_start
}

case ${order} in
   "start") ghost_start
      ;;
   "restart") ghost_restart
      ;;
   "stop") ghost_stop
      ;;
   "status") ghost_status
      ;;
   *)
      echo "`basename ${0}`:usage: start|restart|stop|status"
      exit 1 # Command to come out of the program with status 1
      ;;
esac

exit 0

Cela permet de lancer le processeur nodejs via forever avec l'utilisateur www-data (ici sous Debian 8).

Il reste à le mettre le script par défaut pour que le blog démarre en même temps que la vm:

update-rc.d ghost defaults

Have a nice day.