From 1654d5f7b6c1e9847c149e49637be1a13dcca6d0 Mon Sep 17 00:00:00 2001 From: vet Date: Mon, 13 Apr 2026 21:32:13 +0700 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 01-init-env.sh | 4 ++-- README.md | 6 +++--- check-conn.sh | 26 +++++++++++++++++--------- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/01-init-env.sh b/01-init-env.sh index 6dc7ee7..d7d5271 100755 --- a/01-init-env.sh +++ b/01-init-env.sh @@ -42,8 +42,8 @@ MONGO_HOST=47.237.103.4 MONGO_PORT=27017 MONGO_USERNAME=minio_pC5wMB MONGO_PASSWORD=rI57PJsJhnz_qlRkfnTa0RPT -MONGO_AUTHSOURCE=openim_v3 -MONGO_DATABASE=openim_v3 # open-im-server / chat 使用 +MONGO_AUTHSOURCE=admin # 连接 URI 中 authSource=…,须与创建该用户时所在库一致 +MONGO_DATABASE=openim_v3 # open-im-server / chat 业务库名 BUILD_MONGO_DATABASE=build # build-server 使用 # ── Amazon S3 — open-im-server(IM 聊天文件存储,必填)────────────────────── diff --git a/README.md b/README.md index 4ccf79a..1676892 100644 --- a/README.md +++ b/README.md @@ -144,8 +144,8 @@ MONGO_HOST=47.237.103.4 MONGO_PORT=27017 MONGO_USERNAME=minio_pC5wMB MONGO_PASSWORD=rI57PJsJhnz_qlRkfnTa0RPT -MONGO_AUTHSOURCE=openim_v3 -MONGO_DATABASE=openim_v3 +MONGO_AUTHSOURCE=admin # 认证库(常见 admin);须与 MongoDB 用户实际创建所在库一致 +MONGO_DATABASE=openim_v3 # 业务数据所在库 BUILD_MONGO_DATABASE=build # ══ Amazon S3 ══════════════════════════════════════════════════ @@ -345,7 +345,7 @@ cd pc && rm -rf node_modules && yarn install | 项目 | 说明 | |------|------| -| **完整校验** | 安装 **mongosh** 可测认证与库访问;安装 **AWS CLI**(命令 `aws`)可列桶与读写探测。 | +| **完整校验** | **mongosh** 可测 MongoDB;S3 用 **`aws s3api head-bucket`** 判断访问,成功后再 `s3 ls` 仅作预览(避免旧版 `ls \| head` 因管道 SIGPIPE 误判失败)。 | | **未安装工具时** | MongoDB 可用 **nc** 仅测端口连通;S3 会跳过并打印手动验证命令。 | | **安装提示** | 脚本按系统给出命令(macOS 为 `brew`;Amazon/RHEL 为 `dnf`/`yum`),不会在 Linux 上误导为 `brew`。 | | **Ubuntu/Debian 与 mongosh** | 默认 apt **没有** `mongodb-mongosh` 包(`Unable to locate package` 属正常)。需 [MongoDB 官方文档](https://www.mongodb.com/docs/mongodb-shell/install/) 添加 apt 源后再安装,或使用 `snap install mongosh`。 | diff --git a/check-conn.sh b/check-conn.sh index 25477cf..6c7c59c 100755 --- a/check-conn.sh +++ b/check-conn.sh @@ -184,7 +184,7 @@ check_mongo() { 2>/dev/null; then success "MongoDB 连接正常 ✓" else - error "MongoDB 连接失败!请检查 .env.local 中的配置" + error "MongoDB 连接失败!请检查 .env.deploy-test 中的配置" echo "" echo " 排查步骤:" echo " 1. 确认 MongoDB 服务器 ${MONGO_HOST} 可从本机访问" @@ -238,7 +238,7 @@ _check_s3_bucket() { echo "" if [[ "${key_id}" == "YOUR_"* || -z "${key_id}" ]]; then - error "S3 AccessKeyID 未配置,请编辑 .env.local" + error "S3 AccessKeyID 未配置,请编辑 .env.deploy-test" return 1 fi @@ -247,20 +247,28 @@ _check_s3_bucket() { local endpoint_arg="" [[ -n "$endpoint" ]] && endpoint_arg="--endpoint-url $endpoint" - local result rc=0 - result=$( + # 用 head-bucket 判成功/失败,避免 `aws s3 ls | head` 因 SIGPIPE 误判失败 + local hb_err rc=0 + hb_err=$( AWS_ACCESS_KEY_ID="$key_id" \ AWS_SECRET_ACCESS_KEY="$secret_key" \ AWS_DEFAULT_REGION="$region" \ - aws s3 ls "s3://${bucket}" $endpoint_arg 2>&1 | head -5 + aws s3api head-bucket --bucket "$bucket" $endpoint_arg 2>&1 ) || rc=$? if [[ $rc -eq 0 ]]; then - success "S3 Bucket 可访问 ✓" - [[ -n "$result" ]] && echo "$result" | sed 's/^/ /' || echo " (Bucket 为空)" + success "S3 Bucket 可访问 ✓(HeadBucket)" + local preview + preview=$( + AWS_ACCESS_KEY_ID="$key_id" \ + AWS_SECRET_ACCESS_KEY="$secret_key" \ + AWS_DEFAULT_REGION="$region" \ + aws s3 ls "s3://${bucket}" $endpoint_arg 2>&1 | head -5 + ) || true + [[ -n "$preview" ]] && echo "$preview" | sed 's/^/ /' || echo " (列举预览为空)" else - error "S3 访问失败!错误: $result" - echo " 排查: 确认 AccessKey/SecretKey、Bucket 名称、IAM s3:ListBucket 权限" + error "S3 访问失败!错误: $hb_err" + echo " 排查: 确认 AccessKey/SecretKey、Bucket 与 Region、IAM(含 s3:ListBucket / HeadBucket);InvalidAccessKeyId 表示密钥无效或已删除" fi # 测试写入