上一集挖了坑,要來直接租一台機器給大家看,所以本集就會直接租一台機器,並且部署 Node.js 應用跑給大家看。本集會使用到的機器是 Linode,近期他們改名為 Akimai,但是我還是習慣叫他 Linode。
Linode 是一家美國的 VPS 主機商,他們的機器在全球都有機房,其中亞洲有 3 個機房,分別是東京、新加坡、孟買,而我們會使用的是東京機房,因為離台灣最近,所以速度會比較快。
除了位置以外,他算是我比較早接觸的 IaaS 服務,推薦的點在於:
本集因為會從零開始建置,所以流程上大致會包含以下內容:
(本集 Linode 沒有贊助),那我們就開始吧!
影片連結:https://youtu.be/e9Y4sWcwsn8
本集所使用的範例專案:https://github.com/Wcc723/node-ironman-sample-2023/tree/feature/error-catch
因為影片中會使用到相關指令,所以我會將指令附在部落格及下方,歡迎大家自行取用:https://www.casper.tw/development/2023/10/03/unbuntu-and-pm2/
原則上任何的版本、伺服器的 Ubuntu 作業系統不會有太大差異,因此以下指令皆可運行,流程如下:
更新套件列表,在此是更新 Ubuntu 套件列表,確保安裝的套件都是最新的:
sudo apt-get update
安裝 Node.js,其中的 18.x
可以替換成預期安裝的任何版本。
# 安裝 Node.js 18.x 版本
curl -sL <https://deb.nodesource.com/setup_18.x> | sudo -E bash -
sudo apt-get install -y nodejs
確認 Node.js 和 npm 安裝成功,正確會回應版本號:
node -v
npm -v
如果 NPM 沒有被安裝,可以使用以下指令安裝:
curl -L https://www.npmjs.com/install.sh | sudo sh
NPM 確認安裝無誤以後,可以安裝 pm2 服務。
npm install -g pm2
你可以使用任何自己的 Node 專案進行部署,或者參考此範例專案。
接下來,可以使用到以下指令建立資料夾,並且將專案 clone 至資料夾中:
mkdir website-sample
cd website-sample
git clone {{ 專案路徑 }}
cd {{ 專案名稱 }}
下載後,也可以輸入 ls,就能看到當前專案的資料夾內容,範例如下:
> ls
# app.js bin controllers models package.json pnpm-lock.yaml public routes swagger. js views
沒有問題後,就能使用 npm install
安裝專案所需的套件,安裝完成後,就能使用 npm start
運行專案,確認專案運行是沒有問題的。
npm install
npm run swagger # 範例專案需要加入 swagger 才能正確運行
npm start
確認無誤以後,可以按下 ctrl + c
來關閉當前 Node.js 運行,接下來就能使用 PM2 服務管理專案。
PM2 是一個 Node.js 應用的運行管理器,廣泛用於 Production 環境。它提供了多種功能,以確保專案運行得更佳穩定,並且對於新手來說相當容易上手。
在專案中,可以使用到以下指令來使用 PM2 管理 Node.js 專案。
# 一般 Node.js 服務
pm2 start
# Express generator 啟動方式(本範例是使用 Express generator)
pm2 start ./bin/www
輸入後,專案就與直接使用 npm start
無異,可以輸入 ip
來進入你當前的專案,不過除此之外,PM2 還有許多的功能,例如你可以輸入 pm2 monit
就能開啟例如下圖的監控介面,可以看到當前專案的運行狀態。
而 PM2 的指令相當多,在此就不一一介紹,可以參考以下常用指令:
pm2 restart {id, name} # 重啟特定服務
pm2 delete {id, name} # 移除特定服務
pm2 rename <old_name> <new_name> # 重新命名服務(`pm2 rename app myApp`)
pm2 list # 列出所有服務
# 以無中斷的方式重啟名為 'app' 的服務
pm2 reload app
# 直接重啟名為 'app' 的服務
pm2 restart app
# 以無中斷的方式重啟所有服務
pm2 reload all
# 直接重啟所有服務
pm2 restart all
PM2 除了使用指令操作以外,還可以建立設定檔案進行進階操作,例如 cluster 叢集、自動重啟機制。而在開頭的影片中,因為篇幅關係,並沒有介紹到設定檔的部分(真實原因:我忘記錄了)。
PM2 設定檔案可參考以下文件:
https://pm2.keymetrics.io/docs/usage/application-declaration/