温馨提示×

在Ubuntu上如何部署Python应用

小樊
59
2025-09-08 19:38:37
栏目: 编程语言

在Ubuntu上部署Python应用的核心步骤如下,可根据项目需求选择具体方案:

一、基础环境准备

  1. 安装Python和pip

    sudo apt update
    sudo apt install python3 python3-pip python3-venv  # 安装Python 3及虚拟环境工具
    python3 --version  # 验证安装
    
  2. 创建虚拟环境(推荐)

    python3 -m venv myenv  # 创建虚拟环境
    source myenv/bin/activate  # 激活环境(终端提示符显示`(myenv)`)
    

二、部署应用的核心步骤

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

  1. 安装依赖

    pip install -r requirements.txt  # 通过requirements.txt安装所有依赖
    
  2. 启动应用

    • 直接运行脚本(如app.py):
      python app.py
      
    • 若为Web框架(如Flask/Django),需指定运行参数(如端口):
      flask run --host=0.0.0.0 --port=5000  # Flask示例
      python manage.py runserver 0.0.0.0:8000  # Django示例
      

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

  1. 安装Gunicorn(WSGI服务器)

    pip install gunicorn
    
  2. 测试Gunicorn运行

    gunicorn --bind 0.0.0.0:8000 app:app  # 替换为你的应用入口(如Django的wsgi:application)
    
  3. 创建Systemd服务(后台运行)

    sudo nano /etc/systemd/system/myapp.service
    

    添加以下内容(修改路径和用户名):

    [Unit]
    Description=Gunicorn service
    After=network.target
    
    [Service]
    User=your_username
    Group=www-data
    WorkingDirectory=/path/to/your/app
    ExecStart=/path/to/your/app/myenv/bin/gunicorn --workers 3 --bind unix:/path/to/your/app/app.sock app:app
    
    [Install]
    WantedBy=multi-user.target
    

    启用并启动服务:

    sudo systemctl daemon-reload
    sudo systemctl start myapp
    sudo systemctl enable myapp
    
  4. 配置Nginx反向代理

    sudo nano /etc/nginx/sites-available/myapp
    

    添加配置(替换域名和路径):

    server {
        listen 80;
        server_name your_domain.com;
        location / {
            include proxy_params;
            proxy_pass http://unix:/path/to/your/app/app.sock;
        }
        # 静态文件配置(可选)
        location /static/ {
            alias /path/to/your/app/static/;
        }
    }
    

    启用配置并重启Nginx:

    sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled
    sudo nginx -t  # 测试配置
    sudo systemctl reload nginx
    
  5. 设置防火墙

    sudo ufw allow 'Nginx Full'  # 允许HTTP/HTTPS流量
    

三、可选步骤

  • HTTPS支持:使用Certbot获取免费SSL证书。
  • 静态文件处理:Django需运行collectstatic,并在Nginx中配置静态文件路径。
  • 多版本Python管理:可使用pyenv切换Python版本。

注意事项

  • 生产环境务必使用虚拟环境隔离依赖。
  • 确保应用配置文件(如settings.py)中的DEBUG=False,并设置ALLOWED_HOSTS
  • 定期通过systemctl status myappjournalctl -u myapp查看服务状态和日志。

根据应用类型(如Web框架、命令行工具)选择对应方案,Web应用推荐使用Gunicorn+Nginx组合以提升性能和稳定性。

0