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 环境架构总览
下图展示了风控网关的完整环境依赖层次,从操作系统到应用层:
4.5 环境验证清单
完成安装后,建议按以下步骤逐项验证环境正确性:
- 系统验证:
cat /etc/centos-release确认版本为 7+;gcc --version确认 GCC 版本。 - Python 验证:
python --version确认 ≥ 3.8;pip --version确认 pip 可用。 - LightGBM 验证: 执行
python -c "import lightgbm; print(lightgbm.__version__)"输出版本号。 - Flask 验证: 执行
python -c "import flask; print(flask.__version__)"输出版本号。 - Gunicorn 验证: 执行
gunicorn --version输出版本号。 - 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 |