阿昌教你如何让 Hexo 在服务器稳定运行
阿昌 Java小菜鸡
## 前言

前些日子通过hexo搭建了一个个人博客系统终于又搭建起来了(好一个又?),但是每隔一段时间去访问自己的网站总是访问不到,去服务器查询ps -ef|grep hexo,发现 Hexo 进程已经挂掉了,想着自己用命令 nohup hexo s -p xxxx 启动应该没问题啊,无奈也找不到停止的相关日志,所以另寻出路:

找一个能实现守护进程监控服务的东西,如果服务挂掉了就自动重启。

首先想到的就是写一个 shell 脚本去进行,每隔固定时间去查询 Hexo 进程是否已经启动,没有的话重新启动。

但是在实现之前我先去网上搜了一把,发现了一个神器:PM2

  • PM2 是 node 的进程管理工具,利用它可以简化很多node应用管理的繁琐任务,像性能监控、自动重启等它都能实现,巧的是, Hexo 便是一个 node 应用,因此在这里我采用 PM2 来进行博客服务的自动重启功能。

流程

  • 安装PM2(保证你电脑具有前端环境

    1
    npm install pm2 -g
  • 然后在咋们在服务器上随便找个你喜欢的文件夹的目录下新建一个 js 脚本文件run.js,内容如下:

    1
    2
    3
    4
    5
    6
    var exec = require('child_process').exec;
    var cmd = 'nohup hexo s -p 80 >> server.log &';

    exec(cmd, function(error, stdout, stderr) {
    process.exit(0);
    });
  • 最后,执行命令

    1
    pm2 start run.js

    image


常用PM2指令

  • 查看进程状态
1
pm2 list
  • 停止应用
1
pm2 stop id|name|all|json|stdin

其中,all 会将所有应用终止;

id 为 pm2 list 查询出来的 id,

name 为 pm2 list 查询出来的 name。

其余两个暂时还不清楚。

  • 重启应用
1
pm2 restart id|name|all|json|stdin
  • 删除应用
1
pm2 delete name|id|script|all|json|stdin
  • 查看某个应用的信息
1
pm2 describe name|id
 请作者喝咖啡