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

463 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 服务器部署操作指南
本文档提供服务器环境配置和 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 中)