声明

本文地址:如何让 Hexo 在服务器稳定运行

背景

博客系统终于又搭建起来了(好一个又),但是每隔一段时间去访问自己的网站总是访问不到,去服务器查询 ps aux | grep hexo,发现 Hexo 进程已经挂掉了,想着自己用命令 nohup hexo s -p 8080 > server.log 启动应该没问题啊,无奈也找不到停止的相关日志,所以另寻出路:找一个能实现守护进程监控服务的东西,如果服务挂掉了就自动重启。

首先想到的就是写一个 shell 脚本去进行,每隔固定时间去查询 Hexo 进程是否已经启动,没有的话重新启动。但是在实现之前我先去网上搜了一把,发现了一个神器:PM2

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

步骤

  • 首先,安装 MP2

    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,当页面出现以下内容时,表示我们成功了。

    图中所示表示的是我们在后台 fork 了一个子进程来运行 Hexo 服务,当 Hexo 进程退出时,子进程也随之退出。PM2 监控到之后会自动重启该进程。

常用的 PM2 命令

  • 查看进程状态

    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

如何让 Hexo 在服务器稳定运行的更多相关文章

  1. 【安富莱原创开源应用第3期】花式玩转网络摄像头之VNC远程桌面版本,稳定运行2年不死机

    说明: 1.前段时间开源了一个网络摄像头的TCP版本 https://www.cnblogs.com/armfly/p/9173167.html,这次再来一个远程VNC的版本.使用更方便,无需大家制作 ...

  2. Asp.Net终于可以在龙芯服务器上运行啦:Jexus成功完成对国产系列CPU的适配

    为了确保我国信息化建设“安全可靠”,使用国产关键系统.关键应用.关键软硬件替代国外信息技术产品,已经在党政部门.国营企事业单位得到了进一步落实.过去运行于 Windows 服务器的 Web 应用程序, ...

  3. 将 java 项目打包成可运行的 jar 包(main 函数带参数),并上传到 linux 服务器上运行

    一.概述 java项目有两种架构,一种是 B/S 架构的,一种是 C/S 架构的. 对于 B/S 架构来说,我们常见的 java ee 即是 B/S 架构,通常,开发人员会在本地进行开发,然后将项目打 ...

  4. 服务器CGI运行机制

    CGI概括: 定义 通用网关接口(Common Gateway Interface)是HTTP服务器与你的或其它机器上的程序进行"交谈"的一种工具,其程序须运行在网络服务器上. 功 ...

  5. Visual Studio写的项目在 IIS 服务器上运行的两种简单方法

    首先需要PC上开启了IIS服务,相关方法网上很多,也很简单 第一种:直接在项目中操作 1.创建一个项目,然后右击选中项目,右击,单击属性,打开项目属性标签页面 如图,选择Web标签,在服务器栏目中选中 ...

  6. KoaHub.js可借助 Babel 编译稳定运行在 Node.js 环境上

    koahubjs KoaHub.js -- 基于 Koa.js 平台的 Node.js web 快速开发框架.可以直接在项目里使用 ES6/7(Generator Function, Class, A ...

  7. sublime text3在指定浏览器上本地服务器(localhost)运行文件(php)

    昨天在使用sublime text3时,发现能在本地服务器上运行php文件,于是百度了一下有关知识, 终于成功了,今天总结一下. 首先要让sublime text3 出现侧边栏sidebar,不会的可 ...

  8. Linux 笔记 #03# 在 Debian远程服务器上运行 Java socket程序

    我试图做什么:把我的破代码放到服务器上运行,并成功与客户端进行 socket通信. 预备环境:刚安装好 MySQL 和 JVM 的 Linux远程服务器(Debian 8)一台. 主要有如下几个步骤: ...

  9. 本站已稳定运行了XX天,网页时间显示功能实现方法

    这个是我昨晚上添加的效果, 分为三个部分: 1.本站已稳定运行了多少天的实现: 直接把下面代码复制到后台你想添加的位置即可. 1 2 3 4 5 6 7 8 9 本站已稳定运行了 <strong ...

随机推荐

  1. java 数据类型:集合接口Collection之常用ArrayList;lambda表达式遍历;iterator遍历;forEachRemaining遍历;增强for遍历;removeIf批量操作集合元素(Predicate);

    java.util.Collection接口 Java的集合主要由两个接口派生出来,一个是Collection一个是Map,本章只记录Collection常用集合 集合只能存储引用类型数据,不能存储基 ...

  2. 云主机tracert外网无返回需在安全组入方向加ICMP Time Exceeded TTLexpired in transit

  3. pycharm字体放大的设置

    一.pycharm字体放大的设置 File -> setting -> Keymap ->在搜寻框中输入:increase -> Increase Font Size(双击) ...

  4. JAVA比较两个版本号的大小

    /** * 比较版本号的大小 (两个版本号格式应尽量相同) * * @param v1 版本号1 * @param v2 版本号2 * @return 正数:v1大 负数:v2大 0:相等 */ pu ...

  5. 【九度OJ】题目1074:对称平方数 解题报告

    [九度OJ]题目1074:对称平方数 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1074 题目描述: 打印所有不超过n( ...

  6. 【九度OJ】题目1065:输出梯形 解题报告

    [九度OJ]题目1065:输出梯形 解题报告 标签(空格分隔): 九度OJ [LeetCode] http://ac.jobdu.com/problem.php?pid=1065 题目描述: 每组测试 ...

  7. 【LeetCode】475. Heaters 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcod ...

  8. 基于React和Node.JS的表单录入系统的设计与实现

    一.写在前面 这是一个真实的项目,项目已经过去好久了,虽然很简单,但还是有很多思考点,跟随着笔者的脚步,一起来看看吧.本文纯属虚构,涉及到的相关信息均已做虚构处理, 二.背景 人活着一定要有信仰,没有 ...

  9. MySQL中的where和having

    group by 在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集.group by 子 ...

  10. Git从远程仓库克隆

    首先,登陆GitHub,创建一个新的仓库,名字叫gitskills 勾选Initialize this repository with a README,这样GitHub会自动为我们创建一个READM ...