阿里雲帳號安全認證 阿里雲Nodejs環境搭建

阿里雲國際 / 2026-04-26 11:32:26

前言:為什麼又要搭 Node.js 環境?

很多人第一次上手 Node.js,腦中想像通常是「npm install 一下就完事」。結果到了雲端,才發現世界並沒有那麼善良:還要開安全群組、設定端口、挑版本、處理環境變數、把服務守住不讓它半夜睡著,最好還要配上 Nginx 反代和 HTTPS。這篇文章就用比較「真人會遇到的狀況」來帶你把阿里雲 Node.js 環境搭起來,讓你的應用從本機起飛到線上起舞。

我會用一個典型目標來說明:你已經有一個 Node.js 專案(例如 Express、Koa 或 Next.js 的後端部分),你要把它部署在阿里雲 ECS 上,並提供網路存取(HTTP/HTTPS),而且服務能夠自動重啟、日誌可追、出問題能快速定位。

準備工作:你需要先決定的幾件事

1. 選擇你要用的阿里雲產品

阿里雲帳號安全認證 本教程以最常見的組合為主:ECS(彈性計算服務)+(可選)EIP + 安全群組 + Nginx/Node/PM2。你不一定要買最豪華的配置,但至少要確保 CPU、記憶體能跑你的服務。

若你只是測試,輕量等級也可以;若是正式上線,建議至少 2C/2G 起步(看你應用的特性)。當然,貪心是人類天性,但你也要留點預算給未來的優化。

2. 確認你的 Node.js 專案類型

不同類型對部署方式會有差異:

  • 純後端(Express/Koa):最簡單,跑一個入口檔即可。
  • 有前端框架(如 Next.js):可能需要 build/輸出,並配置不同的啟動方式。
  • 使用 WebSocket/長連線:需要注意反代與超時設定。

本文以「後端服務」為主來講,但你會看到一些通用原則,套到其他框架通常也沒問題。

登入阿里雲並建立伺服器(ECS)

登入阿里雲控制台後,找到 ECS,建立一台新實例。建議你在建立時注意下面幾點:

  • 作業系統:常見是 CentOS 或 Ubuntu。這篇文章用 Ubuntu(更直覺、工具新)。你若用 CentOS,命令名字可能稍有不同,我會在關鍵處提示。
  • 網路:選擇 VPC(私有網路)與子網路,或使用你熟悉的方案。
  • 阿里雲帳號安全認證 安全組:先別太佛系,後面要開端口。
  • 帶寬:不想被吃掉就選夠的。

建立完成後,你會得到一個公網 IP,之後用 SSH 登入。

設定安全群組:先讓人能連進來

你至少需要開放:

  • SSH(22):方便你遠端管理(建議只允許你的 IP,別對全世界開門)。
  • HTTP(80)與 HTTPS(443):如果你要用 Nginx 對外提供服務。
  • 或你的 Node 服務埠(例如 3000):不過通常 Node 服務只給本機/內網用,對外只開 Nginx。

建議做法是:外網只暴露 80/443,Node 只在內部埠跑,例如 3000,不把你的 Node 直接對全世界開放。這不是保守,是經驗。

SSH 連線到伺服器

在本機終端用以下方式登入:

ssh username@your_public_ip

如果你使用密鑰登入,確保私鑰檔權限設定合理(例如 chmod 600)。如果你不會,就當作這是雲端世界的「通行證驗證流程」。

更新系統並安裝常用工具

登入後,先把系統更新一下:

sudo apt update
sudo apt upgrade -y

阿里雲帳號安全認證 再安裝常用工具(你後面會一直用到):

sudo apt install -y curl vim git build-essential

阿里雲帳號安全認證 如果你準備用 Nginx,後面也會安裝。

安裝 Node.js:建議使用版本管理(不然你會後悔)

很多新手會直接用 apt 裝 Node.js,但通常版本偏舊或更新慢。更推薦使用 nvm(Node Version Manager)。因為你未來可能要升級、回滾、或不同專案需要不同版本。

安裝 nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

安裝完成後,重載環境變數:

source ~/.bashrc

確認 nvm 是否可用:

nvm --version

安裝你需要的 Node.js 版本

建議你先看專案的 package.json 裡的 engines 或你團隊慣用版本。例如:

node -v

若沒有本地資訊,通常選擇 LTS 版本較穩。例如安裝 Node 20 LTS:

nvm install 20
nvm use 20

設定預設版本:

nvm alias default 20

建立專案目錄與部署準備

你可以把專案放到例如:

/var/www/your-app

建立並進入目錄:

sudo mkdir -p /var/www/your-app
sudo chown -R $USER:$USER /var/www/your-app
cd /var/www/your-app

然後你可以用 git clone:

git clone your_repo_url .

或直接上傳檔案(例如用 SCP / SFTP),總之讓你的程式碼在伺服器上能跑。

安裝依賴並驗證應用可正常啟動

進入專案目錄後執行:

npm install

然後用以下方式先跑起來(假設你的 package.json 有 start 腳本):

npm run start

如果是 Express,通常你會看到類似「Server running on http://localhost:3000」的字樣。

若你只有 dev 模式:

npm run dev

但線上要用 start(避免開著熱更新那種「我在開發」的模式)。

設定環境變數:不要把密碼寫進程式

真實世界的痛點之一:資料庫密碼、API Key、JWT Secret。不要硬塞進程式或把它寫在 repo 裡。你可以使用幾種方式:

  • 在 shell 中 export(不建議長期,只是臨時驗證)。
  • 使用 PM2 的環境變數設定。
  • 使用 .env 檔(建議放在伺服器端,且在 .gitignore 排除)。

例如你用 .env,在伺服器上建立:

cp .env.example .env

然後修改:

vim .env

最後確保你的程式有讀取 dotenv(若需要)。例如 Express 常用 dotenv:

npm i dotenv

在入口檔加入:

require('dotenv').config()

使用 PM2 讓服務常駐(比硬等更可靠)

你把 Node 啟動後,如果終端關掉服務可能跟著掛。這就像你把麵端出來但不看,過一會兒就涼了。PM2 的價值在於:守護、重啟、日誌、狀態管理。

安裝 PM2

npm i -g pm2

用 PM2 啟動你的服務

假設你的入口是 server.js 或 package.json 的 start:你可以:

pm2 start npm --name your-app -- start

或直接指定檔案(看你專案結構)。

查看狀態:

pm2 status

查看日誌:

pm2 logs your-app

保存並設定開機自啟

pm2 save
pm2 startup

它會輸出一段你需要在系統層級執行的命令,照著貼上即可。搞定後重開機服務仍能自動起來。

配置 Nginx 作反向代理:把流量交給專業人士

Node 是專心寫程式的。Nginx 則是專心收發流量的。把它們搭配起來,你的世界會順一點。

安裝 Nginx

sudo apt install -y nginx

啟動:

sudo systemctl start nginx
sudo systemctl enable nginx

設定 Nginx 站點(對外提供)

編輯站點配置檔,常見位置是:

/etc/nginx/sites-available/default

或你可以建立新的配置檔再用符號連結。為了簡單,我先用 default 示範。

server 區塊中加入反代,例如 Node 服務在 localhost:3000:

server {
    listen 80;
    server_name your_domain_or_public_ip;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 60;
    }
}

注意:

  • server_name 可以是你的網域,或暫時用公網 IP(後面做 HTTPS 會更講究)。
  • 如果你有 WebSocket,上面的 Upgrade/Connection 要保留。
  • 端口要對應你 Node 啟動的埠。

檢查設定並重載 Nginx

sudo nginx -t
sudo systemctl reload nginx

現在你應該可以用瀏覽器打:

http://your_domain_or_ip/

看到你的應用頁面。

上 HTTPS:不做就像把安全門忘在家裡

阿里雲帳號安全認證 如果你有網域,通常建議上 HTTPS。阿里雲有自己的憑證服務或可使用 Let’s Encrypt。這裡給你一個通用思路:先確定網域指向你的 ECS(A 記錄 / CNAME),再簽發憑證並配置 Nginx。

使用 Certbot(Let’s Encrypt)範例

安裝 certbot:

sudo apt install -y certbot python3-certbot-nginx

執行:

sudo certbot --nginx -d your_domain -d www.your_domain

它會引導你選擇 HTTP 轉 HTTPS,並自動修改 Nginx。

測試完成後重載:

sudo systemctl reload nginx

設定 Node 服務的「真正啟動埠」與健康性

很多人把 Node 應用設定在 3000,但 Nginx 反代到 80/443;這是正常的。但你需要確保 Node 真的在對的埠監聽。

常見設定來源:

  • 程式內 process.env.PORT
  • 或你在啟動腳本中寫死埠號

建議在 PM2 啟動時顯式指定 PORT(若有用)。例如:

pm2 start npm --name your-app -- start --update-env

並確保你的 .env 或系統環境有 PORT=3000。

常見踩坑與排查方法(保命用)

1. Nginx 能啟動,但網站打不開

先檢查反代目標:

  • Node 是否真的在跑?:pm2 status
  • Node 是否監聽正確埠?:ss -lntp | grep 3000(把 3000 換成你的埠)
  • Nginx 設定是否正確?:sudo nginx -t

再看日誌:

sudo tail -n 200 /var/log/nginx/error.log
pm2 logs your-app

很多時候問題就藏在日誌裡,像是兇手留下的指紋。

2. Node 啟動後立刻退出

用 PM2 看最後一次退出原因:

pm2 logs your-app --lines 200

常見原因:

  • 缺少環境變數(例如連資料庫的密碼沒設定)
  • 依賴套件缺失(npm install 沒跑或跑了但版本不匹配)
  • Node 版本不相容(例如使用了某些語法)

確保你上線用的 Node 版本就是專案需要的版本。

3. 反代後前端資源(CSS/JS)404

如果你是單純後端 API,通常不會遇到。但若你把前端也交給同一個服務,可能需要確認:

  • 靜態檔案路徑是否正確
  • Express 靜態路由是否設定
  • Nginx 的 location 規則是否符合你的路徑

建議先用瀏覽器開發者工具看 Network 的請求路徑,然後對應程式路由與 Nginx 規則。

部署策略:你要怎麼上架下一版

搭完一次不等於永遠搞定。接下來你會遇到「要更新程式」這種人類常見任務。這裡提供幾種輕量策略:

  • 手動更新:pull 最新程式 -> npm install -> pm2 restart。
  • 腳本化更新:寫一個 deploy.sh,包含 git pull、npm install、pm2 reload。
  • CI/CD:如果你團隊有流程,可以用 GitHub Actions 或其他工具直接部署。

手動可以先跑起來,腳本可以避免你每次都忘東忘西(人類嘛,會累是正常的)。

監控與備份:讓你睡得著的最後一塊拼圖

服務要活著,就要有人看它。最低限度你可以做到:

  • PM2 日誌:追蹤錯誤與性能波動。
  • 系統資源監控:CPU、記憶體、磁碟是否飆高。
  • 錯誤告警:例如有條件就用告警工具或簡單的監控面板。

備份也很重要:資料庫要有備份,檔案上傳要有持久化方案(不要只放在本機,因為伺服器就像貓一樣:你不看它就不知道會跑去哪)。

一個「完整流程」小結(照著做就能跑)

如果你想要把本文串成一條流水線,可以記住這個順序:

  1. 建立 ECS,並設定安全群組開放 22/80/443(建議 22 限制 IP)。
  2. SSH 登入,更新系統並安裝常用工具。
  3. 安裝 nvm,安裝並切換到專案需要的 Node.js LTS/指定版本。
  4. 把專案放到伺服器,執行 npm install。
  5. 設定 .env 或 PM2 環境變數,確保 PORT/密碼等都有。
  6. 用 PM2 啟動服務,設定開機自啟。
  7. 安裝並設定 Nginx,反向代理到 localhost:你的 Node 埠。
  8. (可選但強烈建議)配置 HTTPS。
  9. 用日誌排查問題,最後再做持續部署與監控。

結語:你不是在搭環境,你是在建立上線的肌肉記憶

「阿里雲 Node.js 環境搭建」看似瑣碎,其實每一步都是在建立你日後上線的肌肉記憶。起初會覺得麻煩,等你真的把服務跑穩、日誌看懂、Nginx 反代搞定,你就會發現:以前覺得很難的東西,現在變成可以重複的流程。

如果你照做後遇到錯誤,不要急著懷疑人生,先看:

  • PM2 日誌(通常是最直接的答案)
  • Nginx error.log(反代問題的寶庫)
  • 阿里雲帳號安全認證 端口監聽與環境變數(最常漏)

祝你上線順利。你的服務應該像咖啡一樣:不香不行,但也不要讓它一直冷著。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系