AWS 部署教學:從零開始部署你的第一個應用程式【2025】

AWS 部署教學:從零開始部署你的第一個應用程式【2025】

引言:為什麼選擇 AWS?

「我想把程式部署到雲端,但不知道該用什麼。」

如果你問十個工程師,大概有六個會說:「試試 AWS。」

AWS(Amazon Web Services)是目前全球市佔率最高的雲端平台。

從新創公司到大型企業,無數的網站和應用程式都跑在 AWS 上。

但對新手來說,AWS 的學習曲線確實很陡。

光是進入 Console,就會看到上百種服務,完全不知道該從哪裡開始。

這篇文章會帶你:

  1. 了解 AWS 常用的部署服務
  2. 選擇適合你的部署方式
  3. 實際完成一次 EC2 部署
  4. 避開新手常踩的坑

讀完這篇,你就能自己把程式部署到 AWS 了。

aws-console-services-overview-developer-learning

AWS 部署前的準備

註冊 AWS 帳號

如果你還沒有 AWS 帳號,先去註冊一個。

註冊網址: https://aws.amazon.com/

註冊時需要:

  • Email 地址
  • 信用卡(用於驗證身份,免費方案不會扣款)
  • 手機號碼(接收驗證碼)

重要提醒:

註冊後會自動獲得 12 個月的免費方案。但有些服務超過免費額度會收費。

務必設定帳單警報,避免意外費用。

了解 AWS 免費方案

AWS 免費方案(Free Tier)包含:

服務 免費額度 限制
EC2 750 小時/月 t2.micro 或 t3.micro
Lambda 100 萬次請求/月 每月
S3 5GB 儲存空間 12 個月
RDS 750 小時/月 db.t2.micro

注意: 免費方案有 12 個月期限。過期後會開始計費。

選擇適合的 AWS 服務

AWS 有太多服務了。

對於部署應用程式,主要用這幾種:

服務 適合情境 學習曲線 費用
EC2 需要完全控制的伺服器 按時計費
Elastic Beanstalk 快速部署,不想管伺服器 免費(底層資源收費)
Lambda 事件驅動、短時間任務 按請求計費
ECS/EKS 容器化應用、微服務 很高 按資源計費
Lightsail 簡單的 VPS 需求 固定月費

新手建議路線:

  • 想學完整流程 → EC2
  • 想快速上線 → Elastic BeanstalkLightsail
  • 只需要跑 Function → Lambda

AWS 部署方式比較

讓我詳細比較四種主要的部署方式。

EC2(虛擬主機)

EC2(Elastic Compute Cloud) 就是一台雲端虛擬機器。

你可以完全控制它,就像擁有一台自己的伺服器。

優點:
- 完全控制:可以安裝任何軟體
- 彈性配置:CPU、記憶體、硬碟都可調整
- 適合任何語言和框架

缺點:
- 需要自己管理:安全更新、監控、備份
- 學習曲線陡:需要會 Linux 基礎
- 閒置也要付費

適合: 需要完整伺服器控制、學習 DevOps、長時間運行的服務

Elastic Beanstalk(PaaS)

Elastic Beanstalk 是 AWS 的 PaaS(Platform as a Service)。

你只需要上傳程式碼,AWS 幫你處理其他所有事。

優點:
- 快速部署:幾分鐘就能上線
- 自動管理:自動擴展、負載平衡、健康檢查
- 支援多種語言:Node.js、Python、Java、.NET 等

缺點:
- 客製化受限:不像 EC2 那麼自由
- 底層仍收費:實際上是幫你建 EC2、RDS 等資源

適合: 想快速上線、不想管伺服器、標準 Web 應用

Lambda(Serverless)

Lambda 是無伺服器(Serverless)運算。

你只需要寫函數,AWS 幫你執行。

優點:
- 按請求付費:沒人用就不用錢
- 自動擴展:1 請求和 100 萬請求都能處理
- 不用管伺服器:完全專注在程式碼

缺點:
- 冷啟動:閒置後第一次請求會慢
- 執行時間限制:最長 15 分鐘
- 不適合持續運行的服務

適合: API Gateway 後端、事件處理、排程任務

ECS/EKS(容器)

ECS(Elastic Container Service)EKS(Elastic Kubernetes Service) 是容器管理服務。

優點:
- 環境一致:Docker 容器確保到處都能跑
- 微服務友善:適合複雜的服務架構
- 可攜性高:不綁定 AWS

缺點:
- 學習曲線很陡:需要會 Docker、K8s
- 設定複雜:網路、權限、儲存都要設定

適合: 微服務架構、大型團隊、已經用 Docker

aws-service-selection-decision-flowchart

實戰:使用 EC2 部署 Node.js 應用

接下來,我們實際用 EC2 部署一個 Node.js 應用。

這個流程會讓你理解完整的伺服器部署過程。

Step 1:建立 EC2 實例

  1. 登入 AWS Console
  2. 在服務中找到「EC2」
  3. 點擊「Launch Instance」

設定選項:

項目 建議設定
Name my-first-app
AMI Amazon Linux 2023
Instance Type t2.micro(免費方案)
Key Pair 建立新的 Key Pair(下載保存好!)
Network 使用預設 VPC
Security Group 新建,開放 22 和 80 Port

重要: Key Pair 只能下載一次。下載的 .pem 檔案要妥善保管,弄丟就無法 SSH 連線。

Step 2:設定安全群組

安全群組(Security Group)就是防火牆規則。

需要開放的 Port:

Port 用途
22 SSH 連線
80 HTTP 網站
443 HTTPS 網站
3000 Node.js 開發用(可選)

設定方式:

  1. 在 EC2 Dashboard 找到「Security Groups」
  2. 選擇你的安全群組
  3. 點擊「Edit inbound rules」
  4. 新增上述規則

安全提醒: 不要把 22 Port 開放給 0.0.0.0/0(全世界)。建議設定只允許你的 IP。

Step 3:SSH 連線到伺服器

EC2 實例啟動後,用 SSH 連線進去。

在 Mac/Linux:

# 設定 Key 檔案權限
chmod 400 your-key.pem

# SSH 連線
ssh -i "your-key.pem" ec2-user@你的公開IP

在 Windows:

使用 PuTTY 或 Windows Terminal。

連線成功後,你會看到 Amazon Linux 的歡迎畫面。

Step 4:安裝 Node.js 環境

連線進伺服器後,安裝 Node.js:

# 更新系統
sudo yum update -y

# 安裝 Node.js(使用 nvm)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
source ~/.bashrc

# 安裝 Node.js LTS 版本
nvm install --lts
nvm use --lts

# 確認安裝
node -v
npm -v

Step 5:部署程式碼

有幾種方式可以把程式碼放到伺服器:

方式一:Git Clone(推薦)

# 安裝 Git
sudo yum install git -y

# Clone 你的專案
git clone https://github.com/你的帳號/你的專案.git
cd 你的專案

# 安裝相依套件
npm install

# 啟動應用
node app.js

方式二:SCP 上傳

# 在本機執行
scp -i your-key.pem -r ./my-project ec2-user@你的IP:~/

Step 6:設定 PM2 與 Nginx

直接用 node app.js 跑程式,一旦 SSH 斷線就會停止。

用 PM2 讓程式在背景持續運行:

# 安裝 PM2
npm install -g pm2

# 用 PM2 啟動
pm2 start app.js --name my-app

# 設定開機自動啟動
pm2 startup
pm2 save

接著安裝 Nginx 作為反向代理:

# 安裝 Nginx
sudo yum install nginx -y

# 啟動 Nginx
sudo systemctl start nginx
sudo systemctl enable nginx

設定 Nginx 反向代理:

sudo nano /etc/nginx/conf.d/my-app.conf

加入以下內容:

server {
    listen 80;
    server_name 你的網域或IP;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

重啟 Nginx:

sudo systemctl restart nginx

現在打開瀏覽器,輸入你的 EC2 公開 IP,應該就能看到你的網站了!

ec2-deployment-architecture-nginx-nodejs-diagram

AWS 部署常見問題

連線被拒絕

症狀: SSH 連不上,顯示 Connection refused

常見原因:

  1. 安全群組沒開 Port 22
    - 檢查 Inbound rules 有沒有 SSH 規則

  2. IP 不對
    - 確認用的是「Public IPv4 address」

  3. Key 檔案權限錯誤
    - 執行 chmod 400 your-key.pem

  4. 實例未運行
    - 檢查 Instance State 是 Running

權限不足

症狀: 執行指令顯示 Permission denied

解決方法:

# 使用 sudo 提升權限
sudo yum install nginx

# 或切換到 root
sudo su -

費用超支

症狀: 收到意外的 AWS 帳單

預防方法:

  1. 設定帳單警報
    - 進入 Billing → Budgets
    - 設定超過特定金額就發 Email 通知

  2. 關閉不用的資源
    - 不用的 EC2 實例要 Terminate(不只是 Stop)
    - 刪除不用的 EBS Volume

  3. 使用 Cost Explorer
    - 定期檢查費用來源

aws-cost-explorer-budget-monitoring-dashboard

FAQ 常見問題

Q1:AWS 免費方案真的免費嗎?

在免費額度內是免費的。

但要注意:
- 12 個月後會開始收費
- 超過免費額度會收費
- 有些服務沒有免費方案

建議: 設定帳單警報,一旦超過預期就會收到通知。

Q2:EC2 實例 Stop 和 Terminate 有什麼差別?

動作 效果 EBS Volume 費用
Stop 暫停實例 保留 EBS 要錢,EC2 不用
Terminate 刪除實例 預設刪除 完全免費

建議: 不用的實例直接 Terminate,避免 EBS 持續計費。

Q3:我需要學 Linux 才能用 AWS 嗎?

用 EC2 的話,需要基礎的 Linux 知識。

如果不想學 Linux:
- 用 Elastic Beanstalk:上傳程式碼就好
- 用 Lightsail:有圖形介面
- 用 Amplify:前端專案最簡單

Q4:AWS 和 Vercel/Railway 怎麼選?

需求 選擇
快速上線、不管伺服器 Vercel、Railway
需要完整控制、學習 DevOps AWS EC2
企業級、大規模 AWS
預算有限 Railway、Render

Q5:部署到 AWS 後怎麼綁定網域?

  1. 購買網域(Route 53 或其他)
  2. 在 Route 53 建立 Hosted Zone
  3. 新增 A Record 指向 EC2 的 Elastic IP
  4. 等待 DNS 生效(通常幾分鐘到幾小時)

結語:AWS 是進階選擇,但值得學習

AWS 確實比 Vercel、Railway 複雜很多。

但學會 AWS,你會獲得:

  • 完整的基礎設施知識
  • 業界最廣泛使用的技能
  • 更多的客製化彈性

如果你是新手,建議先從簡單的平台開始(Vercel、Railway)。

等需要更多控制時,再來學 AWS。

如果你已經決定要用 AWS,今天就試著完成第一次 EC2 部署吧。

其他雲端選擇請參考 GCP 部署完整指南

部署基礎知識請見 程式部署完整指南:從零開始學會 Deploy 的所有知識

Node.js 部署詳解請見 Node.js 部署教學:從本機到雲端完整指南

aws-learning-roadmap-beginner-advanced-expert

雲端部署搞不懂?

AWS、GCP、Azure,選擇困難?讓我們幫你找出最適合的雲端方案。

諮詢雲端方案


參考資料

  1. AWS Documentation - Getting Started with Amazon EC2 (2025)
  2. AWS Free Tier - What's Included (2025)
  3. Amazon EC2 User Guide for Linux Instances (2025)
  4. PM2 Documentation - Quick Start (2025)
  5. Nginx Documentation - Beginner's Guide (2025)
分享文章:
V

VibeFix

專門解決 AI Vibe Coding 後的疑難雜症,讓你的專案順利上線。

這篇文章有幫到你嗎?

如果還有問題,讓我們直接幫你解決!

聯繫我們