温馨提示×

Python Web框架在CentOS上如何配置

小樊
37
2025-11-14 04:40:57
栏目: 编程语言

在 CentOS 上配置 Python Web 框架的标准流程

一 环境准备与基础安装

  • 更新系统并安装基础软件包:
    • 命令:sudo yum update -y && sudo yum install -y python3 python3-pip python3-venv git nginx
  • 说明:
    • CentOS 7 默认自带 Python 2.7,现代框架需使用 Python 3
    • 使用 虚拟环境 隔离依赖,避免版本冲突。
    • 后续以 Flask 为例,其他框架(如 Django)步骤类似。

二 以 Flask 为例的两种运行方式

  • 开发模式(快速验证)
    • 安装 Flask:pip install 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
    • 访问:浏览器打开 http://服务器IP:5000
    • 防火墙(如启用 firewalld):sudo firewall-cmd --permanent --add-port=5000/tcp && sudo firewall-cmd --reload
  • 生产模式(推荐)
    • 安装 Gunicornpip install gunicorn
    • 启动:gunicorn -w 4 -b 127.0.0.1:8000 app:app
    • 说明:Gunicorn 作为 WSGI 服务器,性能与稳定性优于开发服务器。

三 生产部署 Nginx 反向代理与 systemd 服务

  • 配置 Nginx 反向代理(将请求转发到 Gunicorn)
    • 安装:sudo yum install -y nginx && sudo systemctl start nginx && sudo systemctl enable nginx
    • 新建配置 /etc/nginx/conf.d/myapp.conf
      server {
          listen 80;
          server_name your_domain_or_ip;
          location / {
              proxy_pass http://127.0.0.1:8000;
              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;
          }
      }
      
    • 使配置生效:sudo systemctl reload nginx
    • 防火墙放行 HTTP/HTTPS:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 使用 systemd 托管 Gunicorn(开机自启、崩溃重启)
    • 新建服务 /etc/systemd/system/myapp.service
      [Unit]
      Description=gunicorn daemon for myapp
      After=network.target
      
      [Service]
      User=your_username
      Group=nginx
      WorkingDirectory=/path/to/your/app
      ExecStart=/path/to/your/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
      Restart=always
      
      [Install]
      WantedBy=multi-user.target
      
    • 启动与开机自启:
      • sudo systemctl daemon-reload
      • sudo systemctl start myapp && sudo systemctl enable myapp
  • 访问验证:浏览器打开 http://服务器IP 或域名

四 Django 的快速部署要点

  • 安装与初始化:
    • pip install Django
    • django-admin startproject myproject && cd myproject
  • 开发运行(仅用于调试):
    • python manage.py runserver 0.0.0.0:8000
  • 生产部署(与 Flask 类似):
    • 使用 Gunicorngunicorn -w 4 -b 127.0.0.1:8000 myproject.wsgi:application
    • 配置 Nginx 反向代理(同上),并使用 systemd 托管 Gunicorn 服务。

五 常见问题与优化建议

  • 端口与防火墙
    • 开发时放行具体端口(如 5000);生产环境建议仅开放 80/443,由 Nginx 反向代理到本地 8000
  • 静态文件与长连接
    • Nginx 直接托管静态资源(如 /static/media),提升性能;按需开启 Gzip 与合适的 keepalive
  • 进程与资源
    • Gunicorn 的 工作进程数(-w) 建议设置为 2–4 × CPU 核心数,并结合 超时最大请求数 防止内存泄漏。
  • 安全加固
    • 使用 非 root 运行服务;为 Nginx 配置 HTTPS/TLS(如 Let’s Encrypt);限制请求方法、隐藏版本信息。
  • 日志与监控
    • 配置 Nginx 访问/错误日志Gunicorn 日志;结合 systemdjournalctl -u myapp -f 实时查看。

0