前言
自從進來公司後所有的專案都是採用SPA開發,但在部署上時常會碰到一些小問題
像是當前後台並不是用子網域的方式分開,例如:
https:backstage.xxx.com/
https:xxx.com/
而是採用子目錄的方式分開:例如:
https:xxx.com/
https:xxx.com/bakcstage
要如何快速方便設定好Apache
就是一個令人頭痛的地方
而如果前台剛好使用的是node.js
,就可以用PM2
來解決這樣的困境
那我們一起來看下去吧~!
Ubuntu
這邊使用的是GCP
平台,因此在建立Ubuntu時可先賦予root密碼
1 | sudo passwd root |
可切換至root
帳號
1 | su - |
這樣在操作下列步驟時,執行指令前就不用另外加sudo
Node.js+Vue
這次教學打算先架一個簡單的Vue cli當作node.js的專案,這部分可以參考這一篇
PM2
PM2是自帶負載平衡的node.js
程序管理器
當你需要部署node
專案,讓它有效分配主機CPU及記憶體資源時,並且獨立運作在主機上時
它會是你很好的選擇,而其中PM2
的PM
代表著 Process Manager
process可以指服務、程序、應用,這邊統一以程序
作為中文譯詞
安裝
在全域模式下安裝PM2
1 | npm install pm2@latest -g |
-g:global
新增程序
透過啟動js建立一個程序
1 | pm2 start <.js> |
透過指令方式建立一個程序
1 | pm2 start "<COMMAND>" |
也可以直接透過靜態檔案建立
1 | pm2 serve <PATH> <PORT> |
如果你要啟動一個vue專案可以這麼做
1 | pm2 start "npm run start" --name <APP NAME> --watch --max-memory-restart 1000M --log ~/.pm2/logs/<APP NAME>/ --time |
可以附加的參數如下(以下–都為兩個-):
–name:指定 app 一個名字
–watch:檔案有變更時,會自動重啟
–max-memory-restart:記憶體使用超過這個門檻時,將自動重啟
–log:設定 log 的目錄,若要重新設定目錄,需將原本的程序刪掉後重新建立
–error:設定 error log 目錄
–log-date-format:指定 log 的格式
–time:給 log 加上時間前綴
–spa:限定
serve
使用,會重導所有的請求到index.html
–restart-delay:自動重啟時,要 delay 多久
–basic-auth-username –basic-auth-password:限定
serve
使用,讓該頁面需要帳號密碼方可存取
管理程序
顯示管理程序狀態
1 | pm2 [list|ls|status] |
顯示管理程序CPU及記憶體使用狀態
1 | pm2 monit |
顯示指定程序狀態
1 | pm2 show <APP NAME> |
直接kill再重啟程序
1 | pm2 restart <APP NAME> |
停止程序
1 | pm2 stop <APP NAME> |
停止並刪除程序
1 | pm2 delete <APP NAME> |
而除了<APP NAME>
之外,你也可以替換成all
或是<id>
all: 所有程序 / id: 該程序編號
開機時自動啟用
如果希望主機重啟時能夠重新啟用PM2
的話可以這麼做
1 | pm2 startup |
另外不要忘記儲存當前設定好的應用
1 | pm2 save |
Apache
當你透過PM2
的任何一種方式建立好程序後
再來就是編輯我們的Apache設定檔.conf
,ProxyPassMatch
則設定後台要進入的目錄
1 | <VirtualHost *:80> |
啟用該設定檔
1 | a2ensite <.conf> |
最後重啟Apache就大功告成了
1 | systemctl restart apache2 |