ubuntu

Ubuntu Python部署流程解析

小樊
43
2025-09-06 19:29:33
栏目: 编程语言

在Ubuntu上部署Python应用的核心流程如下,结合搜索资源中的关键步骤解析:

一、环境准备

  1. 安装Python和pip
    更新系统并安装Python 3、pip及虚拟环境工具:

    sudo apt update  
    sudo apt install python3 python3-pip python3-venv  # 安装虚拟环境模块  
    
  2. 创建虚拟环境(推荐)
    隔离项目依赖,避免全局冲突:

    python3 -m venv myenv  # 创建虚拟环境  
    source myenv/bin/activate  # 激活环境  
    

二、部署应用

方案1:直接运行(适合开发测试)

  1. 安装依赖
    在虚拟环境中通过requirements.txt安装依赖:
    pip install -r requirements.txt  # 依赖文件需包含项目所需库  
    
  2. 运行应用
    • 脚本类应用:python app.py
    • Web框架(如Flask/Django):
      • Flask:python app.py(默认监听127.0.0.1:5000
      • Django:python manage.py runserver

方案2:生产环境部署(推荐Gunicorn+Nginx)

  1. 安装Gunicorn(WSGI服务器)
    替代Python内置服务器,支持多进程:
    pip install gunicorn  
    gunicorn -w 4 -b 127.0.0.1:8000 app:app  # 绑定到本地8000端口,4个工作进程  
    
  2. 配置Nginx(反向代理)
    • 安装Nginx:sudo apt install nginx
    • 编辑配置文件(如/etc/nginx/sites-available/yourapp):
      server {  
          listen 80;  
          server_name your_domain_or_ip;  
          location / {  
              proxy_pass http://127.0.0.1:8000;  # 转发请求到Gunicorn  
              proxy_set_header Host $host;  
          }  
      }  
      
    • 启用配置并重启Nginx:
      sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled  
      sudo nginx -t && sudo systemctl restart nginx  # 测试配置并重启  
      
      

三、后台运行与服务管理

  1. 使用Systemd设置开机自启
    创建服务文件(如/etc/systemd/system/yourapp.service):
    [Unit]  
    Description=Python App Service  
    After=network.target  
    
    [Service]  
    User=your_username  
    WorkingDirectory=/path/to/app  
    Environment="PATH=/path/to/app/venv/bin"  
    ExecStart=/path/to/app/venv/bin/gunicorn --workers 3 --bind unix:/path/to/app/app.sock wsgi:app  
    Restart=always  
    
    [Install]  
    WantedBy=multi-user.target  
    
    启用并启动服务:
    sudo systemctl daemon-reload  
    sudo systemctl start yourapp  
    sudo systemctl enable yourapp  # 开机自启  
    
    

四、可选步骤

关键资源参考

根据项目类型(如Web应用、脚本工具)选择对应方案,生产环境建议优先使用Gunicorn+Nginx组合,兼顾性能与稳定性。

0
看了该问题的人还看了