From 09883eacdb2c734378cc10a578a9f209d47ff018 Mon Sep 17 00:00:00 2001 From: Fdily <2949549024@qq.com> Date: Thu, 25 Jun 2026 14:05:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.sh | 37 +++++++++++++--- publish.sh | 44 ++++++++++++++++++- run.sh | 7 +++ ry.sh | 126 ++++++++++++++++++++++------------------------------- 4 files changed, 133 insertions(+), 81 deletions(-) create mode 100644 run.sh diff --git a/package.sh b/package.sh index acf73f4..27025ff 100644 --- a/package.sh +++ b/package.sh @@ -1,6 +1,33 @@ #!/bin/bash -MVN=/root/apache-maven-3.6.3/bin/mvn -export JAVA_HOME=/root/jdk-21.0.10 -export PATH=$JAVA_HOME/bin:$PATH -$MVN -version -git pull && $MVN clean && $MVN package -Dmaven.test.skip=true && cp ./ruoyi-admin/target/ruoyi-admin.jar ./ \ No newline at end of file +# ============================================================ +# Maven 打包脚本(仅负责编译打包,不做 git 操作) +# 由 publish.sh 调用 +# ============================================================ + +# ========== 配置项 ========== +MAVEN_PATH="/root/apache-maven-3.6.3/bin/mvn" +JAVA_HOME="/root/jdk-21.0.10" +JAR_SOURCE="./ruoyi-admin/target/ruoyi-admin.jar" +JAR_DEST="./ruoyi-admin.jar" +# =========================== + +export JAVA_HOME="$JAVA_HOME" +export PATH="$JAVA_HOME/bin:$PATH" + +echo "--- 环境检查 ---" +java -version 2>&1 | head -1 +$MAVEN_PATH -version 2>&1 | head -1 +echo "----------------" + +# Maven 打包 +echo "开始 Maven 打包..." +$MAVEN_PATH clean package -Dmaven.test.skip=true + +# 复制 jar +if [ -f "$JAR_SOURCE" ]; then + cp -f "$JAR_SOURCE" "$JAR_DEST" + echo "✅ jar 包已就绪: $JAR_DEST" +else + echo "❌ 打包失败,未找到 $JAR_SOURCE" + exit 1 +fi diff --git a/publish.sh b/publish.sh index 20cf8d8..d74ae43 100644 --- a/publish.sh +++ b/publish.sh @@ -1,5 +1,47 @@ #!/bin/bash +# ============================================================ +# 一键部署脚本(宝塔面板使用) +# 用法:bash publish.sh (推荐用 bash 调用,避免权限问题) +# ============================================================ + +set -e + +echo "=========================================" +echo " 开始部署..." +echo "=========================================" + +# 1. 拉取最新代码 +echo "" +echo ">>> [1/3] 拉取最新代码" +git checkout -- . +git fetch origin master +echo "" +echo "--- 本次提交的修改文件 ---" +git --no-pager log -1 --stat --pretty=format:"" FETCH_HEAD +echo "" +echo "---------------------------" +git reset --hard FETCH_HEAD --quiet +chmod +x *.sh +echo "✅ 代码已更新" + +# 2. 打包 +echo "" +echo ">>> [2/3] Maven 打包" ./package.sh +echo "✅ 打包完成" + +# 3. 重启服务 +echo "" +echo ">>> [3/3] 重启服务" ./ry.sh stop +sleep 2 ./ry.sh start -#tail -f nohup.out \ No newline at end of file + +echo "" +echo "=========================================" +echo " 部署完成!" +echo "=========================================" +echo "" + +# 查看日志(Ctrl+C 退出) +tail -f nohup.out diff --git a/run.sh b/run.sh new file mode 100644 index 0000000..4563cbf --- /dev/null +++ b/run.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# ============================================================ +# 快捷启动脚本(等价于 ./ry.sh start) +# ============================================================ + +DIR="$(cd "$(dirname "$0")" && pwd)" +exec "$DIR/ry.sh" start diff --git a/ry.sh b/ry.sh index e3d07fd..c6ccaaf 100644 --- a/ry.sh +++ b/ry.sh @@ -1,86 +1,62 @@ -#!/bin/sh -# ./ry.sh start 启动 stop 停止 restart 重启 status 状态 -AppName=ruoyi-admin.jar +#!/bin/bash +# ============================================================ +# 服务管理脚本 +# 用法:./ry.sh start|stop|restart|status +# ============================================================ -# JVM参数 -JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:+UseAdaptiveSizePolicy -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=2" -APP_HOME=`pwd` -LOG_PATH=$APP_HOME/logs/$AppName.log +# ========== 配置项 ========== +export JAVA_HOME=/root/jdk-21.0.10 +export PATH=$JAVA_HOME/bin:$PATH -if [ "$1" = "" ]; -then - echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m" - exit 1 -fi +APP_NAME=ruoyi-admin.jar +JVM_OPTS="-Xms128m -Xmx512m" +SPRING_PROFILE="pro" +LOG_FILE="nohup.out" +# =========================== -if [ "$AppName" = "" ]; -then - echo -e "\033[0;31m 未输入应用名 \033[0m" - exit 1 -fi - -function start() -{ - PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'` - - if [ x"$PID" != x"" ]; then - echo "$AppName is running..." - else - nohup java $JVM_OPTS -jar $AppName > /dev/null 2>&1 & - echo "Start $AppName success..." - fi +# 获取进程 PID +get_pid() { + echo $(ps -ef | grep "$APP_NAME" | grep -v grep | awk '{print $2}') } -function stop() -{ - echo "Stop $AppName" - - PID="" - query(){ - PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'` - } - - query - if [ x"$PID" != x"" ]; then - kill -TERM $PID - echo "$AppName (pid:$PID) exiting..." - while [ x"$PID" != x"" ] - do - sleep 1 - query - done - echo "$AppName exited." - else - echo "$AppName already stopped." - fi -} - -function restart() -{ - stop - sleep 2 - start -} - -function status() -{ - PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l` - if [ $PID != 0 ];then - echo "$AppName is running..." +# 启动 +start() { + local pid=$(get_pid) + if [ -n "$pid" ]; then + echo "⚠️ 服务已在运行,pid=$pid" else - echo "$AppName is not running..." + nohup java $JVM_OPTS -Dspring.profiles.active=$SPRING_PROFILE -jar $APP_NAME > $LOG_FILE 2>&1 & + sleep 1 + local new_pid=$(get_pid) + echo "✅ 服务已启动,pid=$new_pid" fi } -case $1 in - start) - start;; - stop) - stop;; - restart) - restart;; - status) - status;; - *) +# 停止 +stop() { + local pid=$(get_pid) + if [ -n "$pid" ]; then + kill -9 $pid + echo "✅ 服务已停止(pid=$pid)" + else + echo "⚠️ 服务未在运行" + fi +} +# 状态 +status() { + local pid=$(get_pid) + if [ -n "$pid" ]; then + echo "✅ 服务运行中,pid=$pid" + else + echo "❌ 服务未运行" + fi +} + +case "$1" in + start) start ;; + stop) stop ;; + restart) stop; sleep 2; start ;; + status) status ;; + *) echo "用法:$0 {start|stop|restart|status}" ;; esac