Linux管理SpringBoot应用shell脚本实现

Liunx系统如何部署和管理SpringBoot项目应用呢?最简单的方法就是写个shell脚本。

Spring Boot是Java的一个流行框架,用于开发企业级应用程序。下面我们将学习如何在Linux服务器上部署Spring Boot应用,并通过一个脚本实现启动、停止、重启等操作。

步骤1: 准备环境

Linux系统安装JDK环境:确保你的Linux服务器上已经安装了合适版本的Java。通过运行java -version来验证。

步骤2: 上传你的JAR文件

将你的Spring Boot应用的JAR文件上传到服务器上的某个目录,例如/opt/myapp/myapp.jar。

步骤3: 创建管理脚本

在Linux服务器上创建一个新文件,例如pzyblog.sh,并粘贴以下内容:

复制代码
#!/bin/bash

# 公共路径
BASE_PATH="/usr/local/java/jar/api-service"

# 应用名称(就是jar包名称,不包含后缀)
JAR_NAME="api-service"

# 定义JAR文件的路径
JAR_PATH="$BASE_PATH/$JAR_NAME.jar"

# 定义Java虚拟机的选项
JAVA_OPTS="-Xms256m -Xmx512m"

# 定义PID文件的路径 自定义用法
PID_PATH="/usr/local/java/jar/api-service/$JAR_NAME.pid"

# 定义日志文件的路径
LOG_PATH="$BASE_PATH/$JAR_NAME.log"


start() {
  # 检查是否已运行
  if [ -f $PID_PATH ] && ps -p $(cat $PID_PATH) > /dev/null; then
    echo "应用程序已经在运行。"
    exit 0
  fi

  # 启动应用
  echo "开始启动应用程序"
  nohup java $JAVA_OPTS -jar $JAR_PATH > $LOG_PATH 2>&1 &
  echo $! > $PID_PATH
  
  # 检查应用是否启动
  sleep 5 # 等待一些秒来确保应用有时间启动
  if ps -p $(cat $PID_PATH) > /dev/null; then
    echo "应用程序启动成功."
  else
    echo "应用程序启动失败."
    exit 1
  fi
}

stop() {
  # 检查是否正在运行
  if [ ! -f $PID_PATH ] || ! ps -p $(cat $PID_PATH) > /dev/null; then
    echo "应用程序没有在运行。"
    exit 0
  fi

  # 停止应用
  echo "开始停止应用程序."
  kill $(cat $PID_PATH)
  rm $PID_PATH
  echo "应用程序已停止成功."
}

restart() {
  stop
  start
}

# 基于命令行参数执行相应操作
case $1 in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  *)
    echo "用法: $0 {start|stop|restart}"
    exit 1
    ;;
esac

请确保修改JAR_PATH、JAVA_OPTS、PID_PATH和LOG_PATH等变量的值,以匹配你的具体情况。

步骤4: 赋予脚本执行权限

在终端中,导航到脚本所在的目录,并运行以下命令赋予执行权限:

复制代码
chmod +x pzyblog.sh

步骤5: 使用脚本管理应用

你现在可以使用以下命令来启动、停止和重启你的Spring Boot应用:

  • 启动: ./pzyblog.sh start
  • 停止: ./pzyblog.sh stop
  • 重启: ./pzyblog.sh restart

结论

这份脚本提供了一个简单却强大的方案,可用于有效管理你的Spring Boot应用。透过微调几个关键变量,你能轻松将其调整以适应个人项目。

尽管部署和管理Java应用听起来颇具复杂性,但只要掌握基础步骤并选用适当工具,即便是新手也能成功使用。愿本文在助您迅速入门的同时,为您提供极大帮助!

本文首发:https://www.panziye.com/java/8162.html

相关推荐
databook9 小时前
面向数据工程师的正则表达式:从日志清洗到字段提取
python·正则表达式·数据分析
lisanmengmeng10 小时前
NRPE 添加命令(一)
linux·运维·服务器
ss27310 小时前
AI全栈实战 | 3.2-01 Python 基础:四大数据容器怎么选,推导式为什么是 Pythonic 的灵魂
开发语言·人工智能·python
计算机毕业编程指导师10 小时前
【大数据毕设选题推荐】基于Spark的WTA职业网球赛事演变与竞技格局分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·python·计算机·spark·毕业设计·课程设计·wta网球
言乐610 小时前
Python区分广度优先深度优先宽度优先的区别
python·算法·深度优先·广度优先·宽度优先
打工仔折腾 AI10 小时前
LLaMA 1 到 LLaMA 3 架构演进拆解:从 RoPE、GQA 到词表扩张
人工智能·后端·python·深度学习·langchain·llama
树下水月11 小时前
Typora破解
linux·服务器·前端
旋生万物11 小时前
螺旋角分布的功率谱分析:多窗谱 + FDR 校正
开发语言·python
沫璃染墨11 小时前
《从零入门Linux系统篇(五十七):线程篇·十——生产者消费者模型进阶:从环形缓冲区到POSIX信号量》
linux·运维·服务器·开发语言·c++·系统架构·信号处理
专业程序开发源11 小时前
SSM校园拍摄交流服务平台36936-计算机课程设计、毕业设计
java·spring boot·后端·python·elasticsearch·php·课程设计