代码优化

This commit is contained in:
2025-10-13 10:43:08 +08:00
parent b6818b179c
commit bc3ed2d872
40 changed files with 3189 additions and 788 deletions
+25 -74
View File
@@ -1,18 +1,22 @@
#!/bin/bash
# 情绪博物馆后端服务部署脚本
# 使用生产环境配置,日志保存到 /data/logs/emotion-museum/single
# 情绪博物馆后端服务远程部署脚本
# 在远程服务器上执行的服务部署脚本
set -e
# 配置变量
APP_NAME="emotion-museum-single"
JAR_NAME="emotion-single-1.0.0.jar"
JAR_PATH="./${JAR_NAME}"
LOG_DIR="./logs/"
DEPLOY_DIR="/data/programs/emotion-museum"
LOG_DIR="/data/logs/emotion-museum"
JAR_PATH="$DEPLOY_DIR/$JAR_NAME"
PID_FILE="/tmp/${APP_NAME}.pid"
JAVA_OPTS="-Xms512m -Xmx1024m -XX:+UseG1GC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_DIR}/heapdump.hprof"
# 获取 Spring Profile 参数
SPRING_PROFILE=${1:-test}
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
@@ -36,20 +40,11 @@ log_error() {
check_jar() {
if [ ! -f "$JAR_PATH" ]; then
log_error "JAR 文件不存在: $JAR_PATH"
log_info "请先执行打包命令: mvn clean package -Pprod"
exit 1
fi
log_info "JAR 文件检查通过: $JAR_PATH"
}
# 创建日志目录
create_log_dir() {
if [ ! -d "$LOG_DIR" ]; then
log_info "创建日志目录: $LOG_DIR"
mkdir -p "$LOG_DIR"
fi
}
# 停止旧服务
stop_service() {
if [ -f "$PID_FILE" ]; then
@@ -85,11 +80,14 @@ stop_service() {
start_service() {
log_info "启动新服务..."
# 检查JAR文件
check_jar
# 启动命令
nohup java $JAVA_OPTS \
-Dspring.profiles.active=prod \
-Dspring.profiles.active=$SPRING_PROFILE \
-Dlogging.file.path=$LOG_DIR \
-Dlogging.file.name=$LOG_DIR/application.log \
-Dlogging.file.name=$LOG_DIR/emotion-single.log \
-jar "$JAR_PATH" \
> "$LOG_DIR/startup.log" 2>&1 &
@@ -98,7 +96,7 @@ start_service() {
log_info "服务启动中,PID: $(cat $PID_FILE)"
log_info "启动日志: $LOG_DIR/startup.log"
log_info "应用日志: $LOG_DIR/application.log"
log_info "应用日志: $LOG_DIR/emotion-single.log"
}
# 检查服务状态
@@ -123,8 +121,8 @@ wait_for_startup() {
log_info "等待服务启动..."
for i in {1..60}; do
if check_status > /dev/null 2>&1; then
# 检查端口是否监听(假设使用 8080 端口)
if netstat -tlnp 2>/dev/null | grep -q ":8080.*LISTEN"; then
# 检查端口是否监听(使用 19089 端口)
if netstat -tlnp 2>/dev/null | grep -q ":19089.*LISTEN"; then
log_info "服务启动成功!"
return 0
fi
@@ -141,19 +139,15 @@ show_info() {
log_info "=== 服务信息 ==="
log_info "应用名称: $APP_NAME"
log_info "JAR 文件: $JAR_PATH"
log_info "部署目录: $DEPLOY_DIR"
log_info "日志目录: $LOG_DIR"
log_info "PID 文件: $PID_FILE"
log_info "Java 参数: $JAVA_OPTS"
log_info "Spring Profile: $SPRING_PROFILE"
if check_status > /dev/null 2>&1; then
PID=$(cat "$PID_FILE")
log_info "服务状态: 运行中 (PID: $PID)"
# 显示内存使用情况
if command -v jstat > /dev/null 2>&1; then
log_info "内存使用情况:"
jstat -gc "$PID" | head -2
fi
else
log_info "服务状态: 未运行"
fi
@@ -161,13 +155,11 @@ show_info() {
# 主函数
main() {
log_info "开始部署 $APP_NAME 服务..."
# 检查 jar 文件
check_jar
log_info "开始在服务器上部署 $APP_NAME 服务..."
# 创建日志目录
create_log_dir
log_info "创建日志目录: $LOG_DIR"
mkdir -p "$LOG_DIR"
# 停止旧服务
stop_service
@@ -177,54 +169,13 @@ main() {
# 等待启动
if wait_for_startup; then
log_info "部署成功!"
log_info "服务器部署成功!"
show_info
else
log_error "部署失败!"
log_error "服务器部署失败!"
exit 1
fi
}
# 处理命令行参
case "${1:-deploy}" in
"deploy")
main
;;
"start")
check_jar
create_log_dir
start_service
wait_for_startup
;;
"stop")
stop_service
;;
"restart")
stop_service
sleep 2
check_jar
create_log_dir
start_service
wait_for_startup
;;
"status")
show_info
;;
"logs")
if [ -f "$LOG_DIR/application.log" ]; then
tail -f "$LOG_DIR/application.log"
else
log_error "日志文件不存在: $LOG_DIR/application.log"
fi
;;
*)
echo "用法: $0 {deploy|start|stop|restart|status|logs}"
echo " deploy - 部署服务(默认)"
echo " start - 启动服务"
echo " stop - 停止服务"
echo " restart - 重启服务"
echo " status - 查看服务状态"
echo " logs - 查看实时日志"
exit 1
;;
esac
# 执行主函
main