聲明
本文地址:如何讓 Hexo 在服務器穩定運行node
博客系統終於又搭建起來了(好一個又😶),可是每隔一段時間去訪問本身的網站老是訪問不到,去服務器查詢 ps aux | grep hexo
,發現 Hexo 進程已經掛掉了,想着本身用命令 nohup hexo s -p 8080 > server.log
啓動應該沒問題啊,無奈也找不到中止的相關日誌,因此另尋出路:找一個能實現守護進程監控服務的東西,若是服務掛掉了就自動重啓。web
首先想到的就是寫一個 shell
腳本去進行,每隔固定時間去查詢 Hexo 進程是否已經啓動,沒有的話從新啓動。可是在實現以前我先去網上搜了一把,發現了一個神器:PM2
。shell
PM2
是 node 的進程管理工具,利用它能夠簡化不少node
應用管理的繁瑣任務,像性能監控、自動重啓等它都能實現,巧的是, Hexo 即是一個 node 應用,所以在這裏我採用 PM2
來進行博客服務的自動重啓功能。npm
首先,安裝 MP2
json
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
圖中所示表示的是咱們在後臺 fork 了一個子進程來運行 Hexo 服務,當 Hexo 進程退出時,子進程也隨之退出。PM2 監控到以後會自動重啓該進程。svg
查看進程狀態工具
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