首页主机资讯Python项目Ubuntu如何部署

Python项目Ubuntu如何部署

时间2025-10-01 11:19:04发布访客分类主机资讯浏览1439
导读: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
      

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
Python图形界面Ubuntu如何开发 Python依赖库Ubuntu如何安装

游客 回复需填写必要信息