docs: 部署手册改为平台部署,替换原文档站自身部署说明
原 /deploy/ 内容是文档站自身(VitePress/Node/nginx)的部署说明, 与用户所需的「IotLCM 平台部署手册」不符。 改为基于 iotlcm-public/iotlcm-deploy 部署仓的平台部署手册: - 部署概览:部署构成、三步流程、端口规划、关键约束 - 环境准备:硬件分档、系统与 Docker 版本、镜像仓库、防火墙、可选外部依赖 - 配置说明:.env 必填 8 项与可选 4 项、10 份应用配置逐项说明 - 启动与验证:首次初始化流程、7 步验证清单、首次登录必做项 - 可选服务:运营商挡板 onelink-mock、飞书 bot、反向代理(含 HTTPS) - 升级与备份:版本固定、升级回滚、备份与恢复、日志清理、监控指标 - 故障排查:启动/功能/性能/网络四类共 20 个问题 删除原 6 页(docker-nginx / path-prefix / static-hosting / local-dev / offline / faq),侧边栏同步改为「部署手册 + 运维」两组。
This commit is contained in:
@@ -0,0 +1,182 @@
|
||||
---
|
||||
title: 启动与验证
|
||||
description: 首次启动流程、状态检查与验证清单
|
||||
outline: deep
|
||||
---
|
||||
|
||||
# 启动与验证
|
||||
|
||||
## 启动
|
||||
|
||||
```bash
|
||||
# 首次部署建议前台启动,便于观察初始化过程
|
||||
docker compose up
|
||||
|
||||
# 确认无误后转后台
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
### 首次启动发生什么
|
||||
|
||||
1. **MySQL 建库并导入 schema**(约 1~2 分钟)
|
||||
`schema/` 下 12 个脚本按文件名顺序执行:建表 → 结构补齐 → 创建应用账号 → 重置种子账号口令 → 导入通道模板/字典/菜单等种子数据
|
||||
2. MySQL 通过健康检查后,`admin-svr`、`openapi`、`worker-svr` 依次启动
|
||||
3. 各服务向 Consul 注册
|
||||
|
||||
观察初始化进度:
|
||||
|
||||
```bash
|
||||
docker compose logs -f mysql
|
||||
```
|
||||
|
||||
看到 `[initdb] 应用账号 u_iotlcm 已创建` 与 `[initdb] 种子账号口令已统一重置` 表示初始化完成。
|
||||
|
||||
::: warning 初始化失败需清空数据卷
|
||||
MySQL 只在 `data/mysql` 为空时执行 `schema/`。若中途失败,改完脚本必须清空卷才会重跑:
|
||||
|
||||
```bash
|
||||
docker compose down
|
||||
sudo rm -rf ./data/mysql
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
这会删除全部数据,仅限首次部署阶段使用。
|
||||
:::
|
||||
|
||||
## 检查状态
|
||||
|
||||
```bash
|
||||
docker compose ps
|
||||
```
|
||||
|
||||
期望结果:
|
||||
|
||||
| 服务 | 状态 |
|
||||
| --- | --- |
|
||||
| iotlcm-mysql | Up (healthy) |
|
||||
| iotlcm-redis | Up (healthy) |
|
||||
| iotlcm-rabbitmq | Up (healthy) |
|
||||
| iotlcm-consul | Up |
|
||||
| iotlcm-admin-svr | Up |
|
||||
| iotlcm-admin-ui | Up |
|
||||
| iotlcm-openapi | Up |
|
||||
| iotlcm-upstream-chan | Up |
|
||||
| iotlcm-upstream-proxy | Up |
|
||||
| iotlcm-worker-svr | Up |
|
||||
| iotlcm-app-server | Up |
|
||||
| iotlcm-app-web | Up |
|
||||
| iotlcm-sms | Up (healthy) |
|
||||
| iotlcm-docs | Up |
|
||||
|
||||
出现 `Restarting` 或 `Exited` 需查日志:
|
||||
|
||||
```bash
|
||||
docker compose logs --tail=100 <服务名>
|
||||
```
|
||||
|
||||
## 验证清单
|
||||
|
||||
按顺序逐项确认,任一步失败先解决再继续。
|
||||
|
||||
### 1. 数据库表数量
|
||||
|
||||
```bash
|
||||
docker compose exec mysql sh -c \
|
||||
'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e \
|
||||
"SELECT COUNT(*) AS tables FROM information_schema.tables WHERE table_schema=\"db_iotlcm\";"'
|
||||
```
|
||||
|
||||
预期 `tables` = **89**。
|
||||
|
||||
### 2. 种子数据
|
||||
|
||||
```bash
|
||||
docker compose exec mysql sh -c \
|
||||
'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" db_iotlcm -e \
|
||||
"SELECT (SELECT COUNT(*) FROM sys_menu) AS menus, (SELECT COUNT(*) FROM sys_user) AS users;"'
|
||||
```
|
||||
|
||||
预期菜单约 **447** 条,账号 **18** 个。
|
||||
|
||||
### 3. 管理端后端
|
||||
|
||||
```bash
|
||||
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8008/api.json
|
||||
```
|
||||
|
||||
预期 `200`。
|
||||
|
||||
### 4. 管理端前端
|
||||
|
||||
```bash
|
||||
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8009/
|
||||
```
|
||||
|
||||
预期 `200`。
|
||||
|
||||
### 5. 对外 API
|
||||
|
||||
```bash
|
||||
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8000/api.json
|
||||
```
|
||||
|
||||
预期 `200`。
|
||||
|
||||
### 6. 短信服务
|
||||
|
||||
```bash
|
||||
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:11190/healthz
|
||||
```
|
||||
|
||||
预期 `200`。
|
||||
|
||||
### 7. 浏览器登录
|
||||
|
||||
访问 `http://<宿主机IP>:8009`:
|
||||
|
||||
| 项 | 值 |
|
||||
| --- | --- |
|
||||
| 账号 | `admin` |
|
||||
| 口令 | `.env` 中的 `MYSQL_ADMIN_PASSWORD` |
|
||||
|
||||
能进入首页工作台、左侧菜单完整显示即部署成功。
|
||||
|
||||
## 首次登录后必做
|
||||
|
||||
1. **修改 admin 口令**:右上角个人中心 → 安全设置
|
||||
2. **处理其余种子账号**:`user02`、`2admin` 等 17 个账号默认与 admin 同一口令,不使用请停用或删除
|
||||
3. **确认字典与菜单加载**:进入「卡信息」页,确认筛选下拉选项不为空
|
||||
|
||||
## 后端自检
|
||||
|
||||
```bash
|
||||
# admin-svr 是否连上数据库
|
||||
docker compose logs admin-svr | grep -iE 'error|panic' | tail -20
|
||||
|
||||
# worker-svr 是否连上 RabbitMQ
|
||||
docker compose logs worker-svr | tail -30
|
||||
|
||||
# upstream-chan 是否连上 Redis 与 Consul
|
||||
docker compose logs upstream-chan | tail -30
|
||||
```
|
||||
|
||||
正常日志不应出现 `connection refused`、`access denied`、`panic`。
|
||||
|
||||
## 停止与重启
|
||||
|
||||
```bash
|
||||
docker compose stop # 停止,保留数据
|
||||
docker compose restart # 重启全部
|
||||
docker compose restart admin-svr # 重启单个
|
||||
docker compose down # 停止并删除容器(./data 不受影响)
|
||||
```
|
||||
|
||||
::: danger 不要执行 down -v
|
||||
`-v` 会删除命名数据卷。本编排数据都在 `./data` 宿主机目录,但 `-v` 仍可能影响同项目的其他卷。停止服务用 `down` 即可。
|
||||
:::
|
||||
|
||||
## 下一步
|
||||
|
||||
- 需要运营商挡板联调 → [可选服务](optional)
|
||||
- 需要域名访问 → [可选服务](optional) 的反向代理章节
|
||||
- 遇到报错 → [故障排查](troubleshooting)
|
||||
Reference in New Issue
Block a user