声明

本文地址:如何让 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. PMP变更流程

    变更流程:

  2. .net core使用EF core连接mssqlserver数据库

    一,打开控制台二,输入以下代码1.Install-Package Microsoft.EntityFrameworkCore 2.Install-Package Microsoft.EntityFra ...

  3. 解决Tensorflow ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray)

    问题描述 在将一个数组送入tensorflow训练时,报错如下: ValueError: Failed to convert a NumPy array to a Tensor (Unsupporte ...

  4. 第一周python学习总结

    多行注释:格式化输出内容,用{}传递变量内容 执行输出 while: for XXX: if: range(satar,end,步长) break continue input 等于python2里面 ...

  5. Shell之awk常用用法

  6. 【LeetCode】NO.376 摆动序列 (Python) [贪心算法]

    376. 摆动序列 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 .第一个差(如果存在的话)可能是正数或负数.仅有一个元素或者含两个不等元素的序列也视作摆动序列. 例 ...

  7. 【LeetCode】764. Largest Plus Sign 解题报告(Python)

    [LeetCode]764. Largest Plus Sign 解题报告(Python) 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn ...

  8. 【LeetCode】703. Kth Largest Element in a Stream 解题报告(Python)

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

  9. The Balance(poj2142)

    The Balance Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 5452   Accepted: 2380 Descr ...

  10. 一个老菜鸟的年度回忆 & 智能工厂奋斗的第三年,可能有你值得借鉴的

    岁月蹉跎,寒冬的夜晚仍伏案疾书,见论坛中有诸多大神已经开始了一年的总结,突然安奈不住心中的躁动,也想为这今年的奋斗留下只言片语,没有年初的目标总结,没有未来的展望,就想作为一篇日记记录今年项目精力,为 ...