hexo 长期后台运行

前言

对比wordpress这种重型博客系统,静态博客相对轻量。所以我也试着去搭了一个玩。

此处我选定的是hexo这个博客系统,它是用nodejs写成的,可使用npm进行管理。

故障

在使用hexo s启动博客时,它只能挂在前台上。一旦退出terminal,它就无法使用了。

这时我就使用了hexo s &这个命令,期待它可以跑在后台。但是也失败了。

于是,我就想起了npm管理web的工具—pm2。

pm2

pm2是一个管理nodejs process的工具,它可以让我们用简单的指令启动nodejs进程(多为web前端)并管理之。
详情可以参考pm2的官方文档,这里只是用到了start/stop/logs几个常用的命令。

pm2官方文档

使用步骤

  1. 首先,我们需要安装它。
npm install -g pm2
  1. 进到博客的根目录,新建一个文件:hexo_run.js

//run
const { exec } = require('child_process')
exec('hexo server',(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

就可以使得hexo常驻后台了。

关于nodejs的模块管理

如果对nodejs不熟的小伙伴,可能会发现pm2并没有全局安装。具体原因我也不太清楚,因为我们的确使用的是npm的全局安装,但事实可能完不成。

这时我们需要做链接,将安装在nodejs的node_modules模块包中的pm2放到全局PATH路径下。

这时,我们可以先找到npm的安装路径:

npm config get prefix

然后进入nodejs的bin目录下,将其链接到全局PATH路径(以我个人为例,我的路径是/usr/local/nodejs)

cd /usr/local/nodejs/bin
ln -s /usr/local/nodejs/bin/pm2 /usr/bin/pm2

即可使得pm2全局化了。

上一篇:2021-04-19


下一篇:搭建hexo步骤