2025年3月6日 星期四

Python 18 小時入門--第 16 小時:Python 部署與雲端應用(Deployment & Cloud Computing)

 📌 第 16 小時:Python 部署與雲端應用(Deployment & Cloud Computing)

學完 Python 基礎後,將程式部署到雲端是重要的一步。本章將介紹:

  1. Python 應用程式的部署方式
  2. 使用 Flask + Gunicorn 部署 Web 應用
  3. Docker 容器化應用
  4. 部屬到 AWS(Amazon Web Services)
  5. 使用 GitHub Actions 進行 CI/CD(自動化部署)

🔹 1. Python 應用部署方式

Python 應用的部署方式有:

方式 適用場景 優勢
本地運行 測試、小型應用 方便開發,但無法遠端存取
伺服器部署(Flask + Gunicorn) Web 應用、API 適合一般後端應用
Docker 容器化 雲端部署、微服務 環境獨立,適合 CI/CD
雲端平台(AWS, Google Cloud, Heroku) 大規模應用 可自動擴展,適合商業應用

🔹 2. Flask + Gunicorn 部署 Web 應用

Flask 是 Python 的輕量級 Web 框架,可用於開發 API 或網站。

🟢 安裝 Flask

pip install flask gunicorn

🟢 建立 app.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "歡迎來到 Python 部署測試!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

📌 這是最簡單的 Flask 伺服器,啟動後可透過 http://127.0.0.1:5000/ 訪問。


🟢 使用 Gunicorn 運行

Gunicorn 是 生產環境(Production) 用來部署 Flask 的 WSGI 伺服器:

gunicorn -w 4 -b 0.0.0.0:5000 app:app

📌 這會啟動 4 個 Worker 處理請求,提高效能。


🔹 3. Docker 容器化應用

Docker 可以將 Python 應用打包成容器,方便跨平台部署。

🟢 安裝 Docker

官方下載

🟢 建立 Dockerfile

# 使用 Python 官方映像檔
FROM python:3.10

# 設定工作目錄
WORKDIR /app

# 複製程式碼到容器內
COPY . .

# 安裝 Flask
RUN pip install flask gunicorn

# 執行 Flask 伺服器
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:5000", "app:app"]

🟢 建立 Docker 容器

docker build -t my-python-app .

🟢 運行 Docker 容器

docker run -p 5000:5000 my-python-app

📌 這樣 Python Web 應用就可以在 Docker 容器內運行!


🔹 4. 部署到 AWS(Amazon Web Services)

AWS 是最受歡迎的雲端平台,這裡示範 部署 Flask 到 AWS EC2

🟢 步驟

  1. 註冊 AWS 帳戶AWS 官網
  2. 啟動 EC2 伺服器
    • 選擇 Ubuntu 伺服器
    • 設定 允許 HTTP 及 SSH 存取
  3. 透過 SSH 連接伺服器
    ssh -i your-key.pem ubuntu@your-ec2-ip
    
  4. 安裝 Python 與 Flask
    sudo apt update
    sudo apt install python3-pip
    pip3 install flask gunicorn
    
  5. 啟動 Flask 應用
    gunicorn -w 4 -b 0.0.0.0:5000 app:app
    
  6. 設定防火牆開放 5000 端口
    sudo ufw allow 5000
    

📌 訪問 http://your-ec2-ip:5000/,即完成 AWS 部署!


🔹 5. 使用 GitHub Actions 進行 CI/CD

CI/CD(持續整合與持續部署)可以讓 Python 應用自動化部署

🟢 建立 GitHub Actions

在 GitHub 專案根目錄 建立 .github/workflows/deploy.yml

name: Deploy Python App

on:
  push:
    branches:
      - main  # 當 main 分支有新 commit 時執行

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: 取得程式碼
      uses: actions/checkout@v2

    - name: 設定 Python 環境
      uses: actions/setup-python@v2
      with:
        python-version: '3.10'

    - name: 安裝依賴
      run: pip install flask gunicorn

    - name: 部署應用(假設使用 SSH)
      run: |
        ssh -i ${{ secrets.SSH_KEY }} ubuntu@your-ec2-ip "cd /app && git pull && systemctl restart flask"

📌 當你 Push 程式碼到 main 分支時,GitHub Actions 會自動部署到 AWS 伺服器。


📌 第 16 小時小結

Flask 可用於開發 Python Web 應用,Gunicorn 可在生產環境運行
Docker 可以將 Python 應用容器化,方便部署
AWS EC2 可用於部署 Flask 應用
GitHub Actions 可用於 CI/CD 自動化部署

學完這一章,你已掌握 Python 應用部署與雲端技術,下一步將學習 Python 的資安與測試,確保應用安全性!🚀

沒有留言:

張貼留言