pm2是什麼
pm2 是 nodeJS 的 process manager,可以用來管理node服務、自動重啟服務、也可以設定多程序等等,透過簡單的方式部署node服務。
在Ubuntu上部署NuxtJS網站
1. 安裝nodejs及npm
更新repositories
sudo apt-get update
sudo apt-get upgrade
安裝新版nodejs及npm(本文章發佈時使用的是nodejs 16)
先從Nodesource(提供nodejs的第三方repositories)取得16版的nodejs
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
檢查node及npm版本
node -v
# 輸出
v16.13.0
npm -v
# 輸出
8.1.0
2. 測試部署NuxtJS
進入專案目錄,安裝必要套件後,建立並執行nuxt
cd <<你的專案目錄>>
sudo npm install
sudo npm run build
sudo npm run start
現在應該可以在http://localhost:3000上看到建立的網站
使用pm2管理NuxtJS服務
安裝pm2
sudo npm install pm2 -g
透過pm2啟動服務(依情況決定是否使用sudo)
# 以下指令做的事為 sudo npm run start
sudo pm2 start npm -- run start # 不指定服務名稱
sudo pm2 start npm --name "你的服務名稱" -- run start # 指定服務名稱
也可以修改package.json裡的script,加入「deploy」讓它做「nuxt build && npm start」,就可以讓服務每次啟動時都自動執行nuxt build
{
"scripts": {
"dev": "nuxt",
"build": "nuxt build",
"start": "nuxt start",
"generate": "nuxt generate",
"lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .",
"lint": "npm run lint:js",
"deploy": "nuxt build && npm start"
}
}
接著可以改以該指令啟動
sudo pm2 start npm --name "你的服務名稱" -- run deploy
其他相關指令
sudo pm2 status # 查看所有的pm2 (sudo和非sudo是分開的)
sudo pm2 start service_name # 啟動服務
sudo pm2 restart service_name # 重新啟動服務(先stop再start)
sudo pm2 reload service_name # 重新啟動服務(0停機,一個一個process重啟,至少有一個process在運作)
sudo pm2 stop service_name # 停止服務
sudo pm2 delete service_name # 刪除服務
sudo pm2 log # 查看執行log