前言
對比wordpress這種重型博客系統,靜態博客相對輕量。所以我也試着去搭了一個玩。
此處我選定的是hexo這個博客系統,它是用nodejs寫成的,可使用npm進行管理。
故障
在使用hexo s啟動博客時,它只能掛在前台上。一旦退出terminal,它就無法使用了。
這時我就使用了hexo s &這個命令,期待它可以跑在后台。但是也失敗了。
於是,我就想起了npm管理web的工具—pm2。
pm2
pm2是一個管理nodejs process的工具,它可以讓我們用簡單的指令啟動nodejs進程(多為web前端)並管理之。
詳情可以參考pm2的官方文檔,這里只是用到了start/stop/logs幾個常用的命令。
使用步驟
- 首先,我們需要安裝它。
npm install -g pm2
- 進到博客的根目錄,新建一個文件:hexo_run.js
//run
const { exec } = require('child_process')
exec('hexo server',(error, stdout, stderr) => {
if(error){
console.log('exec error: ${error}')
return
}
console.log('stdout: ${stdout}');
console.log('stderr: ${stderr}');
})
- 啟動這個進程服務
pm2 start hexo_run.js
就可以使得hexo常駐后台了。
關於nodejs的模塊管理
如果對nodejs不熟的小伙伴,可能會發現pm2並沒有全局安裝。具體原因我也不太清楚,因為我們的確使用的是npm的全局安裝,但事實可能完不成。
這時我們需要做鏈接,將安裝在nodejs的node_modules模塊包中的pm2放到全局PATH路徑下。
這時,我們可以先找到npm的安裝路徑:
npm config get prefix
然后進入nodejs的bin目錄下,將其鏈接到全局PATH路徑(以我個人為例,我的路徑是/usr/local/nodejs)
cd /usr/local/nodejs/bin
ln -s /usr/local/nodejs/bin/pm2 /usr/bin/pm2
即可使得pm2全局化了。