如何讓 Hexo 在服務器穩定運行

聲明
本文地址:如何讓 Hexo 在服務器穩定運行node

背景

博客系統終於又搭建起來了(好一個又😶),可是每隔一段時間去訪問本身的網站老是訪問不到,去服務器查詢 ps aux | grep hexo,發現 Hexo 進程已經掛掉了,想着本身用命令 nohup hexo s -p 8080 > server.log 啓動應該沒問題啊,無奈也找不到中止的相關日誌,因此另尋出路:找一個能實現守護進程監控服務的東西,若是服務掛掉了就自動重啓。web

首先想到的就是寫一個 shell 腳本去進行,每隔固定時間去查詢 Hexo 進程是否已經啓動,沒有的話從新啓動。可是在實現以前我先去網上搜了一把,發現了一個神器:PM2shell

PM2 是 node 的進程管理工具,利用它能夠簡化不少node應用管理的繁瑣任務,像性能監控、自動重啓等它都能實現,巧的是, Hexo 即是一個 node 應用,所以在這裏我採用 PM2 來進行博客服務的自動重啓功能。npm

步驟

  • 首先,安裝 MP2json

    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,當頁面出現如下內容時,表示咱們成功了。hexo

    pm2

    圖中所示表示的是咱們在後臺 fork 了一個子進程來運行 Hexo 服務,當 Hexo 進程退出時,子進程也隨之退出。PM2 監控到以後會自動重啓該進程。svg

經常使用的 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

相關文章
相關標籤/搜索