# 脚本说明 `scripts/` 目录用于离线安装、启动、健康检查、关闭和清理。 所有脚本建议在仓库根目录执行: ```bash bash scripts/00_0_install.sh ``` ## 目录 - [推荐流程](#推荐流程) - [环境变量文件](#环境变量文件) - [00 安装](#00-安装) - [00 Pre-Check](#00-pre-check) - [01 启动 Server 和 Console](#01-启动-server-和-console) - [02 自检](#02-自检) - [03 关闭 Server 和 Console](#03-关闭-server-和-console) - [04 清理](#04-清理) - [10 生成证书](#10-生成证书) - [11 启动 Client](#11-启动-client) - [12 关闭 Client](#12-关闭-client) - [Windows 路径注意事项](#windows-路径注意事项) ## 推荐流程 ```bash # 1. 加载镜像并执行 pre-check。 bash scripts/00_0_install.sh # 2. 启动真实 server 和 console。 bash scripts/01_start.sh --mode tcp # 3. 检查 server 和 console 是否正常。 bash scripts/02_self_check.sh # 4. 关闭 server 和 console。 bash scripts/03_shutdown.sh --mode tcp # 5. 清理 server 运行产生的文件。 bash scripts/04_cleanup.sh ``` client 单独启动和关闭: ```bash bash scripts/11_start_client.sh --mode tcp bash scripts/12_shutdown_client.sh --mode tcp ``` 支持的模式: - server:`tcp`、`tls`、`ssh`、`base` - client:`tcp`、`tls`、`ssh` ## 环境变量文件 `01_start.sh` 会读取根目录下的 `environment.server`。如果文件存在,会将其中所有 `KEY=VALUE` 同步到 `deploy/server/.env`。 示例: ```env RPKI_RTR_CCR_HOST_DIR=/opt/rpki-rtr/data RPKI_RTR_SLURM_HOST_DIR=/opt/rpki-rtr/data RPKI_RTR_DB_HOST_DIR=/opt/rpki-rtr/rtr-db RPKI_RTR_LOG_HOST_DIR=/opt/rpki-rtr/logs/server RPKI_RTR_REPORT_HOST_DIR=/opt/rpki-rtr/report ``` `11_start_client.sh` 会读取根目录下的 `environment.client`。如果文件存在,会将其中所有 `KEY=VALUE` 同步到 `deploy/client/.env`。 如果 `environment.server` 或 `environment.client` 不存在,对应脚本会跳过更新,直接使用已有的 deploy `.env` 文件。 ## 00 安装 `00_0_install.sh` 用于从 `images/` 目录加载离线 Docker 镜像,更新 deploy `.env` 中的镜像名,然后执行 pre-check。 默认镜像包查找规则: - server:`images/rpki-rtr-*.tar`,排除 `rpki-rtr-debug-client-*.tar` - client:`images/rpki-rtr-debug-client-*.tar` - console:`images/rpki-console-ui-*.tar` 也可以显式指定镜像包: ```bash bash scripts/00_0_install.sh \ --server-tar images/rpki-rtr-amd64-v1.2.tar \ --client-tar images/rpki-rtr-debug-client-amd64-v1.2.tar \ --console-tar images/rpki-console-ui-amd64-v1.0.tar ``` 脚本会从 `docker load` 输出中解析真实镜像名,并写入: - `deploy/server/.env` 的 `RPKI_RTR_SERVER_IMAGE` - `deploy/console/.env` 的 `RPKI_CONSOLE_UI_IMAGE` ## 00 Pre-Check `00_1_pre_check.sh` 会在 `.precheck/` 下准备隔离测试数据,使用仓库里的 Docker Compose 文件启动 server 和 debug client,然后检查: - admin health 接口返回正常。 - server 写出了 source report。 - debug client 收到了 EndOfData 和 payload summary。 - pre-check 日志中没有 fatal 错误模式。 相关辅助脚本: - `00_2_generate_ccr.sh`:生成固定的 CCR 测试文件。 - `00_2_pre_check_prepare.sh`:创建 `.precheck/` 数据、SLURM 文件和 env 文件。 - `00_3_pre_check_cleanup.sh`:停止 pre-check 容器并清理 `.precheck/`。 ## 01 启动 Server 和 Console `01_start.sh` 用于启动真实的 RTR server 和 console。 ```bash bash scripts/01_start.sh --mode tcp ``` 启动后脚本会检查容器是否进入 `running` 状态。如果容器启动后退出,脚本会打印 compose 状态和最近日志,然后报错退出,不会继续打印 `Start Finished`。 常用参数: ```bash bash scripts/01_start.sh --mode tls bash scripts/01_start.sh --mode ssh bash scripts/01_start.sh --wait 60 bash scripts/01_start.sh --env ./environment.server ``` 注意:console 不读取 `environment.server`,只使用 `deploy/console/.env`。 ## 02 自检 `02_self_check.sh` 用于检查 `01_start.sh` 启动的 server 和 console 是否正常。 ```bash bash scripts/02_self_check.sh ``` 检查内容包括: - server 容器是否 running。 - console 容器是否 running。 - RTR TCP 端口是否可连接。 - admin health 接口是否健康。 - console 端口和 HTTP 根路径是否可访问。 如果启动较慢,可以增加等待时间: ```bash bash scripts/02_self_check.sh --wait 120 ``` ## 03 关闭 Server 和 Console `03_shutdown.sh` 用于关闭 `01_start.sh` 启动的服务。 ```bash bash scripts/03_shutdown.sh --mode tcp ``` 脚本会先关闭 console,再关闭 RTR server。 ## 04 清理 `04_cleanup.sh` 用于删除 server 运行产生的目录: - `logs/` - `report/` - `rtr-db/` 推荐先关闭服务,再清理: ```bash bash scripts/03_shutdown.sh bash scripts/04_cleanup.sh ``` 清理前脚本会检查 `rpki-rtr` 是否仍在运行。如果仍在运行,会拒绝清理。只有明确需要强制清理时才使用: ```bash bash scripts/04_cleanup.sh --force ``` 清理脚本会拒绝删除仓库根目录之外的路径。如果某一项清理失败,会继续清理后续项,最后返回失败。 ## 10 生成证书 `10_generate_certs.sh` 用于生成 TLS/SSH 模式需要的本地证书材料(测试用)。 ```bash bash scripts/10_generate_certs.sh ``` ## 11 启动 Client `11_start_client.sh` 用于启动 RTR debug client。 ```bash bash scripts/11_start_client.sh --mode tcp bash scripts/11_start_client.sh --mode tls bash scripts/11_start_client.sh --mode ssh ``` 如果 `environment.client` 存在,脚本会将其中所有 `KEY=VALUE` 同步到 `deploy/client/.env`;如果不存在,则直接使用已有的 `deploy/client/.env`。 ## 12 关闭 Client `12_shutdown_client.sh` 用于关闭 `11_start_client.sh` 启动的 client。 ```bash bash scripts/12_shutdown_client.sh --mode tcp ``` 关闭时建议使用和启动时相同的 mode。