在 Ubuntu 上部署 Python 项目,一般可以分为 环境准备 → 项目部署 → 运行/守护 → 可选反向代理 几个阶段。下面给你一套通用且实用的流程,适用于大多数 Python 项目(Web、脚本、API 等)。
sudo apt update
sudo apt upgrade -y
Ubuntu 一般自带 Python3:
python3 --version
安装 pip:
sudo apt install python3-pip -y
sudo apt install python3-venv -y
# 示例目录
mkdir -p /opt/myproject
cd /opt/myproject
可用 scp / git clone 上传代码:
git clone https://github.com/yourname/yourproject.git .
python3 -m venv venv
source venv/bin/activate
安装依赖:
pip install -r requirements.txt
python app.py
或(FastAPI / Flask):
uvicorn main:app --host 0.0.0.0 --port 8000
sudo nano /etc/systemd/system/myproject.service
示例内容:
[Unit]
Description=My Python Project
After=network.target
[Service]
User=ubuntu
WorkingDirectory=/opt/myproject
ExecStart=/opt/myproject/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myproject
sudo systemctl enable myproject
查看状态:
sudo systemctl status myproject
sudo apt install nginx -y
sudo nano /etc/nginx/sites-available/myproject
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
启用:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable
| 类型 | 推荐方式 |
|---|---|
| Flask / FastAPI | uvicorn + systemd + nginx |
| Django | gunicorn + systemd + nginx |
| 爬虫 / 脚本 | venv + cron / systemd timer |
| AI 模型 | venv + GPU 驱动 + API 服务 |
apt update
apt install python3-venv nginx
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
systemctl start myproject
如果你愿意,可以告诉我:
我可以给你定制部署方案。