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 管理多版本,用 virtualenvconda 管理项目环境。为什么?因为不同项目依赖的库版本可能冲突,你总不想因为一个库的版本问题,把整个系统搞崩吧?

# 安装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 就能一键还原环境。这个习惯,能帮你省下大量排错时间。

嗯,说到依赖冲突,我有个血泪教训。有一次我在一个项目里同时用了 pymysqlmysql-connector-python,结果两个库的底层实现冲突,导致数据库连接时断时续。排查了整整两天才发现问题。所以,同一个数据库,只用一个驱动库,别混着用。

2.4 本章知识体系总览

下面这张图,是我自己总结的开发环境搭建核心逻辑。你看一眼,心里就有数了:

开发环境搭建核心逻辑 操作系统 (Ubuntu Server) MySQL (结构化数据) InfluxDB (时序数据) Python 3.10 + 虚拟环境 pymysql / influxdb-client paho-mqtt pyqt5 / pyside6 numpy / pandas ✅ 可运行的上位机监控系统

说白了,开发环境搭建就是打好地基。地基不稳,上面盖的房子再漂亮也是危房。操作系统是底座,数据库是仓库,Python是工具,依赖库是零件——缺一不可。

好了,这一章的内容就到这儿。环境搭好了,下一章咱们就开始真正动手写代码了。


专注资料整理