Files
AIGC/demo/deploy_baota/backend/start.sh

112 lines
2.2 KiB
Bash
Raw Normal View History

2025-11-13 17:01:39 +08:00
#!/bin/bash
# 宝塔面板后端启动脚本
# 设置JAVA_HOME根据实际Java安装路径修改
# export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
# export PATH=$JAVA_HOME/bin:$PATH
# 应用配置
APP_NAME="aigc-backend"
APP_JAR="app.jar"
APP_PORT=8080
APP_HOME=$(cd "$(dirname "$0")"; pwd)
LOG_DIR="$APP_HOME/logs"
PID_FILE="$APP_HOME/app.pid"
# JVM参数根据服务器内存调整
JAVA_OPTS="-Xms1g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -Djava.security.egd=file:/dev/./urandom"
# 创建日志目录
mkdir -p $LOG_DIR
# 启动函数
start() {
if [ -f "$PID_FILE" ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "$APP_NAME 已经在运行中 (PID: $PID)"
return 1
else
rm -f $PID_FILE
fi
fi
echo "启动 $APP_NAME..."
cd $APP_HOME
nohup java $JAVA_OPTS -jar $APP_JAR --spring.profiles.active=prod > $LOG_DIR/app.log 2>&1 &
echo $! > $PID_FILE
echo "$APP_NAME 启动成功 (PID: $(cat $PID_FILE))"
}
# 停止函数
stop() {
if [ ! -f "$PID_FILE" ]; then
echo "$APP_NAME 未运行"
return 1
fi
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "停止 $APP_NAME (PID: $PID)..."
kill $PID
sleep 3
if ps -p $PID > /dev/null 2>&1; then
kill -9 $PID
fi
rm -f $PID_FILE
echo "$APP_NAME 已停止"
else
echo "$APP_NAME 未运行"
rm -f $PID_FILE
fi
}
# 重启函数
restart() {
stop
sleep 2
start
}
# 状态检查
status() {
if [ -f "$PID_FILE" ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo "$APP_NAME 正在运行 (PID: $PID)"
return 0
else
echo "$APP_NAME 未运行"
rm -f $PID_FILE
return 1
fi
else
echo "$APP_NAME 未运行"
return 1
fi
}
# 主逻辑
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
*)
echo "用法: $0 {start|stop|restart|status}"
exit 1
;;
esac
exit 0