feat(deploy): 实现 enable_nginx_site 步骤 3(两段式建链)+ 步骤 4(清 default)
This commit is contained in:
@@ -306,7 +306,36 @@ def enable_nginx_site(remote_conf: str, domain: str) -> bool:
|
||||
log_error("提示: 权限可能不足(检查 /etc/nginx/sites-enabled 写权限)")
|
||||
return False
|
||||
log_info("清理步骤完成")
|
||||
return True # Task 3 替换为完整建链+清默认
|
||||
|
||||
# ===== 步骤 3: 建链(两段式:先二次检查,再 ln -snf) =====
|
||||
log_info("建链步骤: 创建 symlink...")
|
||||
# 第一段:二次检查 target 不存在(防并发进程干扰)
|
||||
guard_cmd = f'if [ -e {target} ]; then echo "二次检查失败:target 仍存在" >&2; exit 1; fi'
|
||||
ok, _, err = ssh_command(guard_cmd, timeout=30)
|
||||
if not ok:
|
||||
log_error(f"建链步骤失败 - 二次检查: {err}")
|
||||
log_error("提示: 并发进程干扰(其他进程在步骤 2 后、步骤 3 前创建了同名项)")
|
||||
log_error("上下文: 目标 = " + target)
|
||||
return False
|
||||
# 第二段:执行 ln -snf(独立 SSH 调用,错误信息不会被二次检查误报)
|
||||
link_cmd = f'ln -snf {remote_conf} {target}'
|
||||
ok, _, err = ssh_command(link_cmd, timeout=30)
|
||||
if not ok:
|
||||
log_error(f"建链步骤失败 - ln 执行: {err}")
|
||||
log_error("提示: 确认 scp_file 是否成功上传了 sites-available 下的 conf 文件")
|
||||
log_error("上下文: 目标 = " + target)
|
||||
return False
|
||||
log_info("建链步骤完成")
|
||||
|
||||
# ===== 步骤 4: 清理 default 站点(失败仅 warning) =====
|
||||
log_info("清默认步骤: 移除 default 站点...")
|
||||
ok, _, err = ssh_command("rm -f /etc/nginx/sites-enabled/default", timeout=30)
|
||||
if not ok:
|
||||
log_warn(f"清默认步骤失败(不阻塞): {err}")
|
||||
log_warn("提示: default 文件可能仍存在,nginx 可能有端口冲突;步骤 5 验证会确认")
|
||||
else:
|
||||
log_info("清默认步骤完成")
|
||||
return True # Task 4 替换为完整 5 步(含验证)
|
||||
|
||||
|
||||
# ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user