feat(deploy): 实现 enable_nginx_site 步骤 1(诊断)+ 步骤 2(清理)
This commit is contained in:
@@ -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 替换为完整建链+清默认
|
||||
|
||||
|
||||
# ============================================================================
|
||||
|
||||
Reference in New Issue
Block a user