diff --git a/deploy.py b/deploy.py index f53f712..da84720 100644 --- a/deploy.py +++ b/deploy.py @@ -273,7 +273,40 @@ def enable_nginx_site(remote_conf: str, domain: str) -> bool: target = f"/etc/nginx/sites-enabled/{domain}.conf" log_info(f"启用 nginx 站点: {target} -> {remote_conf}") - return True # 后续 Task 替换为完整 5 步实现 + + # ===== 步骤 1: 诊断目标路径状态 ===== + log_info("诊断步骤: 检查目标路径...") + diagnose_cmd = ( + f'test -e {target} && ' + f'(test -L {target} && echo "symlink" || ' + f'(test -d {target} && echo "dir" || echo "file")) || ' + f'echo "missing"' + ) + ok, status, err = ssh_command(diagnose_cmd, timeout=30) + if not ok: + log_error(f"诊断步骤失败: {err}") + return False + status = status.strip() + log_info(f"诊断结果: {status}") + + # ===== 步骤 2: 清理异常状态 ===== + log_info("清理步骤: 处理异常状态...") + cleanup_cmd = ( + f'case "{status}" in ' + f'symlink) unlink {target} ;; ' + f'dir) rm -rf {target} ;; ' + f'file) rm -f {target} ;; ' + f'missing) ;; ' + f'esac' + ) + ok, _, err = ssh_command(cleanup_cmd, timeout=30) + if not ok: + log_error(f"清理步骤失败: {err}") + log_error("上下文: 目标 = " + target) + log_error("提示: 权限可能不足(检查 /etc/nginx/sites-enabled 写权限)") + return False + log_info("清理步骤完成") + return True # Task 3 替换为完整建链+清默认 # ============================================================================