Ubuntu上Python项目如何部署

作者:袖梨 2026-08-16

Ubuntu上Python项目部署完整流程

Ubuntu上Python项目怎么部署

1. 准备基础环境

确保Ubuntu服务器已安装Python 3、pip及虚拟环境工具(避免全局依赖冲突):

sudo apt updatesudo apt install python3 python3-pip python3-venv -y

验证安装:

python3 --version# 确认Python版本(如3.8+)pip3 --version # 确认pip可用

2. 部署项目文件

将本地Python项目上传至服务器(如通过scp或Git):

scp -r /local/project/path username@server_ip:/remote/deploy/path

进入项目目录,检查requirements.txt(项目依赖清单)是否存在。

3. 创建并激活虚拟环境

在项目根目录下创建虚拟环境,隔离项目依赖:

python3 -m venv myenv# 创建名为myenv的虚拟环境source myenv/bin/activate# 激活环境(终端提示符显示(myenv))

激活后,后续操作均在虚拟环境中进行。

4. 安装项目依赖

通过requirements.txt安装所有依赖(确保本地与服务器依赖一致):

pip install --upgrade pip# 升级pip避免兼容性问题pip install -r requirements.txt

5. 运行项目(开发测试)

根据项目类型启动应用(以Flask为例):

python app.py# 若app.py是入口文件且包含Flask.run()

或使用Gunicorn(生产级WSGI服务器,提升性能):

pip install gunicorn# 安装Gunicorngunicorn -w 4 -b 127.0.0.1:8000 app:app# 4个工作进程,绑定本地8000端口

注:app:app表示app.py文件中的app对象(Flask/Django应用实例)。

6. 配置Nginx反向代 理(生产必备)

Nginx作为前端服务器,处理静态文件、负载均衡及SSL终止,将请求转发至Gunicorn:

  1. 安装Nginx:
    sudo apt install nginx -y
  2. 创建自定义配置文件(如/etc/nginx/sites-available/myapp):
    sudo nano /etc/nginx/sites-available/myapp
    添加以下内容(替换your_domain_or_ip和端口):
    server {listen 80;server_name your_domain_or_ip;# 替换为域名或IPlocation / {proxy_pass http://127.0.0.1:8000;# 转发至Gunicornproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# 可选:处理静态文件(如CSS/JS)location /static/ {alias /remote/deploy/path/static/;# 替换为项目静态文件路径}}
  3. 启用配置:
    sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -t# 测试配置语法sudo systemctl reload nginx# 重新加载Nginx

7. 设置Systemd服务(开机自启)

通过systemd管理应用进程,确保服务器重启后自动启动:

  1. 创建服务文件(如/etc/systemd/system/myapp.service):
    sudo nano /etc/systemd/system/myapp.service
    添加以下内容(替换路径、用户及端口):
    [Unit]Description=Gunicorn Server for My Python AppAfter=network.target[Service]User=your_username# 替换为运行应用的用户(如ubuntu)Group=www-data# 通常用www-data(Nginx用户)WorkingDirectory=/remote/deploy/path# 项目根目录Environment="PATH=/remote/deploy/path/myenv/bin"# 虚拟环境路径ExecStart=/remote/deploy/path/myenv/bin/gunicorn --workers 4 --bind unix:/run/myapp.sock app:appRestart=always# 崩溃后自动重启RestartSec=10 # 重启间隔10秒[Install]WantedBy=multi-user.target
  2. 启动并启用服务:
    sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myapp# 开机自启
  3. 检查服务状态:
    sudo systemctl status myapp# 查看运行状态

8. 可选优化:使用Docker部署(环境一致性)

若需更彻底的环境隔离,可使用Docker打包应用:

  1. 创建Dockerfile(项目根目录):
    FROM python:3.9-slim# 使用轻量级Python镜像WORKDIR /appCOPY . .RUN pip install --no-cache-dir -r requirements.txtEXPOSE 8000CMD ["gunicorn", "--workers", "4", "--bind", "0.0.0.0:8000", "app:app"]
  2. 构建镜像:
    docker build -t my-python-app .
  3. 运行容器:
    docker run -d -p 8000:8000 --name myapp my-python-app
  4. 结合Nginx反向代 理(同步骤6),将请求转发至localhost:8000

关键注意事项

  1. 权限问题:避免使用root用户运行应用,推荐用普通用户(如ubuntu)+ www-data组。
  2. 端口开放:若使用云服务器,需在安全组中开放80(HTTP)、443(HTTPS)端口。
  3. 静态文件:Django/Flask的静态文件需单独配置(如Nginx的location /static/)。
  4. HTTPS:建议使用Let’s Encrypt免费证书(certbot)配置HTTPS,提升安全性。

以上流程覆盖了Ubuntu上Python项目从环境准备到生产部署的关键步骤,可根据项目类型(Flask/Django/FastAPI等)调整细节。

相关文章

精彩推荐