Ubuntu上Python项目怎么部署
导读:Ubuntu上Python项目部署完整流程 1. 准备基础环境 确保Ubuntu服务器已安装Python 3、pip及虚拟环境工具(避免全局依赖冲突): sudo apt update sudo apt install python3 py...
Ubuntu上Python项目部署完整流程
1. 准备基础环境
确保Ubuntu服务器已安装Python 3、pip及虚拟环境工具(避免全局依赖冲突):
sudo apt update
sudo 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 # 安装Gunicorn
gunicorn -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/myapp
your_domain_or_ip
和端口):server { listen 80; server_name your_domain_or_ip; # 替换为域名或IP location / { proxy_pass http://127.0.0.1:8000; # 转发至Gunicorn 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; } # 可选:处理静态文件(如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 App After=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:app Restart=always # 崩溃后自动重启 RestartSec=10 # 重启间隔10秒 [Install] WantedBy=multi-user.target
- 启动并启用服务:
sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl enable myapp # 开机自启
- 检查服务状态:
sudo systemctl status myapp # 查看运行状态
8. 可选优化:使用Docker部署(环境一致性)
若需更彻底的环境隔离,可使用Docker打包应用:
- 创建
Dockerfile
(项目根目录):FROM python:3.9-slim # 使用轻量级Python镜像 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反向代理(同步骤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等)调整细节。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu上Python项目怎么部署
本文地址: https://pptw.com/jishu/716282.html