跳到主要内容

Windows平台部署

说明

我们以Windows 10/11 为例介绍YFIOs 物联网平台标准落地部署流程。

1 安装 MySQL 5.7

安装

下载MySQL5.7压缩包 https://www.yfios.net/download/deploy/MySQL_WIN_5.7.zip

解压到任意目录(建议目录中不要有中文和空格),建议 D:\MySQL。 如果启用my.ini文件,那么可以在D:\MySQL目录下新建my.ini文件,并写入如下内容:

[client]
port=3306
default-character-set=utf8mb4

[mysqld]
# 设置为MYSQL的安装目录
basedir = "D:/MySQL"
# 设置为MYSQL的数据目录
datadir = "D:/MySQL/data"

port=3306
#utf8
character_set_server=utf8mb4
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER

#开启查询缓存
explicit_defaults_for_timestamp=true
log_error ="D:/MySQL/error.log"

#运行最大连接数
max_connections=200
#运行连接失败的次数。这也是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10

#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4

#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci

#设置client连接mysql时的字符集,防止乱码
#init_connect=‘SET NAMES utf8mb4’

#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names = 1

#--------------------------
# 慢查询开启状态
slow_query_log = 1
# 慢查询日志存放的位置
slow_query_log_file = "D:/MySQL/slow.log"

#--------------------------
#启用binlog日志(也叫二进制日志)
#log_bin="D:/MySQL/logbin/mysql-bin"
#忽略的数据库,不需要同步的(可以重复多个)
#binlog_ignore_db=mysql
#指定同步的数据库(可以重复多个)
#binlog_do_db=yftest

#数据库服务器的唯一标识,主数据库的server_ID必须小于从数据库的server_ID, 为0则拒绝从服务器连接
server_id=2

# 1- 只读 0-读写
read_only=1

以管理员权限打开cmd,进入解压目录D:\MySQL\bin 执行如下指令:

# 安装服务
mysqld -install

# 初始化数据库 命令要对,中间不能有空格
mysqld --initialize-insecure

# 启动mysql服务
net start mysql

# 登录mysql
mysql -uroot -p

# 设置密码
set password for root@localhost = password('yfsoft1018#mysql');

MySQL信息

初始化数据库

下载 YFIOs数据库及表 初始化文件,解压到D:\MySQL\mysql_config_files目录 https://www.yfios.net/download/deploy/mysql_config_files.rar

mysql_config_files目录/
├── 00-init-db_5.7.sql # 必须第一个导入
├── yf_user.sql
├── yf_role.sql
├── yf_device.sql
└── ... ...

安装 Navicat Premium 工具

下载 Navicat Premium 工具 试用版本:https://www.yfios.net/download/deploy/Navicat_16.2.rar

安装完毕后,打开 Navicat Premium 工具,单击左上角“连接"工具栏图标,连接我们刚部署的 MySQL 数据库。
密码填写:yfsoft1018#mysql

MySQL连接

连接成功后,右键单击该链接,在右键菜单中选择“运行SQL文件”,我们依次导入00-init-db_5.7.sql(必须第一个导入),yf_user.sql等等sql文件。

MySQL导入

2 安装 TDengine 3.0.7

TDengine Server Windows上最后免费下载的版本是3.0.7,建议采用Docker或者在Ubuntu系统上安装最新版本。

下载安装

下载地址:https://www.yfios.net/download/deploy/TDengine-server-3.0.7.1-Windows-x64.exe

将下载好的 TDengine-server-3.0.7.1-Windows-x64.exe 放到任意目录,直接双击运行安装程序,全程保持默认配置下一步即可。
软件默认安装路径为:C:\TDengine\

  • 默认端口:6041
  • 默认密码:空密码(直接回车即可登录)

安装完成后,打开系统 “服务” 管理界面,可以看到已注册两个系统服务:taosd 和 taosadapter。
默认情况下两个服务均为手动启动且未运行,建议根据使用需求设置为自动启动。
部署时请先手动将这两个服务启动,再进行后续连接和使用。

双击桌面上的Taos Shell快捷方式,进入命令行操作页面,我们设置一下密码。

Taos修改密码

taos 

# 修改密码
ALTER USER root PASS 'yfsoft1018#taos';

设置密码后,需要输入密码才能登录成功。

# 进入taos
c:\TDengine>taos -u root -pyfsoft1018#taos

# 创建数据库
taos> CREATE DATABASE IF NOT EXISTS yfios_iot_db;
taos> quit;

# 验证密码 返回结果包含 yfios_iot_db 即成功。
c:\TDengine>curl -u "root:yfsoft1018#taos" -d "show databases;" http://127.0.0.1:6041/rest/sql

3 安装Redis 3.2.100

Windows下的Redis版本比较老,不过不影响使用。如果想使用最高版本,建议采用Docker或者在Ubuntu系统下安装。

下载安装

下载地址:https://www.yfios.net/download/deploy/redis_3.2.100.rar 建议解压到 D:\redis

# 注册windows服务,开机自运行
D:\redis> redis-server --service-install redis.windows-service.conf

# 启动服务
D:\redis> redis-server --service-start

# 验证服务
D:\redis> redis-cli -h 127.0.0.1 -p 6379 -a YFRedis1018

# 停止服务
# D:\redis> redis-server --service-stop

# 卸载服务
# D:\redis> redis-server --service-uninstall

在 redis.windows-service.conf 文件里面已经配置了密码:YFRedis1018

4 安装 EMQX v5.3.2

版本说明:EMQX v5.3.2 是 Windows 平台的最后一个免费版本(Linux 平台对应版本为 v5.8.6)。

安装建议:为确保环境兼容性并简化配置流程,建议下载我们预先集成的定制安装包。该版本已完成核心参数优化与服务预配置,解压即可实现快速部署。

下载地址:https://www.yfios.net/download/deploy/EMQX_5.3.2.rar
建议解压到 D:\EMQX

# 启动服务
D:\EMQX\bin> emqx.cmd start

# 停止服务
# D:\EMQX\bin> emqx.cmd stop

# 重启服务
# D:\EMQX\bin> emqx.cmd restart

# 查看状态
D:\EMQX\bin> emqx_ctl status

安装服务

实测发现,定制版EMQX已默认配置为开机自启动服务,无需手动执行emqx.cmd install命令。直接使用emqx.cmd start启动服务后,电脑重启时服务将自动恢复运行。

# 安装服务
D:\EMQX\bin> emqx.cmd install

# 卸载服务
# D:\EMQX\bin> emqx.cmd uninstall

5. 安装 Nginx 1.21.6

环境部署

  • 下载地址https://www.yfios.net/download/deploy/nginx_1.21.6.rar
  • 安装路径:请务必将压缩包解压至 D:\nginx 目录。

    注意:若安装路径非 D:\nginx,则必须同步修改 nginx_service.xml和WinSW-x64.xml 中的路径配置,否则服务将无法正常启动。

  • 配置说明:本安装包已针对 YFIOs 平台 完成 nginx.conf 初始化。若后续前端静态资源路径有变动,请手动调整 nginx.conf

Windows 服务管理 (推荐)

本包采用 WinSW 将 Nginx 注册为系统服务,实现开机自启及后台静默运行。请以管理员权限打开终端,进入 D:\nginx 目录执行以下指令:

操作指令说明
安装服务WinSW-x64.exe install将 Nginx 注册到 Windows 服务列表
启动服务WinSW-x64.exe start启动后台 Nginx 进程
停止服务WinSW-x64.exe stop停止后台服务
重启服务WinSW-x64.exe restart重新加载服务
卸载服务WinSW-x64.exe uninstall从系统中移除 Nginx 服务

Nginx 原生常用指令

重要提示:当 Nginx 作为 Windows 服务运行时,应优先使用 WinSW 指令管理。若需临时调试或热更新配置,可使用以下原生指令:

  • 配置检查nginx -t (修改 nginx.conf 后务必先执行此项,确保语法无误)
  • 热加载配置nginx -s reload (不停止服务的情况下应用新配置)
  • 版本查看nginx -vnginx -V (查看详细编译参数)
  • 强制停止nginx -s stop
  • 优雅退出nginx -s quit (等待当前请求处理完成后再关闭)
  • 指定配置文件nginx -c <filename>

💡 避坑小贴士: 在 Windows 下,若发现 WinSW 启动失败,通常是由于 80 端口被占用(如 System 进程或 IIS)或 nginx_service.xml 中的路径与实际不符。您可以先执行 nginx -t 查看具体报错信息。

6 安装 Node.js 20.x

在安装 Node.js 之前,我们强烈建议先安装 NVM

什么是 NVM?

NVM (Node Version Manager) 是 Node.js 的版本管理器

  • 核心作用:它允许你在同一台电脑上安装、切换多个不同版本的 Node.js。
  • 为什么用它?:不同的项目可能依赖不同版本的 Node.js(例如 YFIOs 推荐使用 v20,但老项目可能需要 v14)。使用 NVM 可以避免版本冲突,只需一行指令即可实现版本无缝切换,而无需反复卸载重装。

第一步:安装 NVM

  1. 下载https://www.yfios.net/download/deploy/nvm-setup.rar
  2. 解压并运行:解压后运行 nvm-setup.exe
  3. 安装路径
    • NVM Installation Path:建议为D:\nvm(或选择不带空格的路径)。
    • Node.js Symlink:这是 Node.js 的快捷指向路径,建议设为 D:\nvm\nodejsD:\nodejs

NVM

第二步:通过 NVM 安装 Node.js 20.x

Node.js 20 是目前的长期支持版本(LTS),性能稳定且兼容性强。

  1. 配置镜像源(加速下载): 为了在国内快速下载,请先在终端执行以下指令,将下载源指向阿里云:

    nvm node_mirror https://npmmirror.com/mirrors/node/
    nvm npm_mirror https://npmmirror.com/mirrors/npm/
  2. 执行安装指令: 在终端输入以下命令安装 Node.js 20:

    nvm install 20.18.3

    注:20.18.3 是 v20 系列中非常稳定的版本。

  3. 应用版本: 安装完成后,必须手动指定使用该版本:

    nvm use 20.18.3
  4. 确认结果: 分别输入以下指令检查版本:

    node -v   # 应输出 v20.18.3
    npm -v # 应输出 10.x.x

第三步:安装pnpm

为了让 YFIOs 后端依赖安装更快,建议全局安装 pnpm

npm install -g pnpm
# 验证
pnpm -v

NVM 常用指令速查

指令说明
nvm list available查看云端所有可安装的 Node.js 版本
nvm list查看本地已安装的所有版本
nvm install <version>安装指定版本(如 nvm install 18.16.0
nvm use <version>切换到指定版本
nvm uninstall <version>卸载指定版本

💡 避坑提示: 如果在执行 nvm use 时提示 exit status 1: ...拒绝访问,请务必以 管理员身份 运行 CMD 或 PowerShell。

7 安装 PM2

全局安装 PM2

首先,确保您已经按照上一节安装好了 Node.js。打开 管理员权限 的 PowerShell 或 CMD,执行:

# 全局安装 pm2
npm install pm2 -g

# 验证安装
pm2 -v

配置开机自启服务

在 Windows 上,我们推荐使用 pm2-windows-startup 包,它的兼容性较好。

安装自启工具

npm install pm2-windows-startup -g

运行配置指令

执行以下命令来创建 Windows 服务:

pm2-startup install

注意:执行此命令后,PM2 会被注册到 Windows 的“服务”列表中,确保电脑重启后 PM2 守护进程能自动运行。

保存当前进程状态

这是最关键的一步。PM2 在开机时只会启动它“记得”的进程。

  1. 启动您的业务程序(以 YFIOs 为例):

    # 进入您的项目目录
    pm2 start ecosystem.config.js
  2. 锁定保存状态: 当您的所有程序(后端、采集插件等)都在 PM2 列表中正常运行(Online)时,执行:

    pm2 save

    此命令会将当前正在运行的进程列表写入到 dump.pm2 文件中。开机时,服务会自动读取该文件并恢复进程。

常用管理指令速查

操作指令
查看所有进程pm2 list
查看实时日志pm2 logs
停止某个进程pm2 stop <ID或Name>
重启某个进程pm2 restart <ID或Name>
查看进程详情pm2 show <ID>
监控 CPU/内存pm2 monit

💡 避坑指南:

  1. 管理员权限:所有的 installstartup 指令必须在管理员身份运行的终端执行,否则无法写入系统注册表。
  2. 环境变量:如果您使用了 NVM 切换了 Node.js 版本,请确保在 pm2-startup install 时使用的是您最终要运行业务的那个版本,因为服务会锁定当时的 Node 路径。
  3. 内存限制:如果您的 Windows 服务器内存较小,建议在 ecosystem.config.js 中配置 max_memory_restart: '1G',防止 Node.js 内存溢出导致服务僵死。

8 部署YFIOs项目文件

创建 YFIOs 项目目录

mkdir D:\app\yfios-platform && cd /d D:\app\yfios-platform

手动下载项目文件包

下载 YFIOs2.0.0 项目文件包,解压到 D:\app\yfios-platform 目录下。

环境变量配置

配置文件为:D:/app/yfios-platform/backend/packages/.env,用记事本可以直接打开。 假如本地IP地址为:192.168.1.197,内容如下(请根据实际进行配置):

  # ======================
# 文件路径环境变量
# ======================
BASE_OTA_UPLOAD_PATH="/app/data/upload/firmware"
BASE_USER_IMAGE_PATH="/app/data/download/image/user"
BASE_COMPANY_IMAGE_PATH="/app/data/download/image/company"

# ======================
# Redis 环境变量
# ======================
REDIS_HOST="127.0.0.1"
REDIS_PORT="6379"
REDIS_PASSWORD="YFRedis1018"
REDIS_DB="1"

# ======================
# MySQL 环境变量
# ======================
RDB_MYSQL_IOT_HOST="127.0.0.1"
RDB_MYSQL_IOT_PORT="3306"
RDB_MYSQL_IOT_USERNAME="yfios"
RDB_MYSQL_IOT_PASSWORD="yfsoft1018#mysql"
RDB_MYSQL_IOT_DATABASE="yfios-platform-db"

# ======================
# TDengine 环境变量
# ======================
RTB_TDENGINE_HOST="127.0.0.1"
RTB_TDENGINE_PORT="6041"
RTB_TDENGINE_USER="root"
RTB_TDENGINE_PASSWD="yfsoft1018#taos"
RTB_TDENGINE_DATABASENAME="yfios_iot_db"

# ======================
# MQTT 外部地址环境变量
# ======================
MQTT_MQTT_TCP="mqtt://192.168.1.197:1883"
MQTT_MQTT_TLS="mqtts:/192.168.1.197:8883"
MQTT_MQTT_WS="ws://192.168.1.197:1888"
MQTT_EMQX_MQTT_WS="ws://192.168.1.197:8083"
MQTT_MQTT_WSS="wss://192.168.1.197:8888"

【重要!!!】
1 以上内容中的/app 需要替换为 D:/app

2 用记事本打开文件:D:\app\yfios-platform\backend\packages\config\dist\config.module.js
/app/yfios-platform/backend/packages/.env 替换为 D:/app/yfios-platform/backend/packages/.env

使用PM2管理YFIOs后端服务

以管理员权限打开cmd命令行,进入项目目录,执行以下命令启动服务

cd /d D:\app\yfios-platform\backend

# 根据 lockfile 安装生产环境依赖(不安装开发依赖),并锁定版本防止自动更新
pnpm install --prod --frozen-lockfile
# 清理 pnpm 全局存储中未被任何项目引用的过期缓存包,释放磁盘空间
pnpm store prune
# 启动服务
pm2 start ecosystem.config.js
pm2 save

9 YFIOs 平台访问

http://192.168.1.197/ 若正常展示系统登录界面,即代表 YFIOs 平台部署完成。 YFIOs

  • 默认登录账号: admin
  • 默认登录密码:yf123456

10 EMQX 管理控制服务访问

http://192.168.1.197:18083/
若可正常进入控制台登录页面,即代表 EMQX 服务部署正常。 EMQX

  • 默认管理账号:admin
  • 默认管理密码:public