温馨提示×

Ubuntu Python部署流程是什么

小樊
35
2025-12-26 08:16:53
栏目: 编程语言

Ubuntu Python部署流程

一 环境准备与基础安装

  • 更新系统并安装基础工具:sudo apt update && sudo apt install -y python3 python3-pip python3-venv git build-essential libssl-dev libffi-dev python3-dev
  • 如需特定版本 Python(如 3.11):sudo add-apt-repository ppa:deadsnakes/ppa && sudo apt update && sudo apt install python3.11
  • 验证版本:python3 --version、pip3 --version
  • 说明:venv 用于隔离依赖;编译类依赖(如 cryptography、pillow)需安装 build-essential、libssl-dev、libffi-dev、python3-dev。

二 部署Web应用的标准方式

  • 上传或克隆代码:git clone 或 scp 上传;进入项目目录
  • 创建并激活虚拟环境:python3 -m venv venv && source venv/bin/activate
  • 安装依赖:pip install -r requirements.txt
  • 以 Flask 为例的最小应用与启动:
    • app.py from flask import Flask app = Flask(name) @app.route(‘/’) def hello(): return ‘Hello, World!’ if name == ‘main’: app.run(host=‘0.0.0.0’, port=5000)
    • 开发运行:python app.py(仅用于验证)
  • 生产运行(WSGI,推荐 Gunicorn):pip install gunicorn;gunicorn -w 4 -b 127.0.0.1:5000 app:app
  • 如需 uWSGI:pip install uwsgi;示例 uwsgi --http :8000 --module your_project.wsgi:application
  • 如需 ASGI(如 Django Channels、FastAPI):pip install daphne;daphne -b 0.0.0.0 -p 8000 your_project.asgi:application。

三 反向代理与进程守护

  • 安装并配置 Nginx 反向代理:
    • 安装:sudo apt install nginx
    • 站点配置(/etc/nginx/sites-available/yourapp 或 default): server { listen 80; server_name your_domain_or_ip; location / { proxy_pass http://127.0.0.1:5000; 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/; }

      }
    • 启用与生效:sudo ln -s /etc/nginx/sites-available/yourapp /etc/nginx/sites-enabled/;sudo nginx -t && sudo systemctl reload nginx
  • 使用 systemd 守护进程(以 Gunicorn 为例):
    • /etc/systemd/system/gunicorn.service [Unit] Description=Gunicorn instance to serve yourapp After=network.target

      [Service] User=your_username Group=www-data WorkingDirectory=/path/to/your/webapp Environment=“PATH=/path/to/your/webapp/venv/bin” ExecStart=/path/to/your/webapp/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/yourapp.sock app:app Restart=always

      [Install] WantedBy=multi-user.target

    • 启动与开机自启:sudo systemctl daemon-reload && sudo systemctl enable --now gunicorn && sudo systemctl status gunicorn

  • 防火墙:sudo ufw allow ‘Nginx Full’。

四 数据库与静态资源

  • 数据库(以 MySQL 为例):sudo apt install mysql-server;sudo systemctl start mysql && sudo systemctl enable mysql
    • 安全初始化:sudo mysql_secure_installation
    • 建库建用户(示例):CREATE DATABASE your_db; CREATE USER ‘your_user’@‘localhost’ IDENTIFIED BY ‘your_password’; GRANT ALL ON your_db.* TO ‘your_user’@‘localhost’; FLUSH PRIVILEGES;
    • Django 配置示例(settings.py):ENGINE、NAME、USER、PASSWORD、HOST、PORT
    • 迁移:python manage.py migrate
  • 静态文件(Nginx 直接服务更高效):
    • Nginx 配置 location /static/ { alias /path/to/static/; },收集静态资源(如 Django):python manage.py collectstatic。

五 安全与后续维护

  • HTTPS(Let’s Encrypt):sudo apt install certbot python3-certbot-nginx;sudo certbot --nginx -d your_domain
  • 防火墙与端口:仅开放 80/443 与必要端口;sudo ufw allow ‘Nginx Full’ && sudo ufw enable
  • 日志与监控:Nginx 错误/访问日志;应用与 Gunicorn 日志;可接入 Prometheus/Grafana 或 ELK
  • 备份与恢复:定期数据库备份(如 mysqldump/pg_dump)与代码/配置备份(rsync/tar)
  • 自动化部署:使用 Ansible/Fabric 编排拉取代码、安装依赖、迁移与重启服务
  • 容器化(可选):Dockerfile 示例 FROM python:3.9-slim WORKDIR /app COPY . /app RUN pip install -r requirements.txt CMD [“gunicorn”, “-w”, “4”, “-b”, “0.0.0.0:5000”, “app:app”]
    • 构建与运行:docker build -t myapp . && docker run -d -p 5000:5000 myapp。

0