最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Ubuntu上Python项目如何部署
时间:2026-08-16 20:59:52 编辑:袖梨 来源:一聚教程网
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.txt5. 运行项目(开发测试)
根据项目类型启动应用(以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:
- 安装Nginx:
sudo apt install nginx -y - 创建自定义配置文件(如
/etc/nginx/sites-available/myapp):
添加以下内容(替换sudo nano /etc/nginx/sites-available/myappyour_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/;# 替换为项目静态文件路径}} - 启用配置:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/sudo nginx -t# 测试配置语法sudo systemctl reload nginx# 重新加载Nginx
7. 设置Systemd服务(开机自启)
通过systemd管理应用进程,确保服务器重启后自动启动:
- 创建服务文件(如
/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 - 启动并启用服务:
sudo systemctl daemon-reloadsudo systemctl start myappsudo systemctl enable myapp# 开机自启 - 检查服务状态:
sudo systemctl status myapp# 查看运行状态
8. 可选优化:使用Docker部署(环境一致性)
若需更彻底的环境隔离,可使用Docker打包应用:
- 创建
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"] - 构建镜像:
docker build -t my-python-app . - 运行容器:
docker run -d -p 8000:8000 --name myapp my-python-app - 结合Nginx反向代 理(同步骤6),将请求转发至
localhost:8000。
关键注意事项
- 权限问题:避免使用
root用户运行应用,推荐用普通用户(如ubuntu)+www-data组。 - 端口开放:若使用云服务器,需在安全组中开放80(HTTP)、443(HTTPS)端口。
- 静态文件:Django/Flask的静态文件需单独配置(如Nginx的
location /static/)。 - HTTPS:建议使用Let’s Encrypt免费证书(
certbot)配置HTTPS,提升安全性。
以上流程覆盖了Ubuntu上Python项目从环境准备到生产部署的关键步骤,可根据项目类型(Flask/Django/FastAPI等)调整细节。
相关文章
- 华为hg255d路由器怎样刷机(华为hg255d路由器刷机方法) 08-16
- 华为荣耀路由器入口(华为荣耀路由器入口位置) 08-16
- 华为路由器自动断网怎么回事(华为路由器自动断网什么原因) 08-16
- 华为路由器变砖了怎么办(华为路由器变砖了怎么解决) 08-16
- 华为面板路由器怎么设置(华为面板路由器设置教程) 08-16
- 华为a2路由器覆盖面积(华为a2路由器覆盖面积有多大) 08-16