Files
aiot-platform-cloud/docs/server-deployment-guide.md
lzh 7d0949ffbe docs: 添加服务器部署和 Nacos 配置完整指南
- 详细的 .env 文件配置步骤
- Nacos 配置中心使用指南
- 为所有 5 个核心服务提供配置模板
- 包含常见问题和故障排查
2026-01-13 14:15:59 +08:00

9.7 KiB
Raw Blame History

服务器部署操作指南

本文档提供服务器环境配置和 Nacos 配置的详细步骤。

第一步:服务器环境配置

1. SSH 登录服务器

ssh root@124.221.55.225

2. 创建项目目录

# 创建项目目录
mkdir -p /opt/aiot-platform-cloud
cd /opt/aiot-platform-cloud

3. 下载配置文件

# 下载 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 文件

# 复制模板
cp .env.example .env

# 编辑配置
vi .env

5. 必须修改的配置项

.env 文件中,按 i 进入编辑模式,修改以下内容:

# ============ 数据库配置 ============
# 从 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. 验证配置

# 查看配置(隐藏密码)
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 密码

# 在 1Panel 面板中
1. 进入"数据库""MySQL"
2. 找到 root 用户,点击"查看密码"
3. 复制密码到 .env 文件

获取 Redis 密码

# 在 1Panel 面板中
1. 进入"应用商店""已安装"
2. 找到 Redis点击"设置"
3. 查看"requirepass"配置
4. 复制密码到 .env 文件

获取 Nacos 密码

# 在 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
配置内容:

# 系统服务配置
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
配置内容:

# 基础设施服务配置
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
配置内容:

# 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
配置内容:

# 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
配置内容:

# 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. 确认配置完成

# 检查 .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-cloudmaster
  3. 点击"立即构建"Build Now

3. 监控部署进度

在 Jenkins 中查看构建日志:

  • Checkout 代码
  • 检测变更
  • 构建 Docker 镜像
  • 推送到 Registry
  • 部署服务

4. 验证服务状态

# 查看运行中的容器
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

# 查看服务日志
docker logs aiot-system-server | grep nacos

# 应该看到类似输出:
# Nacos config center started successfully

Q3: 如果 Nacos 配置错误怎么办?

  1. 在 Nacos 控制台点击"历史版本"
  2. 选择之前的版本
  3. 点击"回滚"
  4. 配置立即恢复

Q4: 如何生成强密钥?

# 生成 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 中)