声明
本文地址:如何让 Hexo 在服务器稳定运行node
博客系统终于又搭建起来了(好一个又😶),可是每隔一段时间去访问本身的网站老是访问不到,去服务器查询 ps aux | grep hexo
,发现 Hexo 进程已经挂掉了,想着本身用命令 nohup hexo s -p 8080 > server.log
启动应该没问题啊,无奈也找不到中止的相关日志,因此另寻出路:找一个能实现守护进程监控服务的东西,若是服务挂掉了就自动重启。web
首先想到的就是写一个 shell
脚本去进行,每隔固定时间去查询 Hexo 进程是否已经启动,没有的话从新启动。可是在实现以前我先去网上搜了一把,发现了一个神器:PM2
。shell
PM2
是 node 的进程管理工具,利用它能够简化不少node
应用管理的繁琐任务,像性能监控、自动重启等它都能实现,巧的是, Hexo 即是一个 node 应用,所以在这里我采用 PM2
来进行博客服务的自动重启功能。npm
首先,安装 MP2
json
npm install pm2 -g
而后在咱们启动服务的目录下新建一个 js
脚本文件:hexo-auto.js
,内容以下:服务器
var exec = require('child_process').exec; var cmd = 'nohup hexo s -p 8080 >> server.log &'; exec(cmd, function(error, stdout, stderr) { process.exit(0); });
最后,执行命令:pm2 start hexo-auto.js
,当页面出现如下内容时,表示咱们成功了。hexo
图中所示表示的是咱们在后台 fork 了一个子进程来运行 Hexo 服务,当 Hexo 进程退出时,子进程也随之退出。PM2 监控到以后会自动重启该进程。svg
查看进程状态工具
pm2 list
中止应用性能
pm2 stop id|name|all|json|stdin
其中,all 会将全部应用终止;id 为
pm2 list
查询出来的 id,name 为pm2 list
查询出来的 name。其他两个暂时还不清楚。
重启应用
pm2 restart id|name|all|json|stdin
参数含义同
pm2 stop
删除应用
pm2 delete name|id|script|all|json|stdin
参数含义同
pm2 stop
查看某个应用的信息
pm2 describe name|id
参数含义同
pm2 stop