CHAPTER 11 / DEPLOYMENT

部署到
全世界

寫好的網站不上線等於沒寫。但部署有上千種方式:靜態站、SSR、Docker、邊緣運算... 這章把 Vercel、Zeabur、Cloudflare Pages、Cloudways 全部教完,包含每個的優缺點、價格、適合場景。

  • 會把任何網站放上網路(5 分鐘)
  • 會用 Vercel、Zeabur、Cloudflare Pages
  • 會處理環境變數、自訂網域、SSL
  • 會寫 Dockerfile、docker-compose
  • 會做 CI/CD(push 即部署)
LESSON 11.1

部署到底是什麼?

你寫好的網站在你電腦跑得很開心,但全世界的人怎麼看到?要把它放到一台24 小時開著的電腦(伺服器),給網域名稱(第 12 章),讓使用者輸入網址就能連到。

三大部署模式

LESSON 11.2

各家部署平台比較

平台強項價格推薦給
VercelNext.js 親兒子、超穩免費 / Pro $20Next 專案
Zeabur台灣公司、Docker / Node / Python 都吃免費 / Pro $5後端、台灣團隊
Cloudflare Pages全球邊緣、超大頻寬免費真免費靜態站、流量大
Cloudways託管 VPS、WordPress$11+ / 月WordPress、固定資源
Netlify類似 Vercel免費 / Pro $19靜態站
Railway後端友善$5 起後端、DB
Render容易免費 / $7+新手後端
Fly.io邊緣 + Docker$5+進階 Docker

新手三選一:
純前端 / Next.js → Vercel
有後端 / Docker → Zeabur
大流量靜態 / 想 0 元 → Cloudflare Pages

LESSON 11.3

Vercel(5 分鐘上線)

  1. 把專案推到 GitHub
  2. 到 vercel.com,登入 GitHub
  3. Import 你的 repo
  4. 確認框架(自動偵測 Next.js / Vite / Vue)
  5. 填環境變數(DATABASE_URL 等)
  6. Deploy → 1 分鐘後拿到 xxx.vercel.app

之後每次 git push 自動部署。PR 會自動生 preview URL。

自訂網域

Vercel 免費版超過頻寬會直接 ban 站。商用建議升 Pro。或用 Cloudflare Pages(流量真免費)。

LESSON 11.4

Zeabur:台灣的雲端

Zeabur 對 Vercel 的痛點下手——支援任何框架(Vercel 偏 Next)、有正式東京區、價格便宜、繁中支援、小團隊有真人客服。

什麼可以放

部署流程

  1. 到 zeabur.com 登入 GitHub
  2. 建 Project → 選 Region(東京)
  3. Add Service → 從 GitHub 選 repo
  4. 設環境變數
  5. 網域 Tab:用 xxx.zeabur.app 或綁自訂網域

放後端 + DB 的範例

同個 Project 裡開三個 Service:

內部用 service name 互相連線,不走外網。

SnowRealm 整套(Insight、YukiBoard 後端、毛行天下)跑在 Zeabur,東京區。對需要在台灣 / 亞洲低延遲的應用是首選。

LESSON 11.5

Cloudflare Pages

Cloudflare 把 200+ 城市的邊緣節點開放給你免費跑網站。頻寬無限、請求無限、build 500 次 / 月

適合場景

部署

  1. 登入 Cloudflare → Workers & Pages → Create Project
  2. 連 GitHub repo
  3. 選框架(自動偵測)
  4. 設環境變數、build command(npm run build)、輸出目錄(dist / .next
  5. Save and Deploy

Cloudflare Workers(serverless function)

// functions/api/hello.ts
export async function onRequest(ctx) {
  return new Response(JSON.stringify({ hi: 'world' }), {
    headers: { 'Content-Type': 'application/json' }
  });
}

Cloudflare Pages 跑 Next.js 限 SSG / 部分 SSR。完整 Next.js 還是 Vercel / Zeabur 順。靜態站 / Astro / Vue SPA Cloudflare 王者。

LESSON 11.6

Cloudways:託管 VPS

Vercel、Zeabur 是 PaaS(你只管 code)。Cloudways 比較像「半托管 VPS」——你選 DigitalOcean / AWS / GCP,它幫你裝 LAMP / LEMP,你直接上 WordPress / Laravel。

適合場景

價格

LESSON 11.7

Docker 入門

Docker 把你的 app 打包成一個「容器」,可以在任何地方一致地跑。

# Dockerfile
FROM node:20-alpine

WORKDIR /app
COPY package*.json ./
RUN npm ci --production

COPY . .
RUN npm run build

EXPOSE 3000
CMD ["npm", "start"]
docker build -t my-app .
docker run -p 3000:3000 my-app
# docker-compose.yml:一次跑多個服務
services:
  app:
    build: .
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://db/app
    depends_on:
      - db
  db:
    image: postgres:16
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata:
docker compose up -d

Zeabur、Fly.io、Railway 都吃 Dockerfile。寫一個 Dockerfile,到處部署。

LESSON 11.8

環境變數與 secrets

API key 不要寫在前端 code 裡。打開瀏覽器 view-source 一看就有。要呼叫第三方 API 一律走自己的後端代理。

LESSON 11.9

CI/CD:push 即部署

GitHub Actions 範例(push 到 main 自動跑測試):

# .github/workflows/ci.yml
name: CI
on:
  push:
    branches: [main]
  pull_request:

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - run: npm ci
      - run: npm run lint
      - run: npm test
      - run: npm run build

Vercel / Zeabur / CF Pages 都自動 push 部署,不用自己寫 CI 部署。GitHub Actions 用來跑測試、lint、安全掃描。

練習:把第 8 章部落格上線

  1. 推到 GitHub
  2. 用 Vercel 部署 → 確認可以打開
  3. 用 Zeabur 部署同個 repo → 比較速度
  4. 用 Cloudflare Pages 部署 → 比較
  5. 寫 Dockerfile,本機 docker run 起來
  6. 挑你最喜歡那個正式上線

常見卡關 FAQ

// 部署學員最常問的問題
本地跑得起來,部署上去 build 失敗?
90% 是環境變數沒設、Node 版本不一致(指定 "engines": {{"node": "20"}}),或檔案大小寫(Mac 不分,Linux 區分)。看 build log 通常會講。
我寫的 Express 部署到 Vercel 不能跑?
Vercel 是 serverless function,不能跑常駐 server。Express 要改寫成 Vercel Function,或部署到 Zeabur / Railway / Fly。
部署完發現網站很慢?
看 Region。SnowRealm 在台灣用戶多,選東京。部署到美國從台灣連會慢 200ms+。Vercel Pro 才有多區域。
免費方案夠跑商用嗎?
流量小(< 5000 月活)夠。但 SLA 沒保障、超流量會被擋。商業正式建議至少 $5~$20 / 月起。
怎麼預防部署上去就掛掉?
(1) 先在 staging 環境測;(2) 用 PR preview;(3) 加健康檢查 endpoint /health;(4) 設 uptime monitor(UptimeRobot 免費)。
← 上一章
11 DB