Files
AIGC/demo/deploy-linux.sh

142 lines
3.9 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
# Linux 云端部署脚本
# 使用方法: ./deploy-linux.sh
set -e
echo "🚀 开始部署 AIGC 平台到 Linux 服务器..."
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 检查Java
echo -e "${YELLOW}检查Java环境...${NC}"
if ! command -v java &> /dev/null; then
echo -e "${RED}❌ Java未安装请先安装Java 21${NC}"
echo "安装命令: sudo apt install -y openjdk-21-jdk"
exit 1
fi
JAVA_VERSION=$(java -version 2>&1 | head -n 1)
echo -e "${GREEN}✅ Java已安装: $JAVA_VERSION${NC}"
# 检查MySQL
echo -e "${YELLOW}检查MySQL服务...${NC}"
if ! systemctl is-active --quiet mysql && ! systemctl is-active --quiet mysqld; then
echo -e "${RED}❌ MySQL服务未运行${NC}"
echo "启动命令: sudo systemctl start mysql"
exit 1
fi
echo -e "${GREEN}✅ MySQL服务运行中${NC}"
# 检查FFmpeg
echo -e "${YELLOW}检查FFmpeg...${NC}"
if ! command -v ffmpeg &> /dev/null; then
echo -e "${YELLOW}⚠️ FFmpeg未安装视频功能可能不可用${NC}"
echo "安装命令: sudo apt install -y ffmpeg"
else
echo -e "${GREEN}✅ FFmpeg已安装${NC}"
fi
# 检查应用目录
APP_DIR="/app/aigc-platform"
echo -e "${YELLOW}检查应用目录...${NC}"
if [ ! -d "$APP_DIR" ]; then
echo -e "${YELLOW}创建应用目录...${NC}"
sudo mkdir -p $APP_DIR/{logs,uploads,temp,config,backend,frontend}
sudo chown -R $USER:$USER $APP_DIR
chmod -R 755 $APP_DIR
fi
echo -e "${GREEN}✅ 应用目录存在${NC}"
# 检查JAR文件
JAR_FILE="$APP_DIR/backend/demo-0.0.1-SNAPSHOT.jar"
if [ ! -f "$JAR_FILE" ]; then
echo -e "${RED}❌ JAR文件不存在: $JAR_FILE${NC}"
echo "请先上传JAR文件到服务器"
exit 1
fi
echo -e "${GREEN}✅ JAR文件存在${NC}"
# 检查配置文件
CONFIG_FILE="$APP_DIR/config/application-prod.properties"
if [ ! -f "$CONFIG_FILE" ]; then
echo -e "${YELLOW}⚠️ 配置文件不存在,请先创建配置文件${NC}"
echo "配置文件路径: $CONFIG_FILE"
fi
# 停止服务
echo -e "${YELLOW}停止现有服务...${NC}"
if systemctl is-active --quiet aigc-platform; then
sudo systemctl stop aigc-platform
echo -e "${GREEN}✅ 服务已停止${NC}"
else
echo -e "${YELLOW}服务未运行${NC}"
fi
# 备份旧版本
echo -e "${YELLOW}备份旧版本...${NC}"
BACKUP_DIR="$APP_DIR/backup/$(date +%Y%m%d_%H%M%S)"
mkdir -p $BACKUP_DIR
if [ -f "$JAR_FILE" ]; then
cp "$JAR_FILE" "$BACKUP_DIR/" 2>/dev/null || true
echo -e "${GREEN}✅ 备份完成: $BACKUP_DIR${NC}"
fi
# 检查systemd服务文件
SERVICE_FILE="/etc/systemd/system/aigc-platform.service"
if [ ! -f "$SERVICE_FILE" ]; then
echo -e "${YELLOW}⚠️ Systemd服务文件不存在${NC}"
echo "请先创建服务文件: $SERVICE_FILE"
echo "参考文档: LINUX_DEPLOYMENT_GUIDE.md"
exit 1
fi
# 重新加载systemd
echo -e "${YELLOW}重新加载systemd配置...${NC}"
sudo systemctl daemon-reload
# 启动服务
echo -e "${YELLOW}启动服务...${NC}"
sudo systemctl start aigc-platform
# 等待启动
echo -e "${YELLOW}等待服务启动...${NC}"
sleep 5
# 检查状态
if systemctl is-active --quiet aigc-platform; then
echo -e "${GREEN}✅ 部署成功!${NC}"
echo ""
echo "服务状态:"
sudo systemctl status aigc-platform --no-pager -l
echo ""
echo "查看日志: sudo journalctl -u aigc-platform -f"
echo "停止服务: sudo systemctl stop aigc-platform"
echo "重启服务: sudo systemctl restart aigc-platform"
else
echo -e "${RED}❌ 部署失败!${NC}"
echo ""
echo "查看错误日志:"
sudo journalctl -u aigc-platform -n 50 --no-pager
exit 1
fi
# 测试健康检查
echo -e "${YELLOW}测试健康检查...${NC}"
sleep 2
if curl -f http://localhost:8080/actuator/health > /dev/null 2>&1; then
echo -e "${GREEN}✅ 健康检查通过${NC}"
else
echo -e "${YELLOW}⚠️ 健康检查失败,请检查日志${NC}"
fi
echo ""
echo -e "${GREEN}🎉 部署完成!${NC}"
2025-11-13 17:01:39 +08:00