2025-11-08 09:21:14 +08:00
|
|
|
|
#!/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
|
|
|
|
|
|
|
|
|
|
|