首页主机资讯ubuntu里python如何部署应用

ubuntu里python如何部署应用

时间2025-11-07 18:06:04发布访客分类主机资讯浏览681
导读:1. 准备工作:更新系统与安装基础工具 在部署前,确保Ubuntu系统是最新的,并安装必要的工具(如git、build-essential)和包管理工具: sudo apt update && sudo apt upgrad...

1. 准备工作:更新系统与安装基础工具
在部署前,确保Ubuntu系统是最新的,并安装必要的工具(如gitbuild-essential)和包管理工具:

sudo apt update &
    &
     sudo apt upgrade -y
sudo apt install -y git curl wget build-essential

这一步能修复系统漏洞并确保后续安装的兼容性。

2. 安装Python环境与虚拟环境工具
Ubuntu系统通常预装Python 3,但需确认版本并安装python3-venv(用于创建虚拟环境):

python3 --version  # 确认Python版本(建议3.6+)
sudo apt install -y python3-pip python3-venv

虚拟环境可隔离项目依赖,避免全局包冲突。

3. 创建并激活虚拟环境
在项目目录中创建虚拟环境并激活,后续所有操作均在虚拟环境中进行:

mkdir my_python_app &
    &
 cd my_python_app
python3 -m venv venv  # 创建虚拟环境
source venv/bin/activate  # 激活(终端提示符会显示venv)

激活后,pippython命令将指向虚拟环境内的版本。

4. 安装项目依赖
若项目有requirements.txt文件(包含所有依赖包及版本),通过pip安装:

pip install --upgrade pip  # 升级pip
pip install -r requirements.txt  # 安装依赖

若没有requirements.txt,可手动安装所需包(如Flask/Django):

pip install flask gunicorn  # Flask示例
# 或 pip install django gunicorn psycopg2-binary  # Django示例

gunicorn是Python WSGI服务器,用于生产环境运行应用。

5. 运行应用(开发测试)

  • Flask应用:若应用入口为app.py,可直接运行:
    export FLASK_APP=app.py  # 设置环境变量(Flask 1.0+)
    flask run --host=0.0.0.0 --port=5000  # 监听所有IP
    
  • Django应用
    python manage.py runserver 0.0.0.0:8000  # 监听所有IP
    

此时可通过http://服务器IP:5000(Flask)或http://服务器IP:8000(Django)访问应用,但仅适用于开发测试。

6. 配置Gunicorn(生产环境WSGI服务器)
Gunicorn是Python应用的生产级WSGI服务器,需替换开发服务器:

gunicorn -w 4 -b 127.0.0.1:8000 app:app  # Flask示例(app:app指app.py中的app实例)
# 或 gunicorn -w 4 -b 127.0.0.1:8000 myproject.wsgi:application  # Django示例

参数说明:-w 4表示4个工作进程(根据CPU核心数调整),-b 127.0.0.1:8000表示绑定到本地8000端口(仅内部访问)。

7. 配置Nginx反向代理(生产环境必备)
Nginx作为反向代理,处理静态文件、负载均衡和SSL终止,提升性能与安全性:

  • 安装Nginx:
    sudo apt install -y nginx
    
  • 创建Nginx配置文件(以Flask为例):
    sudo nano /etc/nginx/sites-available/myapp
    
    添加以下内容(替换your_domain_or_ip为实际域名/IP,/path/to/static/files为静态文件目录):
    server {
        
        listen 80;
        
        server_name your_domain_or_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;
    
        }
    
    
        location /static/ {
        
            alias /path/to/static/files;
      # 静态文件目录
        }
    
    }
        
    
  • 启用配置并重启Nginx:
    sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/  # 启用配置
    sudo nginx -t  # 测试配置语法
    sudo systemctl restart nginx  # 重启Nginx
    

此时可通过http://your_domain_or_ip访问应用,Nginx会将请求转发到Gunicorn。

8. 设置系统服务(开机自启)
通过systemd创建服务,确保应用在服务器重启后自动启动:

  • 创建服务文件:
    sudo nano /etc/systemd/system/myapp.service
    
  • 添加以下内容(替换路径和用户):
    [Unit]
    Description=My Python App
    After=network.target
    
    [Service]
    User=your_username  # 替换为你的用户名
    Group=your_groupname  # 替换为用户组(通常与用户名相同)
    WorkingDirectory=/path/to/your/app  # 应用目录
    Environment="PATH=/path/to/your/app/venv/bin"  # 虚拟环境路径
    ExecStart=/path/to/your/app/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app  # 启动命令
    Restart=always  # 崩溃后自动重启
    
    [Install]
    WantedBy=multi-user.target
    
  • 启用并启动服务:
    sudo systemctl daemon-reload  # 重新加载systemd配置
    sudo systemctl start myapp  # 启动服务
    sudo systemctl enable myapp  # 设置开机自启
    
  • 检查服务状态:
    sudo systemctl status myapp  # 查看运行状态
    

若状态显示active (running),则表示服务已成功启动。

9. 安全加固(可选但重要)

  • 配置HTTPS:使用Let’s Encrypt免费SSL证书,启用HTTPS加密:
    sudo apt install -y certbot python3-certbot-nginx
    sudo certbot --nginx -d your_domain_or_ip  # 替换为你的域名/IP
    
    按提示完成证书申请,Certbot会自动修改Nginx配置以支持HTTPS。
  • 防火墙设置:使用ufw限制端口访问,仅允许HTTP(80)、HTTPS(443)和SSH(22):
    sudo ufw allow 'Nginx Full'  # 允许HTTP/HTTPS
    sudo ufw allow ssh  # 允许SSH
    sudo ufw enable  # 启用防火墙
    sudo ufw status  # 查看状态
    
  • 定期更新:定期运行sudo apt update & & sudo apt upgrade -y更新系统和依赖,修复安全漏洞。

以上步骤覆盖了Ubuntu上Python应用部署的核心流程,适用于Flask、Django等主流框架。根据项目需求,可调整Gunicorn的工作进程数、Nginx的静态文件配置或添加数据库(如PostgreSQL)等组件。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu里python如何部署应用
本文地址: https://pptw.com/jishu/745326.html
ubuntu下python如何进行日志管理 ubuntu下python如何使用第三方库

游客 回复需填写必要信息