4、环境准备:操作系统要求(Linux CentOS 7+)、Python版本(3.8+)、依赖库安装(lightgbm、flask、gunicorn、redis)

在部署 LightGBM 风控网关之前,必须确保底层环境满足所有依赖要求。本章将详细说明操作系统版本、Python 解释器版本以及核心依赖库的安装步骤,并给出生产环境下的最佳实践建议。

4.1 操作系统要求

生产环境推荐使用 Linux CentOS 7+ 或兼容的 RHEL 7+ 发行版。以下为关键系统组件的最低版本要求:

组件 最低版本 推荐版本 说明
操作系统 CentOS 7.0 CentOS 7.9 / Rocky Linux 8 内核版本 3.10+,支持 cgroups v1
GCC 4.8.5 8.3.1+ 编译 LightGBM 和部分 Python 扩展
GLIBC 2.17 2.28+ 影响 Python 3.8+ 的兼容性
OpenMP 3.1 4.5 LightGBM 多线程并行计算依赖
生产建议: 如果使用 CentOS 7,建议先执行 yum update -y 更新系统包,并安装 EPEL 仓库以获取较新版本的依赖。

4.2 Python 版本要求

风控网关的推理服务基于 Python 3.8+ 构建。Python 3.6 及以下版本已停止安全更新,且部分依赖库(如 lightgbm 4.x)不再支持。

  • 最低版本: Python 3.8.0
  • 推荐版本: Python 3.10.12 或 3.11.5
  • 不推荐: Python 3.12(部分旧版 lightgbm 和 gunicorn 存在兼容性问题)

建议使用 pyenv 或 conda 管理 Python 版本,避免与系统 Python 冲突:

# 使用 pyenv 安装 Python 3.10.12
pyenv install 3.10.12
pyenv global 3.10.12

# 验证版本
python --version
# 输出: Python 3.10.12

4.3 依赖库安装

风控网关的核心依赖包括 lightgbm(模型推理)、flask(HTTP 服务)、gunicorn(WSGI 服务器)和 redis(特征缓存与限流)。

4.3.1 核心依赖清单

库名 最低版本 推荐版本 用途
lightgbm 3.3.0 4.1.0 加载模型并执行推理
flask 2.0.0 3.0.0 提供 RESTful API 接口
gunicorn 20.1.0 21.2.0 生产级 WSGI 服务器
redis 4.0.0 5.0.0 特征缓存、分布式锁、限流计数器

4.3.2 一键安装命令

推荐使用 pip 安装,并优先使用国内镜像源加速:

# 创建虚拟环境(推荐)
python -m venv venv_gateway
source venv_gateway/bin/activate

# 安装核心依赖
pip install lightgbm==4.1.0 flask==3.0.0 gunicorn==21.2.0 redis==5.0.0

# 验证安装
python -c "import lightgbm; import flask; import redis; print('All dependencies installed successfully.')"
注意: 如果服务器无法访问外网,请提前下载 whl 包离线安装,或配置内部 PyPI 镜像。LightGBM 的 GPU 版本需要额外安装 lightgbm-gpu 和 CUDA 工具包。

4.4 环境架构总览

下图展示了风控网关的完整环境依赖层次,从操作系统到应用层:

风控网关环境依赖架构 操作系统层:Linux CentOS 7+ / Rocky Linux 8 解释器层:Python 3.8+(推荐 3.10.12) 依赖库层 lightgbm 4.1.0 | flask 3.0.0 | gunicorn 21.2.0 | redis 5.0.0 应用层:风控网关推理服务

4.5 环境验证清单

完成安装后,建议按以下步骤逐项验证环境正确性:

  1. 系统验证: cat /etc/centos-release 确认版本为 7+;gcc --version 确认 GCC 版本。
  2. Python 验证: python --version 确认 ≥ 3.8;pip --version 确认 pip 可用。
  3. LightGBM 验证: 执行 python -c "import lightgbm; print(lightgbm.__version__)" 输出版本号。
  4. Flask 验证: 执行 python -c "import flask; print(flask.__version__)" 输出版本号。
  5. Gunicorn 验证: 执行 gunicorn --version 输出版本号。
  6. Redis 验证: 执行 python -c "import redis; r = redis.Redis(host='localhost', port=6379); print(r.ping())" 返回 True。
最佳实践: 将上述验证步骤写入 check_env.sh 脚本,每次部署新节点时自动执行,确保环境一致性。

4.6 常见问题与避坑

问题 原因 解决方案
LightGBM 安装失败 缺少 libomp 或 GCC 版本过低 yum install -y libomp-devel 或升级 GCC
Flask 启动报错 "Address already in use" 端口被占用 更换端口或 kill -9 $(lsof -ti:5000)
Gunicorn 无法绑定 worker 共享内存不足 增大 /dev/shm 或调整 worker 数量
Redis 连接超时 防火墙未放行 6379 端口 firewall-cmd --add-port=6379/tcp --permanent