用 Upstart 守护 Ghost

在“在阿里云上安装 Ghost”系列教程中我们讲解了如何安装 Node.jsNginxMySQLGhost ,并最终启动 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 所不具备的,这将在以后的文章中介绍。

发表评论

电子邮件地址不会被公开。 必填项已用*标注