作为一个Ghost博客的资深用户和一个完美主义者,一直以来都在不停地吐槽Ghost的启动方式。又是什么npm start,又是forever或者pm2之类的,一点都不优雅,不符合我的性格,于是就找到了这个方法。
适用于Ubuntu,安装配置好ghost,将ghost目录移动到/var/www/ghost内,测试npm start --production下网站是否能正常访问。
新建用户www-data(如果之前没有),并执行

chown -R www-data /var/www/ghost /var/www/ghost/*

新建文件:
/etc/init/ghost.conf

description "Ghost Blog"

start on started mountall
stop on shutdown

respawn
respawn limit 99 5

script
  chdir /var/www/ghost
  exec sudo -u www-data exec /usr/bin/npm start /var/www/ghost/ --production >> /dev/null 2>&1
end script

post-start script
end script

注意/usr/bin/npmapt-get install npm之后的npm位置。如果是其他方式安装的,就需要把它替换成对应的目录。使用/dev/null是不保留日志文件,如果需要的话可以把它改成log位置,但一定是www-data用户可以访问的目录,建议/var/log里。
这样配置后开机自动启动,崩溃后会自动重新启动一个新进程。
手动启动:start ghost
手动停止:stop ghost
重新启动:restart ghost

非常简单,优雅,稳定,安全。终于有一种正规站的感觉了。foreverpm2之类的就不再需要了。

测试:关闭自制的弱渣DDoS防范机制,使用我自己稀疏又弱渣的DDoS网络[1]对自己的blog发起DDoS攻击,几百毫秒后RAM炸了,Ghost进程被kill,但是系统立刻将其自动重启,网站也恢复正常了。当然持续轰炸就没办法访问了~

注释:

①别问我它是从哪里来,用来干什么的……反正我没那它做过任何坏事