| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- #!/bin/bash
- ##############################################
- # Snapshot 后端部署脚本
- # 适用于 Linux 环境
- ##############################################
- # 颜色输出
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- NC='\033[0m' # No Color
- # 打印带颜色的消息
- print_info() {
- echo -e "${GREEN}[INFO]${NC} $1"
- }
- print_error() {
- echo -e "${RED}[ERROR]${NC} $1"
- }
- print_warning() {
- echo -e "${YELLOW}[WARNING]${NC} $1"
- }
- # 检查命令是否存在
- command_exists() {
- command -v "$1" >/dev/null 2>&1
- }
- echo "============================================"
- echo "Snapshot 后端部署脚本"
- echo "============================================"
- echo
- # 1. 检查Java环境
- echo "[1/6] 检查Java环境..."
- if ! command_exists java; then
- print_error "未检测到Java环境"
- echo "请安装 Java 17 或更高版本"
- exit 1
- fi
- JAVA_VERSION=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}' | cut -d'.' -f1)
- if [ "$JAVA_VERSION" -lt 17 ]; then
- print_warning "Java版本较低,建议使用 Java 17+"
- fi
- print_info "Java环境检查通过"
- java -version | head -n 1
- echo
- # 2. 检查Maven环境
- echo "[2/6] 检查Maven环境..."
- if ! command_exists mvn; then
- print_error "未检测到Maven环境"
- echo "请安装 Maven"
- exit 1
- fi
- print_info "Maven环境检查通过"
- mvn -version | head -n 1
- echo
- # 3. 初始化数据库
- echo "[3/6] 数据库初始化..."
- print_info "默认使用 SQLite,无需初始化数据库。"
- echo "如需使用 MySQL,请先修改 application-mysql.properties 中的连接信息。"
- echo
- read -p "是否跳过数据库初始化?(Y/n): " confirm
- if [ "$confirm" = "n" ] || [ "$confirm" = "N" ]; then
- print_info "请先配置 application-mysql.properties,然后手动执行:"
- echo " mysql -u<USER> -p<PASSWORD> < src/main/resources/sql/create.sql"
- exit 0
- fi
- print_info "跳过数据库初始化"
- echo
- # 4. 清理之前的构建
- echo "[4/6] 清理之前的构建..."
- mvn clean
- if [ $? -neq 0 ]; then
- print_error "清理失败"
- exit 1
- fi
- print_info "清理完成"
- echo
- # 5. 编译打包
- echo "[5/6] 编译打包项目..."
- mvn clean package -DskipTests
- if [ $? -neq 0 ]; then
- print_error "编译打包失败"
- exit 1
- fi
- print_info "编译打包完成"
- echo
- # 6. 启动应用
- echo "[6/6] 启动应用..."
- echo "正在启动Spring Boot应用..."
- echo
- # 检查是否已经在运行
- if pgrep -f "snapshot-backend-1.0.0.jar" > /dev/null; then
- print_warning "检测到Java进程正在运行"
- read -p "是否停止现有进程?(y/n): " kill
- if [ "$kill" = "y" ] || [ "$kill" = "Y" ]; then
- pkill -f "snapshot-backend-1.0.0.jar"
- sleep 2
- fi
- fi
- # 启动应用
- JAR_FILE="target/snapshot-backend-1.0.0.jar"
- if [ ! -f "$JAR_FILE" ]; then
- print_error "JAR文件不存在: $JAR_FILE"
- exit 1
- fi
- print_info "启动命令: nohup java -jar $JAR_FILE > app.log 2>&1 &"
- nohup java -jar "$JAR_FILE" > app.log 2>&1 &
- PID=$!
- # 等待应用启动
- print_info "等待应用启动..."
- sleep 10
- # 检查应用是否启动成功
- if ps -p $PID > /dev/null; then
- echo
- echo "============================================"
- print_info "部署完成!"
- echo "============================================"
- echo
- echo "应用PID: $PID"
- echo "应用访问地址: http://localhost:7626"
- echo "日志文件: app.log"
- echo
- echo "查看日志: tail -f app.log"
- echo "停止应用: kill $PID"
- echo
- echo "应用正在后台运行..."
- else
- print_error "应用启动失败"
- echo "请查看日志文件: cat app.log"
- exit 1
- fi
|