在“在阿里云上安装 Ghost”系列教程中我们讲解了如何安装 Node.js、Nginx、MySQL、Ghost ,并最终启动 Ghost 完成博客系统的搭建。在最后一篇教程中,我们讲解了使用 forever 作为 Ghost 的守护程序,当 Ghost 进程意外死掉的时候,forever
会自动启动新的 Ghost 进程,这样就能让博客永不下线。但是,如果服务器重启了或者 forever 死掉了呢?这时 forever
就无能为力了。接下来我们介绍新的工具 -- Upstart
,它既能守护 Ghost 进程,也能在服务器重启时自动启动 Ghost 。
介绍 Upstart
Upstart is an event-based replacement for the /sbin/init daemon which handles starting of tasks and services during boot, stopping them during shutdown and supervising them while the system is running.
Upstart 是一个基于事件的守护进程,用来替代 /sbin/init
,它既能在系统启动/关机时启动/关闭任务和服务进程,也能在系统运行阶段监控这些任务和服务进程。
It was originally developed for the Ubuntu distribution, but is intended to be suitable for deployment in all Linux distributions as a replacement for the venerable System-V init.
Upstart 最初是为 Ubuntu 发行版开发的,但是也能部署到其他所有的 Linux 发行版上以取代经典的 System-V init
。
为 Ghost 创建 Upstart 配置文件
进入 /etc/init
目录,然后执行以下指令:
nano ghost.conf
然后复制/粘贴以下配置信息:
description "Ghost Blogging Platform"
author "www.ghostchina.com"
start on runlevel [2345]
stop on shutdown
respawn
respawn limit 99 5
script
cd /your/ghost/folder
npm start --production 2>&1 >> /dev/null
end script
description
描述信息。npm start --production 2>&1 >> /dev/null
启动 Ghost,并将 stdout 和 stderr 中输出的信息全部丢弃。/dev/null
就像一个黑洞,任何写入的内容都将消失。这里我们的用意是不记录任何日志。
保存上述文件。然后启动 Ghost :
sudo start ghost
你会看到类似下面的输出信息:
ghost start/running, process 7869
7869
是进程 ID,每次运行可能会不同。但是,看到这条消息就说明 Ghost 正常启动了。
其他指令
关闭 Upstart 服务的指令为:
sudo stop ghost
重启 Upstart 服务的指令为:
sudo restart ghost
总结
虽然 forever 提供了一些额外的功能,但是用处有限,而且,forever 守护进程死掉的话,没有守护进程来重启它。这方面 pm2 更胜一筹,它会为自己创建几个 System V init
脚本,让操作系统作为自己的守护进程,这就和我们介绍的 Upstart 是一样的,只是我们直接让操作系统守护 Ghost ,省去了中间层(forever 或 pm2)。
pm2 的详细介绍和用法可以参考这里:https://github.com/Unitech/pm2 。
pm2 还有很多高级功能是 forever 和 Upstart 所不具备的,这将在以后的文章中介绍。