Files
AIGC/demo/deploy-linux.sh
2025-11-13 17:01:39 +08:00

142 lines
3.9 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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}"