温馨提示×

ubuntu怎么部署python

小樊
48
2026-09-10 09:58:18
栏目: 编程语言

在 Ubuntu 上部署 Python 项目,一般可以分为 环境准备 → 项目部署 → 运行/守护 → 可选反向代理 几个阶段。下面给你一套通用且实用的流程,适用于大多数 Python 项目(Web、脚本、API 等)。


一、系统环境准备

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装 Python 和 pip

Ubuntu 一般自带 Python3:

python3 --version

安装 pip:

sudo apt install python3-pip -y

3.(推荐)安装虚拟环境

sudo apt install python3-venv -y

二、部署 Python 项目(以 Web 项目为例)

1. 上传项目代码

# 示例目录
mkdir -p /opt/myproject
cd /opt/myproject

可用 scp / git clone 上传代码:

git clone https://github.com/yourname/yourproject.git .

2. 创建虚拟环境

python3 -m venv venv
source venv/bin/activate

安装依赖:

pip install -r requirements.txt

三、运行 Python 程序

方式一:直接运行(测试用)

python app.py

或(FastAPI / Flask):

uvicorn main:app --host 0.0.0.0 --port 8000

方式二:使用 systemd(生产推荐 ✅)

1. 编辑服务文件

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

2. 启动服务

sudo systemctl daemon-reload
sudo systemctl start myproject
sudo systemctl enable myproject

查看状态:

sudo systemctl status myproject

四、使用 Nginx 反向代理(可选但推荐)

1. 安装 Nginx

sudo apt install nginx -y

2. 配置反向代理

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

如果你愿意,可以告诉我:

  • ✅ Ubuntu 版本(20.04 / 22.04 / 24.04)
  • ✅ Python 版本
  • ✅ 项目类型(Flask / Django / 脚本 / AI)

我可以给你定制部署方案

0