website-scripts/README.md

150 lines
5.8 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.

# Scripts — 部署与运维脚本
多站点 Docker 项目的运维脚本集合,涵盖本地开发管理、云服务器运维、云端部署、数据库备份恢复。
## 脚本清单
### 部署与管理
| 脚本 | 用途 | 目标环境 |
|------|------|---------|
| `sites-manage-local.sh` | 本地站点启停npm run dev + Docker | 本地 |
| `sites-manage-cloud.sh` | 云服务器站点启停SSH / 服务器本地运行) | 云端 |
| `deploy-ai.sh` | 部署站点到 tlyq.aitxjp 服务器) | 云端 |
| `deploy-cc.sh` | 部署站点到 tlyq.cctgz 服务器) | 云端 |
| `deploy-monitor.sh` | 独立部署 monitor-ai 告警监控 | 云端 |
| `edit-site-cc.sh` | www.tlyq.cc 官网内容管理 | 云端 |
| `check-compliance.sh` | D1-D8 合规检查LESSONS-LEARNED 自动化) | 本地 |
| `docker-cache-cleanup.sh` | Docker 缓存清理(构建缓存、悬空镜像、测试镜像) | 本地/云端 |
### 备份与恢复(`backup/` 目录)
| 脚本 | 用途 | 说明 |
|------|------|------|
| `backup/backup.sh` | 统一备份 | --db-only / --full |
| `backup/restore.sh` | 统一恢复 | --db / --full |
> 详细文档见 [backup/README.md](backup/README.md)
---
## sites-manage-local.sh — 本地站点管理
```bash
bash scripts/sites-manage-local.sh start # 启动全部
bash scripts/sites-manage-local.sh start ai # 启动 ai 全部
bash scripts/sites-manage-local.sh start ldap oa # 启动指定站点
bash scripts/sites-manage-local.sh stop oa # 停止指定站点
bash scripts/sites-manage-local.sh restart ldap # 重启指定站点
bash scripts/sites-manage-local.sh status # 查看状态
```
站点启动方式:
| 站点 | 方式 | 端口 |
|------|------|------|
| ldap | Docker | 6178Web UI、3890LDAP |
| oa | `npm run dev`(宿主机) | 6179 |
| issue | `npm run dev`(宿主机) | 6176 |
| assets | `npm run dev`(宿主机) | 6177 |
| monitor | `npm run dev`(宿主机) | 6181 |
| www / cloud / token | Docker | 61736175 |
## sites-manage-cloud.sh — 云服务器站点管理
```bash
bash scripts/sites-manage-cloud.sh start ai # 启动全部
bash scripts/sites-manage-cloud.sh restart nginx # 重启 nginx
bash scripts/sites-manage-cloud.sh stop oa issue # 停指定站点
bash scripts/sites-manage-cloud.sh status # 查看状态
```
自动检测运行环境:本地 Mac 运行时通过 SSH 操作 txjp在云服务器上运行时直接操作本地 Docker。也可显式指定
```bash
OA_REMOTE=local bash scripts/sites-manage-cloud.sh status # 强制本地模式
OA_REMOTE=ssh bash scripts/sites-manage-cloud.sh status # 强制 SSH 模式
```
站点全部以 Docker 方式运行,依赖关系:`ldap → oa / issue / assets → nginx`。
## deploy-ai.sh — tlyq.ai 部署
```bash
bash scripts/deploy-ai.sh # 自动检测:增量 or 完整构建
bash scripts/deploy-ai.sh --force # 强制完整构建
bash scripts/deploy-ai.sh --restart # 仅重启容器
```
交互式选择站点110www / cloud / token / issue / assets / oa / ldap / gitea / sso / monitor。
流程:源码打包 → 上传 → 服务器 `npm install``npm run build` → 容器重建。部署后自动验证。
LDAP 部署特殊处理:上传 Dockerfile + docker-compose.yml自动创建 .env去除端口映射`--build` 构建含 sqlite3 的镜像。
## backup/ — 备份与恢复
```bash
# 站点完整备份(推荐)
bash scripts/backup/backup.sh # 备份所有
bash scripts/backup/backup.sh assets monitor # 指定站点
bash scripts/backup/backup.sh --db-only # 仅数据库
bash scripts/backup/backup.sh --full # 灾难备份
bash scripts/backup/backup.sh --local # 本地模式(在服务器上直接运行)
# 恢复
bash scripts/backup/restore.sh # 交互式
bash scripts/backup/restore.sh --db issue file.db # 数据库恢复
bash scripts/backup/restore.sh --full backup.tar # 灾难恢复
bash scripts/backup/restore.sh --local --full ... # 本地灾难恢复(新服务器)
备份内容:数据库 + 上传文件 + 配置文件 + nginx + SSL 证书
> 详细文档见 [backup/README.md](backup/README.md)
## docker-cache-cleanup.sh — Docker 缓存清理
自动检测运行环境:通过 `curl ip.sb` 获取当前公网 IP与生产环境服务器 IP 列表匹配。
- 在生产服务器上运行:直接执行 Docker 命令
- 在本地运行:通过 SSH 连接服务器执行
```bash
bash scripts/docker-cache-cleanup.sh # 默认:保留 3 小时内的缓存
bash scripts/docker-cache-cleanup.sh --aggressive # 激进:保留 1 小时内
bash scripts/docker-cache-cleanup.sh --conservative # 保守:保留 6 小时内
bash scripts/docker-cache-cleanup.sh --full # 完全:删除所有缓存
```
清理内容:
- **dangling 镜像**:无标签或未被引用的中间层
- **测试镜像**:以 `test-` 开头的镜像
- **构建缓存**:根据模式保留不同时长
- **磁盘紧张处理**:使用率 > 85% 时自动深度清理
配置:在脚本开头的 `PRODUCTION_SERVER_IPS` 数组中添加/删除服务器 IP。
```bash
PRODUCTION_SERVER_IPS=(
"43.133.38.210" # txjp (腾讯云北京)
# "159.75.83.209" # tgz (腾讯云广州)
)
```
定时清理(可选):
```bash
# 每天凌晨 3 点执行保守清理
ssh txjp "crontab -l 2>/dev/null; echo '0 3 * * * /root/docker/scripts/docker-cache-cleanup.sh --conservative' | crontab -"
```
## 备份存储路径
| 位置 | 路径 |
|------|------|
| 云端持久备份 | `/root/docker/db-backups/` |
| 本地备份 | `db-backups/` |
## 依赖
- **本地**macOS / Linuxbashssh配置 `txjp``tgz` 别名scpdockersqlite3
- **云端**Docker ComposeNode.jsbetter-sqlite3