# 服务器部署操作指南 本文档提供服务器环境配置和 Nacos 配置的详细步骤。 ## 第一步:服务器环境配置 ### 1. SSH 登录服务器 ```bash ssh root@124.221.55.225 ``` ### 2. 创建项目目录 ```bash # 创建项目目录 mkdir -p /opt/aiot-platform-cloud cd /opt/aiot-platform-cloud ``` ### 3. 下载配置文件 ```bash # 下载 docker-compose 配置 wget http://172.17.16.14:3000/XW-AIOT/aiot-platform-cloud/raw/branch/master/docker-compose.core.yml # 下载环境变量模板 wget http://172.17.16.14:3000/XW-AIOT/aiot-platform-cloud/raw/branch/master/.env.example # 或者使用 git clone(推荐) git clone http://172.17.16.14:3000/XW-AIOT/aiot-platform-cloud.git . ``` ### 4. 创建并编辑 .env 文件 ```bash # 复制模板 cp .env.example .env # 编辑配置 vi .env ``` ### 5. 必须修改的配置项 在 `.env` 文件中,按 `i` 进入编辑模式,修改以下内容: ```bash # ============ 数据库配置 ============ # 从 1Panel 获取 MySQL 密码 MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 MYSQL_ROOT_PASSWORD=你的1Panel_MySQL_root密码 # ← 修改这里 MYSQL_DATABASE=aiot_platform MYSQL_USER=aiot MYSQL_PASSWORD=你的aiot用户密码 # ← 修改这里 # ============ Redis 配置 ============ # 从 1Panel 获取 Redis 密码 REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASSWORD=你的1Panel_Redis密码 # ← 修改这里 REDIS_DATABASE=0 # ============ Nacos 配置 ============ # 从 1Panel 获取 Nacos 配置 NACOS_HOST=127.0.0.1 NACOS_PORT=8848 NACOS_NAMESPACE= # 留空使用 public 命名空间,或填写 aiot-platform NACOS_USERNAME=nacos NACOS_PASSWORD=你的1Panel_Nacos密码 # ← 修改这里 # ============ RocketMQ 配置 ============ ROCKETMQ_NAMESRV_HOST=127.0.0.1 ROCKETMQ_NAMESRV_PORT=9876 # ============ IoT Gateway 特有配置 ============ # 生产环境必须修改为强密钥(至少32位) IOT_TOKEN_SECRET=你的强密钥_至少32位字符 # ← 修改这里 ``` **保存并退出**: - 按 `Esc` 退出编辑模式 - 输入 `:wq` 保存并退出 ### 6. 验证配置 ```bash # 查看配置(隐藏密码) cat .env | grep -v PASSWORD | grep -v SECRET # 测试 MySQL 连接 mysql -h 127.0.0.1 -P 3306 -u aiot -p # 输入密码后,如果能连接成功,说明配置正确 # 测试 Redis 连接 redis-cli -h 127.0.0.1 -p 6379 -a 你的Redis密码 PING # 应该返回 PONG # 测试 Nacos 连接 curl http://127.0.0.1:8848/nacos/v1/console/health/readiness # 应该返回 UP ``` ### 7. 如何获取 1Panel 中间件密码 #### 获取 MySQL 密码 ```bash # 在 1Panel 面板中 1. 进入"数据库" → "MySQL" 2. 找到 root 用户,点击"查看密码" 3. 复制密码到 .env 文件 ``` #### 获取 Redis 密码 ```bash # 在 1Panel 面板中 1. 进入"应用商店" → "已安装" 2. 找到 Redis,点击"设置" 3. 查看"requirepass"配置 4. 复制密码到 .env 文件 ``` #### 获取 Nacos 密码 ```bash # 在 1Panel 面板中 1. 进入"应用商店" → "已安装" 2. 找到 Nacos,点击"设置" 3. 查看环境变量中的密码 4. 复制密码到 .env 文件 ``` --- ## 第二步:Nacos 配置管理 ### 1. 访问 Nacos 控制台 ``` URL: http://124.221.55.225:8848/nacos 用户名: nacos 密码: 你的Nacos密码 ``` ### 2. 创建命名空间(可选) **推荐创建独立的命名空间用于生产环境** 1. 点击左侧菜单"命名空间" 2. 点击右上角"新建命名空间" 3. 填写信息: - **命名空间名**: `aiot-platform` - **命名空间ID**: `aiot-platform`(自动生成) - **描述**: `AIOT 平台生产环境` 4. 点击"确定" ### 3. 为每个服务创建配置 #### 配置 1: system-server **Data ID**: `system-server-prod.yaml` **Group**: `DEFAULT_GROUP` **配置格式**: `YAML` **配置内容**: ```yaml # 系统服务配置 spring: datasource: dynamic: datasource: master: url: jdbc:mysql://127.0.0.1:3306/aiot_platform?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true username: aiot password: 你的MySQL密码 # ← 在这里填写实际密码 data: redis: host: 127.0.0.1 port: 6379 password: 你的Redis密码 # ← 在这里填写实际密码 database: 0 # 日志级别(可动态调整) logging: level: com.viewsh.module.system: INFO ``` #### 配置 2: infra-server **Data ID**: `infra-server-prod.yaml` **Group**: `DEFAULT_GROUP` **配置格式**: `YAML` **配置内容**: ```yaml # 基础设施服务配置 spring: datasource: dynamic: datasource: master: url: jdbc:mysql://127.0.0.1:3306/aiot_platform?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true username: aiot password: 你的MySQL密码 data: redis: host: 127.0.0.1 port: 6379 password: 你的Redis密码 database: 0 logging: level: com.viewsh.module.infra: INFO ``` #### 配置 3: iot-server **Data ID**: `iot-server-prod.yaml` **Group**: `DEFAULT_GROUP` **配置格式**: `YAML` **配置内容**: ```yaml # IoT 业务服务配置 spring: datasource: dynamic: datasource: master: url: jdbc:mysql://127.0.0.1:3306/aiot_platform?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true username: aiot password: 你的MySQL密码 data: redis: host: 127.0.0.1 port: 6379 password: 你的Redis密码 database: 0 rocketmq: name-server: 127.0.0.1:9876 viewsh: iot: message-bus: type: redis logging: level: com.viewsh.module.iot: INFO ``` #### 配置 4: iot-gateway-server **Data ID**: `iot-gateway-server-prod.yaml` **Group**: `DEFAULT_GROUP` **配置格式**: `YAML` **配置内容**: ```yaml # IoT 设备网关配置 spring: data: redis: host: 127.0.0.1 port: 6379 password: 你的Redis密码 database: 0 rocketmq: name-server: 127.0.0.1:9876 viewsh: iot: message-bus: type: redis gateway: # 设备 RPC 配置 rpc: url: http://127.0.0.1:48091 connect-timeout: 30s read-timeout: 30s # 设备 Token 配置 token: secret: 你的强密钥_至少32位字符 # ← 生产环境必须修改 expiration: 7d # 协议配置(可动态调整) protocol: http: enabled: true server-port: 8092 mqtt: enabled: true port: 1883 max-message-size: 8192 connect-timeout-seconds: 60 ssl-enabled: false tcp: enabled: false port: 8091 emqx: enabled: false logging: level: com.viewsh.module.iot.gateway: INFO com.viewsh.module.iot.gateway.protocol.mqtt: INFO ``` #### 配置 5: gateway-server **Data ID**: `gateway-server-prod.yaml` **Group**: `DEFAULT_GROUP` **配置格式**: `YAML` **配置内容**: ```yaml # API 网关配置 spring: data: redis: host: 127.0.0.1 port: 6379 password: 你的Redis密码 database: 0 logging: level: com.viewsh.gateway: INFO ``` ### 4. 发布配置 每个配置创建完成后: 1. 点击"发布"按钮 2. 确认配置内容 3. 点击"确定" ### 5. 验证配置 在"配置列表"中可以看到所有已发布的配置: - `system-server-prod.yaml` - `infra-server-prod.yaml` - `iot-server-prod.yaml` - `iot-gateway-server-prod.yaml` - `gateway-server-prod.yaml` --- ## 第三步:部署服务 ### 1. 确认配置完成 ```bash # 检查 .env 文件 cat .env | grep -E "MYSQL_PASSWORD|REDIS_PASSWORD|NACOS_PASSWORD|IOT_TOKEN_SECRET" # 确保所有密码都已填写,不是默认值 ``` ### 2. 在 Jenkins 中触发构建 1. 访问 Jenkins: `http://124.221.55.225:5050/` 2. 进入项目: `aiot-platform-cloud` → `master` 3. 点击"立即构建"(Build Now) ### 3. 监控部署进度 在 Jenkins 中查看构建日志: - ✅ Checkout 代码 - ✅ 检测变更 - ✅ 构建 Docker 镜像 - ✅ 推送到 Registry - ✅ 部署服务 ### 4. 验证服务状态 ```bash # 查看运行中的容器 docker ps # 查看服务日志 docker logs -f aiot-system-server docker logs -f aiot-iot-gateway # 检查健康状态 curl http://127.0.0.1:48081/actuator/health # system-server curl http://127.0.0.1:48091/actuator/health # iot-server curl http://127.0.0.1:48084/actuator/health # iot-gateway ``` --- ## 常见问题 ### Q1: 如何修改 Nacos 中的配置? 1. 登录 Nacos 控制台 2. 找到对应的配置文件 3. 点击"编辑" 4. 修改配置 5. 点击"发布" 6. **配置立即生效,无需重启服务!** ### Q2: 如何查看服务是否连接到 Nacos? ```bash # 查看服务日志 docker logs aiot-system-server | grep nacos # 应该看到类似输出: # Nacos config center started successfully ``` ### Q3: 如果 Nacos 配置错误怎么办? 1. 在 Nacos 控制台点击"历史版本" 2. 选择之前的版本 3. 点击"回滚" 4. 配置立即恢复 ### Q4: 如何生成强密钥? ```bash # 生成 32 位随机密钥 openssl rand -base64 32 # 或者使用在线工具 # https://www.random.org/strings/ ``` --- ## 配置优先级说明 ``` Nacos 配置 > .env 环境变量 > application-prod.yaml 默认值 ``` **推荐做法**: - **基础设施配置**(MySQL、Redis 地址)→ `.env` 文件 - **业务配置**(功能开关、日志级别)→ Nacos 配置中心 - **默认值** → `application-prod.yaml` 这样可以: - ✅ 基础配置稳定(在 .env 中) - ✅ 业务配置灵活(在 Nacos 中动态调整) - ✅ 有默认值兜底(在 application-prod.yaml 中)