Python项目Ubuntu如何部署
导读:Python项目在Ubuntu上的部署流程 1. 准备基础环境 首先更新系统包列表并安装Python3及pip(Python包管理工具),确保系统具备Python运行环境: sudo apt update sudo apt install...
Python项目在Ubuntu上的部署流程
1. 准备基础环境
首先更新系统包列表并安装Python3及pip(Python包管理工具),确保系统具备Python运行环境:
sudo apt update
sudo apt install python3 python3-pip python3-venv -y
验证安装版本:
python3 --version # 确认Python版本(建议3.6+)
pip3 --version # 确认pip版本
2. 创建并激活虚拟环境
使用venv
模块创建项目专属虚拟环境,隔离项目依赖避免全局污染:
cd /path/to/your_project # 进入项目目录
python3 -m venv myenv # 创建虚拟环境(myenv为环境名称,可自定义)
source myenv/bin/activate # 激活虚拟环境(激活后命令行前缀显示环境名)
⚠️ 注意:后续所有操作需在激活的虚拟环境中进行,避免依赖冲突。
3. 安装项目依赖
将项目依赖包及其版本记录在requirements.txt
文件中(若项目已有该文件),通过pip批量安装:
pip install -r requirements.txt # 安装所有依赖
若项目未生成requirements.txt
,可通过以下命令生成(需在虚拟环境中):
pip freeze >
requirements.txt # 导出当前环境依赖到文件
4. 运行项目
根据项目类型选择运行方式:
- 普通Python脚本:直接执行主程序文件(如
main.py
):python main.py
- Web应用(Flask/Django):
- Flask:启动开发服务器(仅用于测试,生产环境需用Gunicorn/uWSGI):
flask run # 或 python app.py(若app.py中有Flask实例)
- Django:启动开发服务器:
python manage.py runserver
- Flask:启动开发服务器(仅用于测试,生产环境需用Gunicorn/uWSGI):
5. 配置生产级WSGI服务器
生产环境需使用高性能WSGI服务器(如Gunicorn),替代内置开发服务器:
pip install gunicorn # 安装Gunicorn
以Flask应用为例(假设应用入口为app.py
中的app
对象),启动Gunicorn:
gunicorn -w 4 -b 127.0.0.1:8000 app:app # -w指定工作进程数,-b指定绑定地址
或通过Systemd创建守护进程(确保应用随系统启动):
sudo nano /etc/systemd/system/myapp.service # 创建服务文件
写入以下内容(替换路径和用户):
[Unit]
Description=Gunicorn Server for My Python App
After=network.target
[Service]
User=ubuntu # 替换为你的系统用户
Group=www-data
WorkingDirectory=/path/to/your_project
ExecStart=/path/to/your_project/myenv/bin/gunicorn --workers 4 --bind unix:/run/myapp.sock app:app
Restart=always
[Install]
WantedBy=multi-user.target
保存后启动服务:
sudo systemctl daemon-reload
sudo systemctl start myapp
sudo systemctl enable myapp # 设置开机自启
6. 配置Nginx反向代理
Nginx作为反向代理,负责转发外部请求到Gunicorn,并提供静态文件服务:
sudo apt install nginx -y # 安装Nginx
创建或修改Nginx配置文件(如/etc/nginx/sites-available/myapp
):
sudo nano /etc/nginx/sites-available/myapp
写入以下内容(替换域名/IP和端口):
server {
listen 80;
server_name your_domain_or_ip;
# 替换为你的域名或服务器IP
location / {
include proxy_params;
proxy_pass http://unix:/run/myapp.sock;
# 转发到Gunicorn的Unix socket
}
# 可选:配置静态文件目录(需在Django/Flask中设置STATIC_ROOT)
location /static/ {
alias /path/to/your_project/static/;
# 替换为静态文件目录
}
}
启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ # 创建符号链接
sudo nginx -t # 测试配置语法
sudo systemctl restart nginx # 重启Nginx
7. 配置防火墙(可选但推荐)
若服务器启用了UFW防火墙,需允许HTTP(80)和HTTPS(443)流量:
sudo ufw allow 'Nginx Full' # 允许HTTP和HTTPS
sudo ufw enable # 启用防火墙(若未启用)
8. 验证部署
在浏览器中访问http://your_domain_or_ip
,若看到应用页面则表示部署成功。
- 检查Nginx状态:
sudo systemctl status nginx
- 检查Gunicorn状态:
sudo systemctl status myapp
- 查看应用日志:
journalctl -u myapp -f
(实时日志)或/var/log/nginx/error.log
(Nginx错误日志)
可选优化步骤
- SSL证书:使用Let’s Encrypt免费获取SSL证书,配置HTTPS:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your_domain.com # 替换为你的域名
- 性能调优:根据服务器配置调整Gunicorn的
workers
数量(通常为CPU核心数的2-4倍)。 - 日志管理:配置日志轮转(如
logrotate
),避免日志文件过大。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Python项目Ubuntu如何部署
本文地址: https://pptw.com/jishu/715643.html