Files
happy-life-star/fix-nacos-config.sh
T
peanut f9ff8302ae feat: 修复前端空白页面和Nacos配置问题
 前端修复完成:
- 修复空白页面问题,部署正确的首页内容
- 访问地址: http://47.111.10.27/emotion/happy/
- 与开发环境完全一致的Vue首页

🔧 Nacos配置修复:
- 修复微服务注册问题
- 统一日志路径配置
- 优化部署脚本

📋 脚本优化:
- 删除多余部署脚本
- 保留核心脚本
- 支持参数控制
2025-07-21 16:48:00 +08:00

191 lines
5.9 KiB
Bash
Executable File

#!/bin/bash
# 修复Nacos配置和微服务注册问题
# 作者: emotion-museum
# 日期: 2025-07-21
set -e
REMOTE_HOST="root@47.111.10.27"
REMOTE_IP="47.111.10.27"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
log_info() {
echo -e "${BLUE}[INFO]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
}
log_success() {
echo -e "${GREEN}[SUCCESS]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
}
# 检查SSH连接
check_connection() {
log_info "检查远程服务器连接..."
if ssh -o ConnectTimeout=10 "$REMOTE_HOST" "echo 'SSH连接成功'" > /dev/null 2>&1; then
log_success "远程服务器连接正常"
else
log_error "无法连接到远程服务器: $REMOTE_HOST"
exit 1
fi
}
# 修复Nacos容器配置
fix_nacos_container() {
log_info "修复Nacos容器配置..."
ssh "$REMOTE_HOST" "
# 停止现有Nacos容器
docker stop emotion-nacos 2>/dev/null || true
docker rm emotion-nacos 2>/dev/null || true
# 启动新的Nacos容器,确保正确的网络配置
docker run -d \\
--name emotion-nacos \\
--restart unless-stopped \\
-p 8848:8848 \\
-p 9848:9848 \\
-p 9849:9849 \\
-v /data/programs/nacos/logs:/home/nacos/logs \\
-v /data/programs/nacos/data:/home/nacos/data \\
-e MODE=standalone \\
-e PREFER_HOST_MODE=hostname \\
-e SPRING_DATASOURCE_PLATFORM=mysql \\
-e MYSQL_SERVICE_HOST=emotion-mysql \\
-e MYSQL_SERVICE_PORT=3306 \\
-e MYSQL_SERVICE_DB_NAME=nacos_config \\
-e MYSQL_SERVICE_USER=root \\
-e MYSQL_SERVICE_PASSWORD='EmotionMuseum2025*#' \\
-e NACOS_AUTH_ENABLE=true \\
-e NACOS_AUTH_TOKEN_EXPIRE_SECONDS=18000 \\
-e NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789 \\
-e NACOS_AUTH_IDENTITY_KEY=serverIdentity \\
-e NACOS_AUTH_IDENTITY_VALUE=security \\
--network bridge \\
nacos/nacos-server:v2.2.0
echo 'Nacos容器启动完成'
# 等待Nacos启动
echo '等待Nacos启动...'
sleep 30
# 检查Nacos状态
curl -f -s http://localhost:8848/nacos/v1/console/health || echo 'Nacos健康检查失败'
"
log_success "Nacos容器配置修复完成"
}
# 修复微服务配置
fix_microservice_config() {
log_info "修复微服务配置..."
# 更新所有微服务的配置文件
for service in gateway user ai auth record growth explore reward websocket stats; do
log_info "更新 emotion-$service 配置..."
# 检查配置文件是否存在
if [ -f "backend/emotion-$service/src/main/resources/application.yml" ]; then
# 备份原始配置
cp "backend/emotion-$service/src/main/resources/application.yml" "backend/emotion-$service/src/main/resources/application.yml.bak"
# 更新Nacos配置
sed -i.bak "s/127.0.0.1:8848/$REMOTE_IP:8848/g" "backend/emotion-$service/src/main/resources/application.yml"
sed -i.bak "s/localhost:8848/$REMOTE_IP:8848/g" "backend/emotion-$service/src/main/resources/application.yml"
# 更新日志配置
if grep -q "logging:" "backend/emotion-$service/src/main/resources/application.yml"; then
sed -i.bak "s|logging:|logging:\\n file:\\n path: /data/logs/emotion-museum/$service|g" "backend/emotion-$service/src/main/resources/application.yml"
else
echo "
logging:
file:
path: /data/logs/emotion-museum/$service
" >> "backend/emotion-$service/src/main/resources/application.yml"
fi
log_success "emotion-$service 配置已更新"
else
log_warning "emotion-$service 配置文件不存在"
fi
done
log_success "微服务配置修复完成"
}
# 重新构建和部署微服务
rebuild_and_deploy() {
log_info "重新构建和部署微服务..."
# 构建所有服务
cd backend
./build-all.sh
# 部署到远程服务器
./deploy-remote.sh
cd ..
log_success "微服务重新部署完成"
}
# 检查微服务注册状态
check_service_registration() {
log_info "检查微服务注册状态..."
# 等待服务启动
sleep 30
# 检查Nacos服务列表
ssh "$REMOTE_HOST" "
echo '检查Nacos服务列表...'
curl -s -X GET 'http://localhost:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=10' \\
-H 'Content-Type: application/x-www-form-urlencoded' \\
| grep -o '\"count\":[0-9]*' || echo 'Nacos服务列表获取失败'
echo ''
echo '检查微服务健康状态...'
for port in 19000 19001 19002 19008; do
echo -n \"端口 \$port: \"
curl -f -s \"http://localhost:\$port/actuator/health\" > /dev/null && echo '✅ 健康' || echo '❌ 未就绪'
done
"
log_success "微服务注册检查完成"
}
# 主函数
main() {
log_info "🚀 开始修复Nacos配置和微服务注册问题..."
check_connection
fix_nacos_container
fix_microservice_config
rebuild_and_deploy
check_service_registration
log_success "🎉 Nacos配置和微服务注册问题修复完成!"
echo ""
echo "📋 访问信息:"
echo " Nacos控制台: http://47.111.10.27:8848/nacos"
echo " API网关: http://47.111.10.27:19000"
echo " 日志目录: /data/logs/emotion-museum/{service}"
}
# 执行主函数
main "$@"