重构:统一 Python 部署脚本并修复编码问题

- 新增 deploy.py 统一部署脚本(调用各子目录 .py 脚本)
- 保留 deploy.sh 统一部署脚本(调用各子目录 .sh 脚本)
- 删除旧的 deploy-all.sh / deploy-domain.sh / deploy-to-prod.sh
- 修复 Windows GBK 编码导致的 UnicodeDecodeError/UnicodeEncodeError
- 修复 nginx 远程目录自动创建
- 移除 backend-single/deploy.py 和 web/deploy.py 中的 emoji 字符

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-17 18:09:34 +08:00
parent 363e17385b
commit 06b2e16813
7 changed files with 431 additions and 24 deletions
+10 -4
View File
@@ -6,11 +6,17 @@
使用系统自带的ssh/scp命令,无需额外依赖
"""
import io
import os
import sys
import subprocess
from pathlib import Path
# 强制 stdout/stderr 使用 UTF-8 编码,避免 Windows GBK 编码错误
if hasattr(sys.stdout, 'buffer'):
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
sys.stderr = io.TextIOWrapper(sys.stderr.buffer, encoding='utf-8', errors='replace')
# 配置变量
APP_NAME = "emotion-museum-single"
JAR_NAME = "backend-single-1.0.0.jar"
@@ -101,7 +107,7 @@ def build_project():
sys.exit(1)
file_size = JAR_PATH.stat().st_size / (1024 * 1024)
log_info(f" 项目构建成功: {JAR_PATH}")
log_info(f"[OK] 项目构建成功: {JAR_PATH}")
log_info(f"文件大小: {file_size:.2f} MB")
@@ -139,7 +145,7 @@ def deploy(upload_script=None):
if not scp_upload(JAR_PATH, f"{REMOTE_DIR}/{REMOTE_JAR_NAME}"):
log_error("上传JAR文件失败")
sys.exit(1)
log_info(" JAR文件上传成功")
log_info("[OK] JAR文件上传成功")
# 验证远程文件
log_info("验证远程文件...")
@@ -157,7 +163,7 @@ def deploy(upload_script=None):
if not scp_upload(script_path, f"{REMOTE_DIR}/{upload_script}"):
log_error(f"上传文件失败: {upload_script}")
sys.exit(1)
log_info(f" 文件上传成功: {upload_script}")
log_info(f"[OK] 文件上传成功: {upload_script}")
if upload_script.endswith('.sh'):
exec_ssh_cmd(f"chmod +x {REMOTE_DIR}/{upload_script}")
else:
@@ -176,7 +182,7 @@ def deploy(upload_script=None):
log_error("远程部署脚本执行失败")
sys.exit(1)
log_info(" 部署完成!")
log_info("[OK] 部署完成!")
show_status()