📌 第 16 小時:Python 部署與雲端應用(Deployment & Cloud Computing)
學完 Python 基礎後,將程式部署到雲端是重要的一步。本章將介紹:
- Python 應用程式的部署方式
- 使用
Flask
+Gunicorn
部署 Web 應用 - Docker 容器化應用
- 部屬到 AWS(Amazon Web Services)
- 使用 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。
🟢 步驟
- 註冊 AWS 帳戶:AWS 官網
- 啟動 EC2 伺服器
- 選擇 Ubuntu 伺服器
- 設定 允許 HTTP 及 SSH 存取
- 透過 SSH 連接伺服器
ssh -i your-key.pem ubuntu@your-ec2-ip
- 安裝 Python 與 Flask
sudo apt update sudo apt install python3-pip pip3 install flask gunicorn
- 啟動 Flask 應用
gunicorn -w 4 -b 0.0.0.0:5000 app:app
- 設定防火牆開放 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 的資安與測試,確保應用安全性!🚀
沒有留言:
張貼留言