Spaces:
Configuration error
Configuration error
# 聊天应用生产环境部署脚本 - 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 " - 定期备份数据库" | |