iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
影片教學

Node.js 實戰密技與辦公室的小壞壞:即戰力釋放讓總裁的心動瞬間系列 第 19

從零租一台 VPS 主機,並且部署 Node.js 應用跑給你看(PM2) - Day19

  • 分享至 

  • xImage
  •  

上一集挖了坑,要來直接租一台機器給大家看,所以本集就會直接租一台機器,並且部署 Node.js 應用跑給大家看。本集會使用到的機器是 Linode,近期他們改名為 Akimai,但是我還是習慣叫他 Linode。

Linode 是一家美國的 VPS 主機商,他們的機器在全球都有機房,其中亞洲有 3 個機房,分別是東京、新加坡、孟買,而我們會使用的是東京機房,因為離台灣最近,所以速度會比較快。

除了位置以外,他算是我比較早接觸的 IaaS 服務,推薦的點在於:

  1. 可以預先儲值,如果你很擔心付款超過,可以先儲值完後刪掉信用卡(我是沒這麼極端啦...)
  2. 流量不需要另外付費,許多這類型服務流量都是另外計價的,像是 AWS 也是如此。流量另外付費就可能會延伸出一些問題,例如應用被攻擊,流量就會爆炸,這時候你就會被收到一筆很大的費用。
  3. 介面簡單:恩...,就簡單易懂。

本集因為會從零開始建置,所以流程上大致會包含以下內容:

  1. Ubuntu 環境建置:主要是準備 Node.js 及 PM2 環境
  2. 專案建置:在此會部署 Node.js 服務,從 GitHub 上 pull 專案直接運行
  3. PM2 管理:最後,會示範如何使用 PM2 管理 Node.js 專案

(本集 Linode 沒有贊助),那我們就開始吧!

Yes
影片連結: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 作業系統不會有太大差異,因此以下指令皆可運行,流程如下:

更新套件列表,在此是更新 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 管理專案

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 常用服務管理指令

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 設定檔

PM2 除了使用指令操作以外,還可以建立設定檔案進行進階操作,例如 cluster 叢集、自動重啟機制。而在開頭的影片中,因為篇幅關係,並沒有介紹到設定檔的部分(真實原因:我忘記錄了)。

PM2 設定檔案可參考以下文件:
https://pm2.keymetrics.io/docs/usage/application-declaration/


上一篇
IaaS、PaaS 是什麼?新手雲端主機怎麼選? Day18
下一篇
使用 GitHub Action 部署 Node.js 專案至虛擬主機上 Day20
系列文
Node.js 實戰密技與辦公室的小壞壞:即戰力釋放讓總裁的心動瞬間30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言