From 653d9d168c3d321e23756da26d51e2f991b648ea Mon Sep 17 00:00:00 2001 From: zijunchiang Date: Tue, 15 Sep 2026 01:03:20 +0800 Subject: [PATCH] =?UTF-8?q?feat(deploy):=20=E7=BC=BA=E5=B0=91=20deploy/.en?= =?UTF-8?q?v=20=E6=97=B6=E5=A4=8D=E7=94=A8=E5=AE=89=E8=A3=85=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E4=B8=AD=E7=9A=84=E5=8E=86=E5=8F=B2=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户在重新解压发布包后再次执行 install.sh,因缺少 deploy/.env 被拦下。 按文档流程每次升级都要重新解压,若每次都要求重填数据库口令,既繁琐 又容易出错(口令含 * 等特殊字符)。 - 优先使用当前目录的 deploy/.env - 其次复用 $APP_DIR/deploy/.env(上次安装留下的配置) - 两处都没有才报错,且错误信息列出需要填写的五个字段及注意事项 实测三种情形: 全新安装(两处都无)→ 报错并给出字段说明,退出码 1 安装目录有历史配置 → 自动复用,退出码 0 当前目录已有 .env → 直接使用,不覆盖 --- deploy/install.sh | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/deploy/install.sh b/deploy/install.sh index 41115ce..7ce76f5 100755 --- a/deploy/install.sh +++ b/deploy/install.sh @@ -91,8 +91,24 @@ http_ok() { [ "$(id -u)" -eq 0 ] || die "需要 root 权限(安装 systemd 服务与 nginx 站点)。 请以 root 身份执行,例如: su -c 'bash deploy/install.sh' 或 sudo bash deploy/install.sh" -[ -f deploy/.env ] || die "缺少 deploy/.env,请先: - cp deploy/.env.example deploy/.env && vi deploy/.env" +# 缺少 deploy/.env 时,若安装目录里已有上次安装留下的配置,直接复用。 +# 否则用户每次重新解压发布包都得重填一遍数据库口令(本次就是这么被绊住的)。 +if [ ! -f deploy/.env ]; then + if [ -f "$APP_DIR/deploy/.env" ]; then + log "未找到 deploy/.env,复用上次安装的配置:$APP_DIR/deploy/.env" + cp "$APP_DIR/deploy/.env" deploy/.env + else + die "缺少 deploy/.env,请先: + cp deploy/.env.example deploy/.env && vi deploy/.env + + 需要填写的内容(数据库连接信息由部署方提供): + DB_HOST 现有 MySQL / MariaDB 地址 + DB_PORT 端口,默认 3306 + DB_USER 数据库账号 + DB_PASS 数据库口令(注意不要加引号) + DB_NAME 数据库名" + fi +fi set -a # shellcheck disable=SC1091