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