# BLS心跳接收端发布流程 ## 环境要求 - Windows Server系统 - Node.js 环境(已安装) - PM2 进程管理器(已安装) - PostgreSQL 数据库 - Kafka 消息队列 - Redis(可选) ## 发布流程 ### 1. 准备发布包 在开发机器上执行以下命令: ```bash # 安装依赖 npm install # 构建项目 npm run build # 创建发布包(包含必要的文件) # 方法1:手动复制文件 # 复制以下文件到发布目录: # - dist/ (构建后的文件) # - package.json # - package-lock.json # - src/config/config.example.js # - scripts/db/ (数据库脚本) # 方法2:使用压缩包 # 创建包含上述文件的压缩包 ``` ### 2. 上传到目标服务器 将发布包上传到目标服务器的指定目录,例如:`C:\BLS_Heartbeat_Server` ### 3. 在目标服务器上部署 ```bash # 进入项目目录 cd C:\BLS_Heartbeat_Server # 安装生产依赖 npm install --production # 创建环境变量文件 # 复制配置示例并修改 copy src\config\config.example.js src\config\config.js # 或者创建 .env 文件(推荐) # 复制 .env.example 并修改为 .env copy .env.example .env # 编辑配置文件,设置实际的数据库、Kafka、Redis连接信息 notepad .env ``` ### 4. 配置环境变量 编辑 `.env` 文件,设置以下关键配置: ```env # 应用配置 NODE_ENV=production PORT=3000 # Kafka配置 KAFKA_BROKERS=localhost:9092 KAFKA_TOPIC=blwlog4Nodejs-rcu-heartbeat-topic KAFKA_GROUP_ID=bls-heartbeat-consumer KAFKA_CONSUMER_INSTANCES=6 # PostgreSQL配置 POSTGRES_HOST=127.0.0.1 POSTGRES_PORT=5432 POSTGRES_DATABASE=log_platform POSTGRES_USER=log_admin POSTGRES_PASSWORD=your_password # Redis配置(可选) REDIS_ENABLED=true REDIS_HOST=10.8.8.109 REDIS_PORT=6379 REDIS_PASSWORD= REDIS_DB=15 # 日志配置 LOG_LEVEL=info LOG_FORMAT=json ``` ### 5. 初始化数据库 ```bash # 运行数据库初始化脚本 npm run db:apply ``` ### 6. 使用PM2启动服务 ```bash # 使用PM2启动服务 pm2 start ecosystem.config.js # 查看服务状态 pm2 status # 查看日志 pm2 logs web-bls-heartbeat-server # 查看详细信息 pm2 show web-bls-heartbeat-server ``` ### 7. 设置PM2开机自启 ```bash # 保存当前PM2进程列表 pm2 save # 设置开机自启(Windows需要管理员权限) pm2 startup ``` ## PM2配置说明 项目提供了 `ecosystem.config.js` 配置文件,包含以下配置: - 应用名称:`web-bls-heartbeat-server` - 运行模式:`cluster`(集群模式) - 实例数量:根据CPU核心数自动设置 - 日志文件:`logs/` 目录下 - 环境变量:从 `.env` 文件加载 ## 监控和维护 ### 查看服务状态 ```bash # 查看所有服务状态 pm2 status # 查看特定服务状态 pm2 show web-bls-heartbeat-server # 实时监控 pm2 monit ``` ### 日志管理 ```bash # 查看实时日志 pm2 logs web-bls-heartbeat-server # 查看错误日志 pm2 logs web-bls-heartbeat-server --err # 清空日志 pm2 flush # 日志轮转(需要安装pm2-logrotate) pm2 install pm2-logrotate ``` ### 服务重启 ```bash # 重启服务 pm2 restart web-bls-heartbeat-server # 优雅重启(集群模式) pm2 reload web-bls-heartbeat-server # 停止服务 pm2 stop web-bLS-heartbeat-server # 删除服务 pm2 delete web-bls-heartbeat-server ``` ### 更新部署 ```bash # 停止服务 pm2 stop web-bls-heartbeat-server # 备份当前版本 xcopy /E /I /Y C:\BLS_Heartbeat_Server C:\BLS_Heartbeat_Server_backup # 上传新版本文件 # 安装依赖(如果有更新) npm install --production # 重启服务 pm2 start ecosystem.config.js # 验证服务状态 pm2 status pm2 logs web-bls-heartbeat-server ``` ## 故障排查 ### 服务无法启动 1. 检查Node.js版本:`node --version` 2. 检查PM2状态:`pm2 list` 3. 查看错误日志:`pm2 logs web-bls-heartbeat-server --err` 4. 检查配置文件:确认 `.env` 文件配置正确 5. 检查网络连接:确认Kafka、PostgreSQL、Redis服务可访问 ### 数据库连接失败 1. 检查PostgreSQL服务状态 2. 验证数据库连接信息 3. 检查防火墙设置 4. 确认数据库用户权限 ### Kafka连接失败 1. 检查Kafka服务状态 2. 验证Kafka地址和端口 3. 检查主题是否存在 4. 确认消费者组配置 ### Redis连接失败 1. 检查Redis服务状态 2. 验证Redis连接信息 3. 如果不需要Redis,设置 `REDIS_ENABLED=false` ## 性能优化 ### 调整消费者实例数 在 `.env` 文件中修改: ```env KAFKA_CONSUMER_INSTANCES=8 ``` ### 调整批量处理参数 ```env PROCESSOR_BATCH_SIZE=200 PROCESSOR_BATCH_TIMEOUT=3000 ``` ### 调整数据库连接池 ```env DB_MAX_CONNECTIONS=10 DB_IDLE_TIMEOUT_MS=30000 ``` ## 安全建议 1. 不要在代码中硬编码密码,使用环境变量 2. 限制数据库和Redis的访问IP 3. 定期更新依赖包:`npm audit fix` 4. 配置防火墙规则,限制不必要的端口访问 5. 定期备份配置文件和数据库 ## 备份策略 ### 配置文件备份 ```bash # 备份环境配置 copy .env .env.backup # 备份PM2配置 pm2 save ``` ### 数据库备份 ```bash # 使用pg_dump备份数据库 pg_dump -h localhost -U log_admin -d log_platform > backup.sql ``` ## 联系支持 如有问题,请查看项目文档或联系技术支持团队。