26f0cdd760
🧹 项目结构优化: - 删除重复和过时的文件 - 整理文档到docs目录结构 - 优化配置文件到configs目录 - 创建清晰的PROJECT_STRUCTURE.md 🔧 中间件配置: - 重启MySQL/Redis/Nacos中间件 - 使用现有数据目录,确保数据完整性 - 统一密码配置: MySQL(EmotionMuseum2025*#), Nacos(Peanut2817*#) 🌐 Nginx配置: - 配置前端路径: /emotion-museum - 配置API代理: /api/ -> 19000 - 配置WebSocket代理: /ws/ -> 19007 - 添加健康检查端点: /health 📋 部署脚本优化: - restart-middleware.sh - 中间件重启脚本 - setup-nginx.sh - Nginx配置脚本 - cleanup-project.sh - 项目清理脚本 - one-click-deploy.sh - 一键部署脚本 📖 文档完善: - DEPLOYMENT_FINAL.md - 最终部署指南 - PROJECT_STRUCTURE.md - 项目结构说明 - 完整的运维和故障排查指南 ✅ 生产环境就绪: - 中间件: MySQL/Redis/Nacos 运行正常 - Nginx: 反向代理配置完成 - 访问地址: http://47.111.10.27/emotion-museum - 健康检查: http://47.111.10.27/health 🎯 项目现状: - 10个微服务模块完整 - 前后端分离架构 - 容器化部署 - 统一配置管理 - 完整的部署和运维体系
190 lines
5.1 KiB
Bash
Executable File
190 lines
5.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# 重启远程服务器中间件脚本
|
|
# 作者: emotion-museum
|
|
# 日期: 2025-07-21
|
|
|
|
set -e
|
|
|
|
REMOTE_HOST="root@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"
|
|
}
|
|
|
|
# 重启MySQL
|
|
restart_mysql() {
|
|
log_info "重启MySQL..."
|
|
ssh "$REMOTE_HOST" "
|
|
# 停止可能存在的MySQL容器
|
|
docker stop emotion-mysql 2>/dev/null || true
|
|
docker rm emotion-mysql 2>/dev/null || true
|
|
|
|
# 启动MySQL容器,使用现有数据
|
|
docker run -d \\
|
|
--name emotion-mysql \\
|
|
--restart unless-stopped \\
|
|
-p 3306:3306 \\
|
|
-v /data/programs/mysql:/var/lib/mysql \\
|
|
-e MYSQL_ROOT_PASSWORD='EmotionMuseum2025*#' \\
|
|
-e TZ=Asia/Shanghai \\
|
|
mysql:8.0 \\
|
|
--default-authentication-plugin=mysql_native_password
|
|
|
|
echo 'MySQL容器启动完成'
|
|
"
|
|
|
|
# 等待MySQL启动
|
|
log_info "等待MySQL启动..."
|
|
sleep 15
|
|
|
|
# 检查MySQL状态
|
|
if ssh "$REMOTE_HOST" "docker exec emotion-mysql mysqladmin ping -h localhost --silent"; then
|
|
log_success "MySQL启动成功"
|
|
else
|
|
log_error "MySQL启动失败"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 重启Redis
|
|
restart_redis() {
|
|
log_info "重启Redis..."
|
|
ssh "$REMOTE_HOST" "
|
|
# 停止可能存在的Redis容器
|
|
docker stop emotion-redis 2>/dev/null || true
|
|
docker rm emotion-redis 2>/dev/null || true
|
|
|
|
# 启动Redis容器,使用现有数据
|
|
docker run -d \\
|
|
--name emotion-redis \\
|
|
--restart unless-stopped \\
|
|
-p 6379:6379 \\
|
|
-v /data/programs/redis:/data \\
|
|
redis:7-alpine \\
|
|
redis-server --appendonly yes
|
|
|
|
echo 'Redis容器启动完成'
|
|
"
|
|
|
|
# 等待Redis启动
|
|
log_info "等待Redis启动..."
|
|
sleep 5
|
|
|
|
# 检查Redis状态
|
|
if ssh "$REMOTE_HOST" "docker exec emotion-redis redis-cli ping" | grep -q "PONG"; then
|
|
log_success "Redis启动成功"
|
|
else
|
|
log_error "Redis启动失败"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# 重启Nacos
|
|
restart_nacos() {
|
|
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 \\
|
|
-v /data/programs/nacos/logs:/home/nacos/logs \\
|
|
-v /data/programs/nacos/data:/home/nacos/data \\
|
|
-e MODE=standalone \\
|
|
-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 \\
|
|
nacos/nacos-server:v2.2.0
|
|
|
|
echo 'Nacos容器启动完成'
|
|
"
|
|
|
|
# 等待Nacos启动
|
|
log_info "等待Nacos启动..."
|
|
sleep 30
|
|
|
|
# 检查Nacos状态
|
|
if ssh "$REMOTE_HOST" "curl -f -s http://localhost:8848/nacos/v1/console/health" > /dev/null; then
|
|
log_success "Nacos启动成功"
|
|
else
|
|
log_warning "Nacos可能还在启动中,请稍后检查"
|
|
fi
|
|
}
|
|
|
|
# 创建Docker网络
|
|
create_network() {
|
|
log_info "创建Docker网络..."
|
|
ssh "$REMOTE_HOST" "docker network create emotion-network 2>/dev/null || echo 'network already exists'"
|
|
}
|
|
|
|
# 检查中间件状态
|
|
check_status() {
|
|
log_info "检查中间件状态..."
|
|
ssh "$REMOTE_HOST" "
|
|
echo '=== 容器状态 ==='
|
|
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}' | grep -E '(mysql|redis|nacos)'
|
|
echo ''
|
|
echo '=== 端口监听 ==='
|
|
netstat -tlnp | grep -E ':(3306|6379|8848)' || echo '端口未监听'
|
|
"
|
|
}
|
|
|
|
# 主函数
|
|
main() {
|
|
log_info "🚀 开始重启远程服务器中间件..."
|
|
|
|
# 检查SSH连接
|
|
if ! ssh -o ConnectTimeout=10 "$REMOTE_HOST" "echo 'SSH连接成功'" > /dev/null 2>&1; then
|
|
log_error "无法连接到远程服务器: $REMOTE_HOST"
|
|
exit 1
|
|
fi
|
|
|
|
# 创建网络
|
|
create_network
|
|
|
|
# 重启中间件
|
|
restart_mysql
|
|
restart_redis
|
|
restart_nacos
|
|
|
|
# 检查状态
|
|
check_status
|
|
|
|
log_success "🎉 中间件重启完成!"
|
|
echo ""
|
|
echo "📋 连接信息:"
|
|
echo " MySQL: $REMOTE_HOST:3306 (root/EmotionMuseum2025*#)"
|
|
echo " Redis: $REMOTE_HOST:6379"
|
|
echo " Nacos: http://$REMOTE_HOST:8848/nacos (nacos/Peanut2817*#)"
|
|
}
|
|
|
|
# 执行主函数
|
|
main "$@"
|