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.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" 转载请保留原文链接及作者。