为什么不直接 python app.py 跑生产
开发时 python main.py 能跑,但那是单进程、无守护、断线就停,根本扛不住生产流量。在雨云云服务器上把 Python 后端跑稳,标准做法是:虚拟环境隔离依赖 + Gunicorn 多 worker 起服务 + Nginx 做反向代理和静态分流 + systemd 保活。这样进程挂了会自动拉起,重启服务器也能自己起来。
一、选购与系统准备
Python 后端吃 CPU 和内存,API 类轻服务 1 核 2G 起步,有数据库或重计算建议 2 核 4G。系统选 Ubuntu 22.04,自带 Python 3.10。购买走 雨云专属入口 jiyueip.com/link/5617 填优惠码 admin01 五折,国内节点记得备案。
二、建虚拟环境并装依赖
sudo apt install -y python3-venv
python3 -m venv venv
source venv/bin/activate
pip install flask gunicorn用虚拟环境能避免把包装进系统 Python,以后迁移也干净。
三、用 Gunicorn 起服务
假设入口文件 app.py 里是 app = Flask(__name__)。起 4 个 worker:
gunicorn -w 4 -b 127.0.0.1:8000 app:app绑定 127.0.0.1 而不是 0.0.0.0,让 Nginx 在前面对外,Gunicorn 不直接暴露公网更安全。FastAPI 则用 gunicorn -k uvicorn.workers.UvicornWorker -w 4 app:app。
四、Nginx 反向代理
装 Nginx,新建站点配置 /etc/nginx/sites-available/myapi:
server {
listen 80;
server_name your.domain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}软链到 sites-enabled 后 nginx -t && systemctl reload nginx。域名解析到服务器 IP,就能通过域名访问接口了。
五、systemd 保活
写 /etc/systemd/system/myapi.service:
[Unit]
Description=My Python API
After=network.target
[Service]
WorkingDirectory=/home/ubuntu/myapi
ExecStart=/home/ubuntu/myapi/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
Restart=always
User=ubuntu
[Install]
WantedBy=multi-user.targetsystemctl enable –now myapi 后进程崩溃会自动重启,服务器重启也会自启。
合规使用提醒
本文部署方式仅用于合法的开发测试、业务接口、内部工具等场景。在中国大陆用雨云国内节点对外提供 Web 服务须完成 ICP 备案;接口若涉及用户个人信息,须遵守《个人信息保护法》。不得利用云服务器搭建违法违规服务。






