update at 2026-07-26 10:50:03
This commit is contained in:
41
deploy.sh
41
deploy.sh
@@ -9,6 +9,7 @@ SERVER_WEB="${SERVER_WEB:-myweb}"
|
||||
REMOTE_WORKDIR="${REMOTE_WORKDIR:-/home/gavin/font2svg}"
|
||||
SKIP_PUSH="${SKIP_PUSH:-0}"
|
||||
SKIP_SUDO="${SKIP_SUDO:-0}"
|
||||
MYWEB_SUDO_PASSWORD="${MYWEB_SUDO_PASSWORD:-}"
|
||||
|
||||
COLOR_RESET=$'\033[0m'
|
||||
COLOR_INFO=$'\033[1;36m'
|
||||
@@ -34,6 +35,41 @@ ssh_web() {
|
||||
ssh -o BatchMode=yes -o ConnectTimeout=12 "$SERVER_WEB" "$@"
|
||||
}
|
||||
|
||||
load_sudo_password() {
|
||||
if [[ -n "$MYWEB_SUDO_PASSWORD" ]]; then
|
||||
return
|
||||
fi
|
||||
|
||||
[[ -r .env ]] || {
|
||||
log_error '未找到 .env;请设置 MYWEB_SUDO_PASSWORD 或在 .env 中配置密码。'
|
||||
exit 1
|
||||
}
|
||||
|
||||
local line secret='' plain_lines=()
|
||||
while IFS= read -r line || [[ -n "$line" ]]; do
|
||||
case "$line" in
|
||||
MYWEB_SUDO_PASSWORD=*|SUDO_PASSWORD=*) secret="${line#*=}" ;;
|
||||
''|'#'*) ;;
|
||||
*) plain_lines+=("$line") ;;
|
||||
esac
|
||||
done < .env
|
||||
|
||||
if [[ -z "$secret" && ${#plain_lines[@]} -eq 1 ]]; then
|
||||
secret="${plain_lines[0]}"
|
||||
fi
|
||||
|
||||
# 兼容 .env 中常见的单引号或双引号包裹形式,不执行其中任何内容。
|
||||
if [[ ${#secret} -ge 2 ]] && { [[ ${secret:0:1} == '"' && ${secret: -1} == '"' ]] || [[ ${secret:0:1} == "'" && ${secret: -1} == "'" ]]; }; then
|
||||
secret="${secret:1:${#secret}-2}"
|
||||
fi
|
||||
|
||||
[[ -n "$secret" ]] || {
|
||||
log_error '无法从 .env 读取 sudo 密码;请使用 MYWEB_SUDO_PASSWORD=密码。'
|
||||
exit 1
|
||||
}
|
||||
MYWEB_SUDO_PASSWORD="$secret"
|
||||
}
|
||||
|
||||
check_local_environment() {
|
||||
log_step '1/8 检查 M4 本机环境'
|
||||
for tool in git pnpm node python3 rsync ssh curl; do
|
||||
@@ -107,8 +143,9 @@ apply_nginx_and_restart() {
|
||||
log_warn 'SKIP_SUDO=1,跳过需要 sudo 的 Nginx/API 重启'
|
||||
return
|
||||
fi
|
||||
log_info '将要求输入 myweb 的 sudo 密码,用于安装配置、校验并重载 Nginx。'
|
||||
ssh -tt -o ConnectTimeout=12 "$SERVER_WEB" "sudo install -m 644 '$REMOTE_WORKDIR/fonts.conf' /etc/nginx/conf.d/fonts.conf && sudo nginx -t && sudo systemctl reload nginx && sudo systemctl restart font2svg-api"
|
||||
load_sudo_password
|
||||
log_info '从 .env 读取 sudo 密码,用于安装配置、校验并重载 Nginx。'
|
||||
printf '%s\n' "$MYWEB_SUDO_PASSWORD" | ssh -tt -o ConnectTimeout=12 "$SERVER_WEB" "sudo -S -p '' install -m 644 '$REMOTE_WORKDIR/fonts.conf' /etc/nginx/conf.d/fonts.conf && sudo -S -p '' nginx -t && sudo -S -p '' systemctl reload nginx && sudo -S -p '' systemctl restart font2svg-api"
|
||||
log_ok 'Nginx 已重载,Font2SVG API 已重启'
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user