温馨提示×

CentOS下Python Web开发如何起步

小樊
41
2025-12-29 12:33:33
栏目: 编程语言

CentOS 下 Python Web 开发起步指南

一 环境准备与 Python 安装

  • 更新系统与仓库:建议先启用 EPEL 仓库,获得更完整的软件包。
    • 命令:sudo yum install -y epel-release
  • 安装 Python 3pip(以 CentOS 7/8 常见做法为例):
    • 命令:sudo yum install -y python3 python3-pip
    • 验证:python3 --versionpip3 --version
  • 说明:CentOS 7 默认自带 Python 2.7,但现代 Web 框架普遍需要 Python 3,因此建议直接安装并使用 Python 3 环境。

二 创建项目与虚拟环境

  • 使用内置 venv 创建隔离环境(推荐做法,无需额外安装 virtualenv 包):
    • 创建:python3 -m venv venv
    • 激活:source venv/bin/activate
    • 退出:deactivate
  • 在虚拟环境中安装常用工具与框架:
    • 升级 pip:pip install -U pip
    • 安装框架:pip install Flask(或 pip install Django
  • 提示:激活虚拟环境后,命令行提示符通常会显示环境名,表示已进入隔离环境。

三 运行第一个 Web 应用 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, debug=True)
      
  • 启动与访问:
    • 启动:python app.py
    • 访问:浏览器打开 http://<服务器IP>:5000,应看到 Hello, World!
  • 说明:开发阶段使用 debug=True 便于调试;生产环境请关闭调试并使用 WSGI 服务器

四 生产就绪 Nginx + Gunicorn 部署

  • 安装组件:
    • 命令:sudo yum install -y nginxpip install gunicorn
  • 启动应用(Gunicorn,绑定本机端口 8000):
    • 命令:gunicorn -b 127.0.0.1:8000 app:app
  • 配置 Nginx 反向代理(示例):
    server {
        listen 80;
        server_name your_domain.com;
    
        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 restart nginx
  • 访问:通过 http://your_domain.comhttp://<服务器IP>/ 访问应用。

五 常见问题与进阶建议

  • 多版本 Python 与系统工具兼容:
    • 不建议直接替换系统自带的 /usr/bin/python(会影响 yum 等系统工具)。如需自定义 python 命令,可仅添加 python3 软链或在使用时显式调用 python3/pip3
  • 编译安装 Python 3 时的依赖与 SSL 问题:
    • 常见依赖:gcczlib-develbzip2-developenssl-develreadline-devellibffi-devel 等;若遇到 pip/SSL 相关错误,优先检查并补齐 openssl-devel 后重新编译。
  • 数据库与框架选择:
    • 关系型数据库可选 MySQL(安装与初始化、修改临时密码、启动服务),框架可在 FlaskDjango 中择一深入。
  • 防火墙与端口放行:
    • 若访问受限,开放对应端口(如 80/5000/8000)后再测试。示例(firewalld):sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --reload

0