# 透析机数据服务 - 可执行文件部署指南 ## 项目概述 **项目名称**: huamo-data-service **版本**: 1.0.0 **描述**: 透析机数据转发服务,接收设备数据并上传至阿里云 IoT **部署方式**: 使用预编译的独立可执行文件部署 ## 可用的执行文件 | 文件名 | 操作系统 | 架构 | 使用场景 | |--------|--------|------|---------| | `index-win.exe` | Windows | x64 | Windows 服务器 | | `index-linux` | Linux | x64 | Linux 服务器 | | `index-macos` | macOS | x64 | macOS 本地开发 | ## 环境要求 ### Windows 部署 - **操作系统**: Windows 7 及以上 - **架构**: x64 - **权限**: 管理员权限(用于开放防火墙端口) - **磁盘空间**: 50 MB ### Linux 部署 - **操作系统**: Linux 2.6 及以上内核 - **架构**: x64 - **权限**: 普通用户即可(如果需要使用 1024 以下端口需要 root) - **磁盘空间**: 50 MB ### macOS 部署 - **操作系统**: macOS 10.13 及以上 - **架构**: Intel x64 - **磁盘空间**: 50 MB ## 快速开始 ### Windows 部署 #### 1. 准备文件 将以下文件复制到部署目录: ``` deployment/ ├── index-win.exe # 可执行文件 └── hmConfig.json # 配置文件 ``` #### 2. 配置文件 编辑 `hmConfig.json`: ```json { "port": 13000, "iotRegion": "cn-shanghai" } ``` #### 3. 运行程序 **方式一:直接双击运行** ``` 双击 index-win.exe ``` **方式二:命令行运行** ```powershell # PowerShell .\index-win.exe # CMD index-win.exe ``` **方式三:后台运行(推荐)** ```powershell # 使用 Start-Process 在后台运行 Start-Process -FilePath "C:\path\to\index-win.exe" -WindowStyle Hidden # 或使用任务调度器(见下文) ``` #### 4. 验证服务状态 ```powershell # 检查端口是否监听 netstat -ano | findstr :13000 # 或者访问健康检查接口 curl http://localhost:13000/health ``` --- ### Linux 部署 #### 1. 准备文件 将以下文件复制到部署目录: ```bash mkdir -p /opt/huamo-service cd /opt/huamo-service # 复制可执行文件和配置文件 cp index-linux . cp hmConfig.json . # 添加执行权限 chmod +x index-linux ``` #### 2. 配置文件 编辑 `hmConfig.json`: ```json { "port": 13000, "iotRegion": "cn-shanghai" } ``` #### 3. 运行程序 **方式一:直接运行** ```bash ./index-linux ``` **方式二:后台运行(推荐)** ```bash # 使用 nohup nohup ./index-linux > service.log 2>&1 & # 或使用 screen screen -S huamo-service ./index-linux # 按 Ctrl+A+D 离开 screen ``` **方式三:使用 Systemd(推荐)** 创建服务文件 `/etc/systemd/system/huamo-service.service`: ```ini [Unit] Description=Huamo Data Service After=network.target [Service] Type=simple User=nobody WorkingDirectory=/opt/huamo-service ExecStart=/opt/huamo-service/index-linux Restart=on-failure RestartSec=10 [Install] WantedBy=multi-user.target ``` 启动服务: ```bash # 重新加载 systemd sudo systemctl daemon-reload # 启动服务 sudo systemctl start huamo-service # 设置开机自启 sudo systemctl enable huamo-service # 查看服务状态 sudo systemctl status huamo-service # 查看服务日志 sudo journalctl -u huamo-service -f ``` #### 4. 验证服务状态 ```bash # 检查端口是否监听 netstat -tlnp | grep 13000 # 或 ss -tlnp | grep 13000 # 访问健康检查接口 curl http://localhost:13000/health ``` --- ## 配置说明 ### hmConfig.json 配置文件 ```json { "port": 13000, "iotRegion": "cn-shanghai" } ``` **配置项说明**: | 配置项 | 类型 | 默认值 | 说明 | |--------|------|--------|------| | port | number | 13000 | 服务监听端口 | | iotRegion | string | cn-shanghai | 阿里云 IoT 区域 | **常见区域代码**: - `cn-shanghai`: 华东2(上海) - `cn-beijing`: 华北2(北京) - `cn-hangzhou`: 华东1(杭州) - `cn-shenzhen`: 华南1(深圳) --- ## API 接口 ### 接收设备数据 **请求方式**: POST **接口路径**: `/api/message` **请求头**: `Content-Type: application/json` **请求体示例**: ```json { "MAC": "00:11:22:33:44:55", "IP": "192.168.1.100", "DataBase": { "temperature": 37.5, "pressure": 120 } } ``` **响应成功(200)**: ```json { "success": true, "message": "数据接收并转发成功", "deviceId": "productKey/deviceName" } ``` **响应失败(400)**: ```json { "success": false, "message": "缺少必要字段: MAC, ip, data" } ``` ### 健康检查 **请求方式**: GET **接口路径**: `/health` **响应示例**: ```json { "status": "OK", "clients": 5, "cacheSize": 10, "timestamp": "2025-12-10T12:34:56.789Z" } ``` --- ## Windows 任务调度器自动启动 ### 设置开机自启动 1. **打开任务调度器** - 按 `Win+R` 输入 `taskschd.msc` 2. **创建基本任务** - 右键点击"任务计划程序库" → "创建基本任务" - 任务名称:`Huamo Data Service` - 描述:`透析机数据服务` 3. **设置触发器** - 开始任务:`启动时` 4. **设置操作** - 操作:`启动程序` - 程序或脚本:`C:\path\to\index-win.exe` - 起始于:`C:\path\to\` 5. **设置条件** - 勾选"如果计算机在后台电源使用时唤醒计算机" - 勾选"忽略条件以强制启动任务" 6. **完成** - 点击"完成" ### 验证任务 ```powershell # 查看任务 Get-ScheduledTask -TaskName "Huamo Data Service" # 运行任务 Start-ScheduledTask -TaskName "Huamo Data Service" # 停止任务 Stop-ScheduledTask -TaskName "Huamo Data Service" ``` --- ## Linux 自动启动 ### 使用 Systemd(推荐) 见上面 Systemd 部分 ### 使用 Crontab 编辑 crontab: ```bash crontab -e ``` 添加以下行: ```cron @reboot /opt/huamo-service/index-linux > /opt/huamo-service/huamo.log 2>&1 ``` --- ## 日志和调试 ### Windows 日志查看 ```powershell # 查看事件查看器(应用程序事件日志) eventvwr.msc ``` ### Linux 日志查看 ```bash # 查看 systemd 日志 journalctl -u huamo-service -n 50 -f # 查看实时日志 tail -f /opt/huamo-service/huamo.log # 查看最近错误 grep -i error /opt/huamo-service/huamo.log ``` --- ## 故障排查 ### 问题:程序无法启动 **Windows**: ```powershell # 使用详细模式运行查看错误 .\index-win.exe 2>&1 | tee output.log ``` **Linux**: ```bash # 直接运行查看错误信息 ./index-linux ``` ### 问题:端口已被占用 **Windows**: ```powershell # 查找占用端口的进程 netstat -ano | findstr :13000 # 杀死进程(PID 为进程号) taskkill /PID /F ``` **Linux**: ```bash # 查找占用端口的进程 lsof -i :13000 # 或 ss -tlnp | grep 13000 # 杀死进程 kill -9 ``` ### 问题:无法连接阿里云 IoT 1. 检查配置文件中的 iotRegion 是否正确 2. 检查网络连接是否正常 3. 检查阿里云 IoT 的三元组信息是否正确 4. 确认防火墙未阻止出站连接 ### 问题:性能问题或内存占用过高 **Windows**: ```powershell # 查看进程资源占用 Get-Process | findstr index-win ``` **Linux**: ```bash # 查看进程资源占用 ps aux | grep index-linux # 实时监控 top -p ``` --- ## 性能优化 ### 推荐配置 | 配置项 | 推荐值 | 说明 | |--------|--------|------| | port | 13000 | 避免使用 80、443 等特殊端口 | | iotRegion | 根据实际位置 | 选择离服务器最近的区域 | | 内存 | 512 MB+ | 根据设备数量调整 | ### 部署拓扑建议 **小型部署(1-10 个设备)**: ``` ┌─────────────┐ │ 单台服务器 │ (index-win.exe 或 index-linux) └─────────────┘ ``` **中型部署(10-100 个设备)**: ``` ┌────────────────────┐ │ 负载均衡器 │ └────────┬───────────┘ │ ┌─────────┼─────────┐ │ │ │ ┌───▼──┐ ┌───▼──┐ ┌───▼──┐ │服务器1│ │服务器2│ │服务器3│ └──────┘ └──────┘ └──────┘ ``` --- ## 备份和恢复 ### 备份配置 ```bash # Windows xcopy hmConfig.json backup\hmConfig.json.bak /Y # Linux cp hmConfig.json backup/hmConfig.json.bak ``` ### 迁移到新服务器 1. 复制 `index-win.exe` 或 `index-linux` 2. 复制 `hmConfig.json` 3. 修改配置中的端口或区域 4. 启动服务 --- ## 监控建议 ### Windows 监控 使用 Windows 性能监控器: ```powershell perfmon.msc ``` ### Linux 监控 使用系统监控工具: ```bash # 使用 Prometheus + Grafana # 或者简单的 CPU/内存监控 watch -n 1 'ps aux | grep index-linux' ``` --- ## 升级说明 ### 升级步骤 1. **停止当前服务** - Windows: `taskkill /IM index-win.exe /F` - Linux: `sudo systemctl stop huamo-service` 2. **备份配置** ```bash cp hmConfig.json hmConfig.json.backup ``` 3. **替换可执行文件** - 使用新版本的 `index-win.exe` 或 `index-linux` 替换旧文件 4. **启动新版本** - Windows: `.\index-win.exe` - Linux: `sudo systemctl start huamo-service` 5. **验证服务** ```bash curl http://localhost:13000/health ``` --- ## 支持和反馈 - **作者**: cyc - **License**: MIT - **问题报告**: 提交日志和错误信息 --- ## 快速参考 ### Windows 常用命令 ```powershell # 启动服务 .\index-win.exe # 后台启动 Start-Process -FilePath ".\index-win.exe" -WindowStyle Hidden # 查看端口 netstat -ano | findstr :13000 # 健康检查 curl http://localhost:13000/health ``` ### Linux 常用命令 ```bash # 启动服务 ./index-linux # 后台启动 nohup ./index-linux > huamo.log 2>&1 & # 查看端口 netstat -tlnp | grep 13000 # 健康检查 curl http://localhost:13000/health # 查看日志 journalctl -u huamo-service -f ``` --- ## 版本历史 - v1.0.0 - 初始可执行文件版本发布