2、开发环境搭建:操作系统选择与配置、数据库安装与配置(MySQL/InfluxDB)、Python环境与依赖库安装
好,咱们直接进入正题。开发环境搭建这事儿,看着基础,但真要是踩了坑,后面调试起来能让你怀疑人生。我这些年经手的风电项目,少说也有十几个场站了,每次搭建环境我都会亲自盯着。为什么?因为操作系统选错了、数据库版本不对、Python依赖冲突——这些坑我都踩过,而且不止一次。
2.1 操作系统选择与配置
先说操作系统。风电场上位机,说白了就是工控机或者服务器,常年7×24小时跑着。你想想看,要是系统隔三差五蓝屏、死机,那风场运维人员不得骂娘?
我个人强烈推荐 Ubuntu Server 20.04 LTS 或 22.04 LTS。 为什么?
- 稳定第一:LTS版本有5年支持周期,风场项目一跑就是好几年,没人愿意中途折腾系统升级。
- 生态成熟:Python、MySQL、InfluxDB、Docker,这些在Ubuntu上都有官方源,apt install一把梭。
- 社区活跃:真遇到问题,Stack Overflow上一搜一大把解决方案。
嗯,这里要注意:千万别用桌面版。风场上位机不需要图形界面,装Server版就够了。省下来的那点内存和CPU,留给数据库和采集程序不香吗?
核心配置清单:
- 关闭不必要的服务(如snapd、cups等)
- 配置静态IP(风场网络环境通常没有DHCP)
- 开启SSH服务(远程维护必备)
- 设置时区为Asia/Shanghai(别问为什么,日志时间对不上你会疯的)
- 配置防火墙(只开放3306、8086、22等必要端口)
我的小技巧: 装完系统第一件事,跑一遍 apt update && apt upgrade -y。我曾经在一个项目中,因为系统内核太旧,导致InfluxDB死活装不上,折腾了大半天才发现是内核版本问题。
2.2 数据库安装与配置
风电监控系统,数据是命根子。我们一般用两种数据库:MySQL 存结构化数据(风机台账、报警记录、用户信息),InfluxDB 存时序数据(风速、功率、温度等实时采集值)。
2.2.1 MySQL 安装与配置
MySQL 8.0 是目前的主流选择。安装很简单:
# 安装MySQL
sudo apt install mysql-server -y
# 检查服务状态
sudo systemctl status mysql
# 安全配置(设置root密码、删除匿名用户等)
sudo mysql_secure_installation
配置方面,有几个关键点:
- 字符集:必须设为utf8mb4。风场数据里偶尔会有特殊字符,用utf8会报错。我遇到过因为一个风机名称里带了个生僻字,导致整个采集程序崩溃的案例。
- 最大连接数:建议设为500以上。一个风场少说几十台风机,每台风机多个采集点,连接数不够的话,数据就会丢。
- 开启远程访问:修改
/etc/mysql/mysql.conf.d/mysqld.cnf,把bind-address = 127.0.0.1改成0.0.0.0。注意:生产环境要限制IP白名单。
警告: 千万别在生产环境用默认的root密码远程登录!我曾经见过一个风场,因为数据库被弱口令爆破,导致所有历史数据被删,损失惨重。至少创建一个专用用户,只给必要的权限。
2.2.2 InfluxDB 安装与配置
InfluxDB 2.x 是目前的主流版本。它自带Web UI,管理起来很方便。
# 添加InfluxDB源
wget -q https://repos.influxdata.com/influxdata-archive_compat.key
echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
# 安装
sudo apt update && sudo apt install influxdb2 -y
# 启动服务
sudo systemctl start influxdb
sudo systemctl enable influxdb
配置要点:
- 数据保留策略:风场数据量巨大,建议设置自动过期。比如原始采集数据保留30天,聚合数据保留1年。
- 存储路径:默认在
/var/lib/influxdb2/,建议挂载到独立的数据盘,避免系统盘写满。 - 认证与Token:InfluxDB 2.x 使用Token认证,别用默认的Token,一定要生成新的。
避坑指南: 我曾经在一个项目中,InfluxDB的bucket(相当于数据库)命名用了中文,结果API调用时一直报编码错误。后来全部改成英文+下划线,问题解决。所以,命名规范很重要。
2.3 Python环境与依赖库安装
Python 3.8+ 是标配。我个人习惯用 pyenv 管理多版本,用 virtualenv 或 conda 管理项目环境。为什么?因为不同项目依赖的库版本可能冲突,你总不想因为一个库的版本问题,把整个系统搞崩吧?
# 安装pyenv
curl https://pyenv.run | bash
# 安装Python 3.10
pyenv install 3.10.12
# 创建项目虚拟环境
pyenv virtualenv 3.10.12 wind_monitor
# 激活环境
pyenv activate wind_monitor
核心依赖库清单:
| 库名 | 用途 | 安装命令 |
|---|---|---|
| pymysql | 连接MySQL数据库 | pip install pymysql |
| influxdb-client | 连接InfluxDB 2.x | pip install influxdb-client |
| paho-mqtt | MQTT协议通信(采集风机数据) | pip install paho-mqtt |
| pyqt5 / pyside6 | 上位机UI界面开发 | pip install pyqt5 |
| numpy / pandas | 数据处理与分析 | pip install numpy pandas |
| schedule | 定时任务调度 | pip install schedule |
重要提醒: 依赖库安装完成后,一定要做一次 pip freeze > requirements.txt。这样后续部署到其他机器时,直接 pip install -r requirements.txt 就能一键还原环境。这个习惯,能帮你省下大量排错时间。
嗯,说到依赖冲突,我有个血泪教训。有一次我在一个项目里同时用了 pymysql 和 mysql-connector-python,结果两个库的底层实现冲突,导致数据库连接时断时续。排查了整整两天才发现问题。所以,同一个数据库,只用一个驱动库,别混着用。
2.4 本章知识体系总览
下面这张图,是我自己总结的开发环境搭建核心逻辑。你看一眼,心里就有数了:
说白了,开发环境搭建就是打好地基。地基不稳,上面盖的房子再漂亮也是危房。操作系统是底座,数据库是仓库,Python是工具,依赖库是零件——缺一不可。
好了,这一章的内容就到这儿。环境搭好了,下一章咱们就开始真正动手写代码了。