廢話區
最近幾天安裝了好幾個自己寫的node,
我使用的發布方案是pm2,
然而每次發布為了要設置成自動重啟pm2(windows系統下),
都還要再去查一次資料, 即使已經做很多遍了
於是打算寫個網製作個紀錄, 也幫助後來者少採點雷
pm2簡介
PM2是一種基於npm套件的node程序管理工具,可以利用它來簡化很多node的操作,包含效能監控、自動重啟、負載均衡.....。其中我認為最終要的是, 其可以擺脫node,python...等語言單進程多線程的弊病, 使你的server成為multi-process 的server。(沒錯, 你沒看錯 python也可以用pm2來發布喔!)
實作使window環境下建立開機自動重啟pm2
要說明特別獨立window出來講是因為其他OS都有原生的方法完成這個任務,只有window沒有
- 安裝pm2 於全域
- 建立環境變數(系統級)
- 進入檔案總管,
- 旁邊我的電腦案右鍵選內容,
- 點擊左邊進階系統設定,
- 點環境變數,點系統變數的新增,
- 變數名:PM2_HOME,
- path:C\使用者\os登入帳號.pm
- 儲存啟動列表
- 進入cmd (圖片中的cmder同cmd)
- 前往想發布的node的資料夾(cd ....)
- pm2 start app.js -i 4 =>
啟動node,參數意義可參考別篇文章,此步驟可重複多次直到使目前運行列表達到你的目的
- pm2 save =>儲存目前列表
- 可用kill , resurrect 來測試是否建立成功
- 安裝window service
- 在cmd安裝,npm install -g pm2-windows-service
- 進入系統級cmd,pm2-service-install -n PM2
- 寫n ,因為已經設定好環境變數,之後會卡住,按ctrl+C退出即可
(我目前還不知道為甚麼會卡住, 遇到的每一台電腦都是,知道的大大可以說一下)
- 完成測試
- window + R 執行services.msc
- 查看PM2這個服務(記得啟動)
- 同時在系統管理員身分下kill進程,看是否會自動出現
(有些OS不會一下子有效, 如過這個做不到沒關西,重開機試一下)
- 重開機, 以系統管理員身分檢查是否還在運行
終於成功啦! 感動!!
記得後段的操作cmd都要用管理員模式喔!
如何優雅的關閉本服務
網路上常發現有人使用了本服務後遇到不在管理者模式無法操作的問題,
我實際測試後發現是因為在關閉本服務後沒有正確的解除安裝所導致的,
於管理員模式調用:pm2-service-uninstall -n PM2
得到:PM2 service uninstalled.
之後就可以像原來一樣在一般使用者模式好好使用pm2了
至於使用這個服務後為何一定要在管理員模式操作?
我猜是因為service佔用了pm2的使用權限,而service是管理員吧??
目前沒有答案QQ