PM2 让 Hexo 后台稳定运行

本来我是用Nginx来部署Hexo服务端的,但是因为有用到hexo-admin管理。我希望随时能够访问admin,但hexo-admin又依赖于hexo服务器进程,所以需要hexo能够在后台一直运行。但是这个hexo进程并不稳定,直接用hexo s命令开的进程,关掉服务器链接,进程就挂了。

查了资料发现Linux有几个可以让进程在后台运行的命令:

nohup/setsid/&

具体就不介绍了,详细信息参考:https://www.ibm.com/developerworks/cn/linux/l-cn-nohup/

于是我们得到了一个可用的命令:

nohup hexo s &

nohup是让进程忽略hangup信号

&将进程放入后台运行

但是,即使这么做,每过一段时间,heox仍然依然会死掉(orz…)。所以,考虑到需要一个守护进程,能够在hexo进程 down掉的时候自动重启,就可以实现需求了。可选的node相关插件有pm2、forever 或者 supervisor ,三选一即可。

这里我们以pm2为例。首先安装:

npm install pm2 -g

然后新建一个js文件,放在项目的根目录下,比如hexo-backrun.js,写入如下内容:

var exec = require('child_process').exec;
var cmd = 'nohup hexo s';

exec(cmd, function(error, stdout, stderr) {  
  process.exit(0);
});

然后执行:pm2 start hexo-backrun.js

看到这样的画面就说明成功了:

hexo-backrun

在上面的hexo-backrun.js中,我们在后台启动了一个子进程来运行hexo服务器,当hexo进程退出时,子进程也退出。然后,pm2 会自动重启该进程。这样就可以实现让Hexo在后台稳定运行了。

还可以使用pm2 show hexo-backrun来查看进程相关信息,使用pm2 stop hexo-backrun来关闭进程。


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 using1174@foxmail.com

文章标题: PM2 让 Hexo 后台稳定运行

文章字数: 437

本文作者: Jun

发布时间: 2018-04-14, 16:23:00

最后更新: 2018-04-21, 02:16:51

原始链接: http://yoursite.com/2018/04/14/Hexo-后台运行方法/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏