Day39 — Python Web 部署 / Go 部署 / Supervisor 进程管理
原始资料:
raw/day39-web-application-deployment.md来源:Egon 林海峰运维课程 day39
内容概览
本篇涵盖三大主题:
- Python Web 应用部署(Django + uWSGI + Nginx)— 完整端到端流程
- Go 程序编译部署 — 编译型语言部署范式
- Supervisor 进程管理 — 生产级进程守护工具
核心知识点
1. Python 部署协议体系
| 层级 | 协议/接口 | 角色 |
|---|---|---|
| Nginx ↔ uWSGI | uwsgi 协议(二进制)或 HTTP | 反向代理与上游通信 |
| uWSGI ↔ Python 应用 | WSGI 协议 | 应用服务器与框架通信 |
2. uWSGI 两种上游协议
| 配置 | 协议 | 特点 |
|---|---|---|
socket = :8080 | uwsgi 协议 | 配合 uwsgi_pass,性能更高,生产推荐 |
http = :8080 | HTTP 协议 | 可被浏览器直接访问,通用但略慢 |
3. Nginx 三种转发指令
| 指令 | 协议 | 配合上游 | 场景 |
|---|---|---|---|
uwsgi_pass | uwsgi 协议 | uWSGI socket 模式 | Python 同步 Web(生产) |
proxy_pass | HTTP 协议 | Go 二进制 / uWSGI HTTP 模式 / Daphne | 通用 HTTP 反向代理 |
fastcgi_pass | FastCGI 协议 | PHP-FPM | PHP 应用 |
4. Go 部署独特性
Go 是编译型语言,go build 产出独立二进制文件,自带 HTTP 服务器(标准库 net/http),部署时无需额外的应用服务器。
5. Supervisor
将应用作为子进程管理,实现后台运行 + 故障自动重启。配置在 /etc/supervisord.d/*.ini,通过 supervisorctl 控制。
部署流程对比
Python(Django + uWSGI + Nginx)
① 环境准备 → ② 安装 MySQL → ③ 编译 Python 3.10 → ④ 部署 Django 代码
→ ⑤ 初始化数据库 → ⑥ 配置 uWSGI(socket)→ ⑦ 配置 Nginx(uwsgi_pass)
Go
① 安装 Go → ② 编译源码(go build)→ ③ 修改配置 → ④ 初始化数据库
→ ⑤ 直接运行二进制 → ⑥ 配置 Nginx(proxy_pass)
关键配置速查
uWSGI
[uwsgi]
socket = :8080
chdir = /blog/DjangoBlog-master/
module = djangoblog.wsgi:application
processes = 4
threads = 2
master = True
max-requests = 5000
daemonize = /var/log/uwsgi.logNginx(代理 uWSGI)
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:8080;
}Nginx(代理 Go)
location / {
proxy_pass http://127.0.0.1:8383;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}Supervisor
[program:uwsgi]
command=/usr/local/bin/uwsgi --ini /blog/uwsgi.ini
directory=/blog
autostart=true
autorestart=true
user=root
stdout_logfile=/var/log/supervisor/uwsgi.logNginx 转发指令全景
# uwsgi 协议 → uWSGI 服务(Python 生产推荐)
uwsgi_pass 127.0.0.1:8080;
# HTTP 协议 → Go 二进制 / uWSGI HTTP 模式 / Daphne
proxy_pass http://127.0.0.1:8383;
# FastCGI 协议 → PHP-FPM
fastcgi_pass 127.0.0.1:9000;参见
- Python 体系架构 — WSGI / ASGI / uWSGI / Daphne
- Go 程序部署 — 编译型语言架构
- Supervisor 进程管理 — 进程守护工具
- 架构对比总结 — 各语言部署方式对比
- Web 应用架构基础 — CGI / FastCGI 核心概念
- Nginx — Web 服务器 / 反向代理
- LNMP 架构与部署 — PHP 体系部署对比
- CGI/FastCGI/WSGI 架构