feat(deploy): 缺少 deploy/.env 时复用安装目录中的历史配置

用户在重新解压发布包后再次执行 install.sh,因缺少 deploy/.env 被拦下。
按文档流程每次升级都要重新解压,若每次都要求重填数据库口令,既繁琐
又容易出错(口令含 * 等特殊字符)。

- 优先使用当前目录的 deploy/.env
- 其次复用 $APP_DIR/deploy/.env(上次安装留下的配置)
- 两处都没有才报错,且错误信息列出需要填写的五个字段及注意事项

实测三种情形:
  全新安装(两处都无)→ 报错并给出字段说明,退出码 1
  安装目录有历史配置   → 自动复用,退出码 0
  当前目录已有 .env    → 直接使用,不覆盖
This commit is contained in:
2026-09-15 01:03:20 +08:00
parent 87a1ded2d2
commit 653d9d168c
+18 -2
View File
@@ -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