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 3 与 pip: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 并存:优先使用 python3 与 venv;若编译安装,请使用 make altinstall 避免覆盖系统 python2,并谨慎调整 /usr/bin/python 软链以免影响 yum。
- 防火墙:开放 80/443(Nginx)与开发端口(如 5000/8000)后再测试访问。
- 静态资源:生产环境建议由 Nginx 直接托管,提高性能。
- SELinux:若启用,必要时为 Nginx/Gunicorn 设置合适的 SELinux 策略或临时 setenforce 0 排查(不推荐长期关闭)。