Python高级教程 第25章:Python高级部署与运维自动化
文章标签:
云服务器运行python程序
本章目标
通过本章学习,你将能够:
- 掌握 Python 应用的常见部署方式(虚拟环境、容器、云平台)
- 使用 Fabric、Ansible 等工具实现远程自动化运维
- 学会构建 Docker 化的 Python 应用
- 掌握 CI/CD 自动化部署流程
- 理解 Python 在 DevOps 中的应用
1. Python 应用部署方式
常见部署策略:
- 裸机部署:直接运行 Python 程序,适合小规模项目
- 虚拟环境部署:使用 venv / conda 管理依赖
- 容器化部署:使用 Docker 封装运行环境
- 云原生部署:Kubernetes / Serverless
2. 使用虚拟环境部署
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境
source venv/bin/activate # Linux / macOS
venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
3. Docker 化部署
Dockerfile 示例
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
构建与运行:
docker build -t myapp .
docker run -d -p 5000:5000 myapp
4. CI/CD 自动化部署
结合 GitHub Actions 或 Jenkins 实现自动化部署。
GitHub Actions 自动部署 Docker
name: Deploy Python App
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker Image
run: docker build -t myapp .
- name: Run Container
run: docker run -d -p 5000:5000 myapp
5. 使用 Fabric 进行远程自动化
Fabric 可以通过 SSH 自动化部署。
from fabric import Connection
def deploy():
c = Connection("user@server")
c.run("git pull origin main")
c.run("docker-compose down && docker-compose up -d --build")
运行:
fab deploy
6. 使用 Ansible 进行配置管理
Ansible 更适合大规模集群运维。
playbook.yml
- hosts: webservers
tasks:
- name: 安装 Python 依赖
pip:
name: flask
state: present
- name: 部署应用
copy:
src: app.py
dest: /opt/app/app.py
- name: 启动应用
shell: python /opt/app/app.py &
运行:
ansible-playbook -i inventory playbook.yml
7. Kubernetes 部署 Python 应用
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: python-app
spec:
replicas: 2
selector:
matchLabels:
app: python-app
template:
metadata:
labels:
app: python-app
spec:
containers:
- name: python-app
image: myapp:latest
ports:
- containerPort: 5000
部署:
kubectl apply -f deployment.yaml
8. 常见运维自动化场景
- 自动化日志收集(ELK、Fluentd)
- 自动化备份与恢复(数据库快照)
- 自动化监控与告警(Prometheus + Grafana)
- 滚动更新与回滚(K8s Deployment)
9. 实战练习
- 将一个 Flask 应用 Docker 化并部署到本地容器。
- 使用 Fabric 自动化更新远程服务器上的 Python 应用。
- 使用 Ansible 在多台服务器上部署相同的 Python 服务。
- 将 Python 应用部署到 Kubernetes 并实现滚动更新。
配图建议
- 图1:传统部署 vs 容器化部署对比图
- 图2:CI/CD 自动化流水线图
- 图3:Kubernetes 部署架构图
小结
本章介绍了 Python 应用的多种部署方式,包括虚拟环境、Docker、Kubernetes,并学习了 Fabric 和 Ansible 的自动化运维方法。结合 CI/CD,可以实现高效的自动化部署与运维管理。
