首页 > 编程语言 >如何在Ubuntu上部署Python项目

如何在Ubuntu上部署Python项目

来源:互联网 2026-07-31 19:43:06

在Ubuntu上部署Python项目需依次环境准备、项目上传、虚拟环境创建、依赖安装、Gunicorn启动、Nginx反向代理及Systemd服务设置,可选Docker打包,确保生产稳定运行。

Ubuntu上Python项目部署完整流程

如何在Ubuntu上部署Python项目

长期稳定更新的攒劲资源: >>>点此立即查看<<<

在Ubuntu上部署Python项目,其实说白了就是一套标准流程:从环境准备、项目上传,到依赖管理、服务启动,再到反向袋里和开机自启。把这些环节串起来,就能让项目稳定跑在生产环境里。下面按步骤走一遍,每个环节都有对应的命令和注意事项。

1. 准备基础环境

服务器到手后的第一件事,就是确认Python环境。Ubuntu通常自带Python 3,但为了保险,还是手动装一遍,顺便把pip和虚拟环境工具也带上——虚拟环境这东西能避免全局依赖打架,省心不少。

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

装完检查一下版本,确保Python 3.8以上,pip能用:

python3 --version
pip3 --version

2. 部署项目文件

本地项目怎么传到服务器?最常用的方式是通过scp复制整个目录,或者用Git拉取代码。这里以scp为例:

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

上传后进入项目目录,先看看有没有requirements.txt这个文件——这是依赖清单,后面安装依赖全靠它。

3. 创建并激活虚拟环境

在项目根目录下创建虚拟环境,把依赖装进独立空间,不污染系统全局:

python3 -m venv myenv
source myenv/bin/activate

激活后终端提示符会变成(myenv) user@server,这时候所有操作都在虚拟环境里进行。

4. 安装项目依赖

requirements.txt安装依赖。可以先升级pip,避免版本太旧导致兼容问题:

pip install --upgrade pip
pip install -r requirements.txt

这一步会把所有依赖装好,确保本地和服务器的环境一致。

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

开发阶段直接启动Flask应用测试一下:

python app.py

但生产环境不能这么干——Flask自带的服务器性能扛不住。推荐用Gunicorn,一个轻量级的WSGI服务器,性能比Flask自带的好很多:

pip install gunicorn
gunicorn -w 4 -b 127.0.0.1:8000 app:app

注意:app:app表示app.py文件中的Flask应用实例对象,Gunicorn要依赖这个对象来启动。

6. 配置Nginx反向袋里(生产必备)

Nginx是生产环境的前端服务器,负责处理静态文件、负载均衡、SSL终止,然后把动态请求转发给Gunicorn。先安装Nginx:

sudo apt install nginx -y

然后创建站点配置文件,比如/etc/nginx/sites-a vailable/myapp

sudo nano /etc/nginx/sites-a vailable/myapp

写入以下内容(记得把your_domain_or_ip换成你的域名或IP,端口号默认8000):

server {
    listen 80;
    server_name your_domain_or_ip;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_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;
    }

    location /static/ {
        alias /remote/deploy/path/static/;
    }
}

启用配置并测试语法:

sudo ln -s /etc/nginx/sites-a vailable/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

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

为了让应用在服务器重启后自动启动,需要注册一个systemd服务。创建服务文件/etc/systemd/system/myapp.service

sudo nano /etc/systemd/system/myapp.service

写入以下内容(路径、用户、端口根据实际情况替换):

[Unit]
Description=Gunicorn Server for My Python App
After=network.target

[Service]
User=your_username
Group=www-data
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:app
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启动并启用服务:

sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp
sudo systemctl status myapp

如果状态显示active (running),说明服务已经跑起来了。

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

如果项目依赖很复杂,或者想彻底隔离环境,可以采用Docker打包。在项目根目录下创建Dockerfile

FROM python:3.9-slim
WORKDIR /app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
EXPOSE 8000
CMD ["gunicorn", "--workers", "4", "--bind", "0.0.0.0:8000", "app:app"]

构建镜像并运行容器:

docker build -t my-python-app .
docker run -d -p 8000:8000 --name myapp my-python-app

然后同样用Nginx反向袋里,把请求转发到localhost:8000即可。

关键注意事项

  • 权限问题:千万别用root用户跑应用,推荐用普通用户(比如ubuntu)加上www-data组。
  • 端口开放:云服务器的话,记得在安全组里开放80(HTTP)和443(HTTPS)端口。
  • 静态文件:Django或Flask的静态文件最好单独配置,通过Nginx的location /static/直接处理,避免经过Uvicorn/Gunicorn。
  • HTTPS:强烈建议用Let's Encrypt(certbot)申请免费证书,给站点加上HTTPS,安全又专业。

以上流程基本覆盖了Ubuntu上Python项目从环境准备到生产部署的完整链路。根据项目类型(Flask、Django、FastAPI)可能有些细节差异,但核心思路是一样的。照着走一遍,项目就能稳稳上线。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备2026025700号-3 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。