温馨提示×

CentOS下Python Web开发如何搭建

小樊
44
2025-11-22 03:35:24
栏目: 编程语言

CentOS 下 Python Web 开发环境搭建

一 准备系统与安装 Python3

  • 更新系统并安装常用工具与 EPEL 仓库(以 CentOS 7/8 为例):
    • 安装 EPEL:sudo yum install epel-release -y
    • 安装基础工具:sudo yum install -y yum-utils gcc make
    • 更新系统:sudo yum update -y
  • 安装 Python 3pip:sudo yum install -y python3 python3-pip
  • 验证版本:python3 --version、pip3 --version
  • 说明:CentOS 7 默认自带 Python 2.7,现代框架建议使用 Python 3.x

二 创建项目与虚拟环境

  • 创建项目目录并进入:mkdir -p ~/myproj && cd ~/myproj
  • 创建并激活虚拟环境(推荐内置 venv):
    • python3 -m venv venv
    • source venv/bin/activate
  • 升级 pip:pip install -U pip
  • 退出虚拟环境:deactivate
  • 说明:使用虚拟环境可隔离依赖,避免不同项目版本冲突。

三 开发阶段运行示例

  • Flask 示例(文件:app.py)
    • 安装:pip install Flask
    • 代码:
      • 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
  • Django 示例
    • 安装:pip install Django
    • 创建项目:django-admin startproject myproject
    • 运行开发服务器:cd myproject && python manage.py runserver 0.0.0.0:8000
    • 访问:http://服务器IP:8000
  • 防火墙放行(开发机需远程访问时)
    • Flask:sudo firewall-cmd --permanent --add-port=5000/tcp && sudo firewall-cmd --reload
    • Django:sudo firewall-cmd --permanent --add-port=8000/tcp && sudo firewall-cmd --reload
  • 说明:开发阶段可直接使用框架自带的开发服务器,便于调试。

四 生产部署 Nginx + Gunicorn

  • 安装与启动 Nginx:sudo yum install -y nginx && sudo systemctl enable --now nginx
  • 放行 HTTP/HTTPS:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 安装 Gunicorn:pip install gunicorn
  • 启动示例(Flask,位于虚拟环境):
    • 进入项目并激活虚拟环境:cd ~/myproj && source venv/bin/activate
    • 启动:gunicorn -w 4 -b 127.0.0.1:8000 app:app
  • 配置 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;
      • }
    • }
  • 检查并重载 Nginx:sudo nginx -t && sudo systemctl reload nginx
  • 访问:http://your_domain_or_IP
  • 说明:生产环境不建议直接暴露框架开发服务器,使用 WSGI 服务器(Gunicorn/uWSGI)+ Nginx 可获得更好的性能与安全。

五 进程守护与常见问题

  • 进程守护(推荐 Supervisor
    • 安装:sudo yum install -y supervisor
    • 配置示例(/etc/supervisord.d/myapp.ini)
      • [program:myapp]
      • command=/home/youruser/myproj/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app
      • directory=/home/youruser/myproj
      • user=youruser
      • autostart=true
      • autorestart=true
      • redirect_stderr=true
      • stdout_logfile=/var/log/myapp.log
    • 启动:sudo systemctl enable --now supervisord
  • 常见问题与要点
    • 多版本 Python 并存:优先使用 python3venv;若编译安装,请使用 make altinstall 避免覆盖系统 python2,并谨慎调整 /usr/bin/python 软链以免影响 yum
    • 防火墙:开放 80/443(Nginx)与开发端口(如 5000/8000)后再测试访问。
    • 静态资源:生产环境建议由 Nginx 直接托管,提高性能。
    • SELinux:若启用,必要时为 Nginx/Gunicorn 设置合适的 SELinux 策略或临时 setenforce 0 排查(不推荐长期关闭)。

0