让hexo 后台运行

默认情况:

默认情况,hexo 只能在前台通过命令行运行,这样带来一个弊端就是:只要服务器断开当前 Terminal,那么hexo 就终止运行。

解决方法:

在服务器商使用 nmp 安装 pm2

1
npm install -g pm2

进入hexo 网站根目录,创建一个名为 hexo_run.js 的文件,内容为:

1
2
3
4
5
6
7
8
9
10
11
//run
const { exec } = require('child_process')
exec('hexo server -p 80',(error, stdout, stderr) => {

if(error){
console.log('exec error: ${error}')
return
}
console.log('stdout: ${stdout}');
console.log('stderr: ${stderr}');
})

运行脚本

1
pm2 start hexo_run.js

效果如下:

1
2
3
4
5
6
7
8
9
10
[root@linuser blog]# pm2 start hexo_run.js      
[PM2] Applying action restartProcessId on app [hexo_run](ids: 0)
[PM2] [hexo_run](0) ✓
[PM2] Process successfully started
┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬──────────┬──────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼──────────┼──────┼──────────┤
│ hexo_run │ 0 │ 0.0.0 │ fork │ 13455 │ online │ 105 │ 0s │ 0% │ 1.8 MB │ root │ disabled │
└──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴──────────┴──────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app

如下图:

启动后,需要查看 pm2 日志,看是否有报错。或者通过 linux 系统自带命令,查看你指定的端口是否正常监听在(比如我上面指定了 hexo 启动时监听的端口为 80):

1
2
[root@linuser ~]# ss -lntp |egrep 80
LISTEN 0 128 :::80 :::* users:(("hexo",pid=13461,fd=11))

pm2 说明:

启动命令:

1
pm2 start hexo_run.js

停止命令:

1
pm2 stop hexo_run.js

查看状态:

1
pm2 status hexo_run.js

查看启动日志:

默认情况下日志文件在 /root/.pm2/logs 目录下,分别为 hexo-run-error.log 和 hexo-run-out.log

坚持原创技术分享,您的支持将鼓励我继续创作!