脚本说明
scripts/ 目录用于离线安装、启动、健康检查、关闭和清理。
所有脚本建议在仓库根目录执行:
bash scripts/00_0_install.sh
目录
- 推荐流程
- 环境变量文件
- 00 安装
- 00 Pre-Check
- 01 启动 Server 和 Console
- 02 自检
- 03 关闭 Server 和 Console
- 04 清理
- 10 生成证书
- 11 启动 Client
- 12 关闭 Client
- Windows 路径注意事项
推荐流程
# 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 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。
示例:
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 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_IMAGEdeploy/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 scripts/01_start.sh --mode tcp
启动后脚本会检查容器是否进入 running 状态。如果容器启动后退出,脚本会打印 compose 状态和最近日志,然后报错退出,不会继续打印 Start Finished。
常用参数:
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 scripts/02_self_check.sh
检查内容包括:
- server 容器是否 running。
- console 容器是否 running。
- RTR TCP 端口是否可连接。
- admin health 接口是否健康。
- console 端口和 HTTP 根路径是否可访问。
如果启动较慢,可以增加等待时间:
bash scripts/02_self_check.sh --wait 120
03 关闭 Server 和 Console
03_shutdown.sh 用于关闭 01_start.sh 启动的服务。
bash scripts/03_shutdown.sh --mode tcp
脚本会先关闭 console,再关闭 RTR server。
04 清理
04_cleanup.sh 用于删除 server 运行产生的目录:
logs/report/rtr-db/
推荐先关闭服务,再清理:
bash scripts/03_shutdown.sh
bash scripts/04_cleanup.sh
清理前脚本会检查 rpki-rtr 是否仍在运行。如果仍在运行,会拒绝清理。只有明确需要强制清理时才使用:
bash scripts/04_cleanup.sh --force
清理脚本会拒绝删除仓库根目录之外的路径。如果某一项清理失败,会继续清理后续项,最后返回失败。
10 生成证书
10_generate_certs.sh 用于生成 TLS/SSH 模式需要的本地证书材料(测试用)。
bash scripts/10_generate_certs.sh
11 启动 Client
11_start_client.sh 用于启动 RTR debug client。
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 scripts/12_shutdown_client.sh --mode tcp
关闭时建议使用和启动时相同的 mode。