File size: 3,302 Bytes
24fd742 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
#!/bin/bash
# 聊天应用生产环境部署脚本 - Linux版本
set -e # 遇到错误立即退出
echo "🚀 部署聊天应用到生产环境..."
echo
# 检查是否为root用户
if [ "$EUID" -ne 0 ]; then
echo "⚠️ 建议使用sudo运行此脚本以确保权限充足"
fi
# 检查Docker是否安装
if ! command -v docker &> /dev/null; then
echo "❌ 错误: Docker未安装"
echo "正在安装Docker..."
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
rm get-docker.sh
systemctl enable docker
systemctl start docker
echo "✅ Docker安装完成"
fi
# 检查Docker Compose是否安装
if ! command -v docker-compose &> /dev/null && ! docker compose version &> /dev/null; then
echo "❌ 错误: Docker Compose未安装"
echo "正在安装Docker Compose..."
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
echo "✅ Docker Compose安装完成"
fi
# 检查Docker服务是否运行
if ! docker info &> /dev/null; then
echo "🔄 启动Docker服务..."
systemctl start docker
fi
echo "✅ Docker环境准备完成"
echo
# 设置脚本权限
chmod +x start.sh stop.sh start-dev.sh
# 创建生产环境配置
echo "⚙️ 配置生产环境..."
# 生成随机JWT密钥
JWT_SECRET=$(openssl rand -base64 32)
# 创建生产环境配置文件
cat > .env.production << EOF
# 生产环境配置
NODE_ENV=production
MONGODB_URI=mongodb://admin:$(openssl rand -base64 12)@mongo:27017/chatapp?authSource=admin
JWT_SECRET=${JWT_SECRET}
PORT=5000
CLIENT_URL=http://localhost:3000
EOF
echo "✅ 生产环境配置完成"
echo
# 停止现有服务
echo "🛑 停止现有服务..."
if command -v docker-compose &> /dev/null; then
docker-compose down 2>/dev/null || true
else
docker compose down 2>/dev/null || true
fi
# 清理旧镜像
echo "🧹 清理旧镜像..."
docker system prune -f
# 构建并启动服务
echo "📦 构建并启动生产服务..."
if command -v docker-compose &> /dev/null; then
docker-compose up --build -d
else
docker compose up --build -d
fi
# 等待服务启动
echo "⏳ 等待服务启动..."
sleep 30
# 检查服务状态
echo "🔍 检查服务状态..."
if command -v docker-compose &> /dev/null; then
docker-compose ps
else
docker compose ps
fi
# 测试服务
echo "🧪 测试服务..."
if curl -f http://localhost:5000/api/health > /dev/null 2>&1; then
echo "✅ 后端服务正常"
else
echo "❌ 后端服务异常"
fi
if curl -f http://localhost:3000 > /dev/null 2>&1; then
echo "✅ 前端服务正常"
else
echo "❌ 前端服务异常"
fi
echo
echo "🎉 部署完成!"
echo
echo "🌐 前端地址: http://localhost:3000"
echo "🔧 后端API: http://localhost:5000"
echo "📊 MongoDB: localhost:27017"
echo
echo "📋 常用命令:"
echo " - 查看日志: docker-compose logs -f"
echo " - 重启服务: docker-compose restart"
echo " - 停止服务: ./stop.sh"
echo " - 更新应用: ./deploy.sh"
echo
echo "🔒 安全提醒:"
echo " - 请修改默认密码"
echo " - 配置防火墙规则"
echo " - 启用HTTPS (推荐使用nginx反向代理)"
echo " - 定期备份数据库"
|