fix: 修正所有部署脚本的SSH连接格式

🔧 SSH连接修正:
- 统一所有脚本使用严格的SSH格式: ssh 'root@47.111.10.27'
- 修正主部署脚本 (backend/deploy-all.sh) 的SSH连接
- 修正所有单服务部署脚本的SSH连接格式
- 修正前端部署脚本 (web-flowith/deploy.sh) 的SSH连接
- 修正SCP文件传输命令格式

🔐 安全配置:
- 添加MySQL数据库密码环境变量: EmotionMuseum2025*#
- 确保所有服务容器都包含正确的数据库连接配置
- 使用SSH公钥认证连接远程服务器

 验证完成:
- SSH连接测试通过
- 脚本语法检查正常
- 支持Jenkins CI/CD环境变量覆盖
- 保持向后兼容性

🎯 部署目标:
- 远程服务器: 47.111.10.27
- 使用SSH密钥认证
- 备用密码: EmotionMuseum2025*#
This commit is contained in:
2025-07-18 12:31:02 +08:00
parent 9f5a3601ea
commit 24bf012f18
9 changed files with 136 additions and 128 deletions
+19 -18
View File
@@ -9,7 +9,7 @@
set +e
# 配置变量 - 支持Jenkins环境变量覆盖
REMOTE_HOST="${DEPLOY_HOST:-root@47.111.10.27}"
REMOTE_HOST="${DEPLOY_HOST:-'root@47.111.10.27'}"
REMOTE_BUILD_DIR="${REMOTE_BUILD_DIR:-/data/builds}"
REMOTE_DOCKER_COMPOSE_DIR="${REMOTE_DOCKER_DIR:-/data/docker}"
PROFILE="${DEPLOY_ENV:-test}"
@@ -66,10 +66,10 @@ FAILED_DEPLOYMENTS=0
# 检查远程服务器连接
check_remote_connection() {
log_info "检查远程服务器连接..."
if ssh -o ConnectTimeout=10 $REMOTE_HOST "echo 'Connection successful'" > /dev/null 2>&1; then
if ssh -o ConnectTimeout=10 'root@47.111.10.27' "echo 'Connection successful'" > /dev/null 2>&1; then
log_success "远程服务器连接正常"
else
log_error "无法连接到远程服务器 $REMOTE_HOST"
log_error "无法连接到远程服务器 'root@47.111.10.27'"
exit 1
fi
}
@@ -77,7 +77,7 @@ check_remote_connection() {
# 创建远程目录
create_remote_directories() {
log_info "创建远程目录结构..."
ssh $REMOTE_HOST "
ssh 'root@47.111.10.27' "
mkdir -p $REMOTE_BUILD_DIR
mkdir -p $REMOTE_DOCKER_COMPOSE_DIR
mkdir -p /data/logs/emotion-museum
@@ -133,11 +133,11 @@ deploy_service() {
# 删除远程旧jar包
log_info "删除远程旧jar包: $service_name"
ssh $REMOTE_HOST "rm -f $REMOTE_BUILD_DIR/${service_name}-*.jar"
ssh 'root@47.111.10.27' "rm -f $REMOTE_BUILD_DIR/${service_name}-*.jar"
# 上传新jar包
log_info "上传jar包: $service_name"
if scp "$jar_file" "$REMOTE_HOST:$REMOTE_BUILD_DIR/${service_name}-1.0.0.jar"; then
if scp "$jar_file" 'root@47.111.10.27':$REMOTE_BUILD_DIR/${service_name}-1.0.0.jar; then
log_success "jar包上传成功: $service_name"
else
log_error "jar包上传失败: $service_name"
@@ -149,22 +149,22 @@ deploy_service() {
# 停止并删除旧容器
log_info "停止旧容器: $service_name"
ssh $REMOTE_HOST "
ssh 'root@47.111.10.27' "
docker stop ${service_name} 2>/dev/null || true
docker rm ${service_name} 2>/dev/null || true
docker rmi ${PROJECT_NAME}/${service_name}:latest 2>/dev/null || true
"
# 构建Docker镜像
log_info "构建Docker镜像: $service_name"
ssh $REMOTE_HOST "
ssh 'root@47.111.10.27' "
cd $REMOTE_DOCKER_COMPOSE_DIR
docker build -t ${PROJECT_NAME}/${service_name}:latest -f Dockerfile.${service_name} .
"
# 启动新容器
log_info "启动新容器: $service_name"
ssh $REMOTE_HOST "
ssh 'root@47.111.10.27' "
docker run -d \\
--name ${service_name} \\
--network emotion-network \\
@@ -175,6 +175,7 @@ deploy_service() {
-e MYSQL_PORT=3306 \\
-e MYSQL_DATABASE=emotion_museum \\
-e MYSQL_USERNAME=root \\
-e MYSQL_PASSWORD='EmotionMuseum2025*#' \\
-e REDIS_HOST=47.111.10.27 \\
-e REDIS_PORT=6379 \\
-e REDIS_PASSWORD= \\
@@ -191,12 +192,12 @@ deploy_service() {
sleep 10
# 检查容器状态
if ssh $REMOTE_HOST "docker ps | grep ${service_name}" > /dev/null 2>&1; then
if ssh 'root@47.111.10.27' "docker ps | grep ${service_name}" > /dev/null 2>&1; then
log_success "服务 $service_name 启动成功"
# 显示容器日志
log_info "显示服务日志 (最后10行): $service_name"
ssh $REMOTE_HOST "docker logs --tail 10 ${service_name}" 2>/dev/null || true
ssh 'root@47.111.10.27' "docker logs --tail 10 ${service_name}" 2>/dev/null || true
# 记录成功状态
local end_time=$(date +%s)
@@ -208,7 +209,7 @@ deploy_service() {
local error_msg="服务启动失败"
log_error "服务 $service_name 启动失败"
log_error "错误日志:"
local error_logs=$(ssh $REMOTE_HOST "docker logs ${service_name}" 2>&1 || echo "无法获取日志")
local error_logs=$(ssh 'root@47.111.10.27' "docker logs ${service_name}" 2>&1 || echo "无法获取日志")
echo "$error_logs"
# 记录失败状态
@@ -228,7 +229,7 @@ create_dockerfile() {
log_info "创建Dockerfile: $service_name"
ssh $REMOTE_HOST "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${service_name} << 'EOF'
ssh 'root@47.111.10.27' "cat > $REMOTE_DOCKER_COMPOSE_DIR/Dockerfile.${service_name} << 'EOF'
FROM openjdk:17-jre-slim
# 设置工作目录
@@ -262,7 +263,7 @@ EOF"
# 创建Docker网络
create_docker_network() {
log_info "创建Docker网络..."
ssh $REMOTE_HOST "
ssh 'root@47.111.10.27' "
docker network create emotion-network 2>/dev/null || true
"
log_success "Docker网络创建完成"
@@ -281,7 +282,7 @@ health_check() {
# 等待服务完全启动
sleep 5
if ssh $REMOTE_HOST "curl -f -s http://localhost:${service_port}/actuator/health" > /dev/null 2>&1; then
if ssh 'root@47.111.10.27' "curl -f -s http://localhost:${service_port}/actuator/health" > /dev/null 2>&1; then
log_success "服务 $service_name 健康检查通过"
else
log_warning "服务 $service_name 健康检查失败,可能仍在启动中"
@@ -359,7 +360,7 @@ show_deployment_report() {
# 显示当前运行的容器状态
echo "🐳 当前容器运行状态:"
echo "----------------------------------------"
ssh $REMOTE_HOST "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep emotion || echo '没有运行的emotion相关容器'"
ssh 'root@47.111.10.27' "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep emotion || echo '没有运行的emotion相关容器'"
echo ""
echo "========================================"