Ubuntu 上怎么部署 Python 项目:从环境准备到 Gunicorn、Nginx 与 systemd
时间:2026-08-23 | 作者:深海捕梦者 | 阅读:0Ubuntu上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)可能有些细节差异,但核心思路是一样的。照着走一遍,项目就能稳稳上线。
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。
相关文章
更多-
- Ubuntu下使用Git管理Swagger项目的完整指南
- 时间:2026-08-31
-
- Ubuntu下GIMP滤镜使用全指南:从基础操作到批量处理
- 时间:2026-08-31
-
- Ubuntu下使用Telnet进行远程管理的完整指南
- 时间:2026-08-31
-
- Ubuntu中如何查看磁盘I/O对CPU的影响:cpustat替代方案
- 时间:2026-08-31
-
- Ubuntu系统使用cpustat查看多核CPU信息的方法
- 时间:2026-08-31
-
- Ubuntu中Rust日志系统配置指南
- 时间:2026-08-27
-
- Ubuntu下Rust集成第三方库完整指南
- 时间:2026-08-27
-
- Ubuntu下Rust跨平台开发:从环境搭建到自动化测试指南
- 时间:2026-08-27
精选合集
更多大家都在玩
大家都在看
更多-
- 以下哪种食材被称为“地下苹果” 蚂蚁庄园今日答案9.18
- 时间:2026-09-17
-
- 蚂蚁庄园今天答题答案2026年9月18日
- 时间:2026-09-17
-
- 蚂蚁庄园答题今日答案2026年9月18日
- 时间:2026-09-17
-
- 蚂蚁庄园小课堂2026年9月18日最新题目答案
- 时间:2026-09-17
-
- 小鸡答题今天的答案是什么2026年9月18日
- 时间:2026-09-17
-
- 蚂蚁庄园每日答题答案2026年9月18日
- 时间:2026-09-17
-
- 蔬菜洗完掉色,说明是被染色了,是真的吗 蚂蚁庄园今日答案9月18日
- 时间:2026-09-17
-
- 满襟蜡绘花纹巧染就花纹当绣裳说的是哪种传统技艺 蚂蚁新村今日答案2026.9.17
- 时间:2026-09-17
