当前位置: 首页 > news >正文

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; thenecho "应用程序已经在运行。"exit 0fi# 启动应用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; thenecho "应用程序启动成功."elseecho "应用程序启动失败."exit 1fi
}stop() {# 检查是否正在运行if [ ! -f $PID_PATH ] || ! ps -p $(cat $PID_PATH) > /dev/null; thenecho "应用程序没有在运行。"exit 0fi# 停止应用echo "开始停止应用程序."kill $(cat $PID_PATH)rm $PID_PATHecho "应用程序已停止成功."
}restart() {stopstart
}# 基于命令行参数执行相应操作
case $1 instart)start;;stop)stop;;restart)restart;;*)echo "用法: $0 {start|stop|restart}"exit 1;;
esac

请确保修改JAR_PATHJAVA_OPTSPID_PATHLOG_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

http://www.lryc.cn/news/137536.html

相关文章:

  • 一篇搞懂浏览器的工作原理(万字详解)
  • C语言调用python训练的机器学习模型(项目需求轻体量)
  • get和post请求的区别以及post请求的url参数问题
  • android NullPointerException externalCacheDir
  • 设计模式-过滤器模式(使用案例)
  • 成功解决修改已经push到远程git仓库的commit message
  • Ubuntu18.04 交叉编译openssl-1.1.1
  • 七夕学算法
  • 在C++中利用rapidjson实现Python中的字典(Dict)
  • 数组和指针练习(3)
  • 如何用树莓派Pico针对IoT编程?
  • 【填坑向】MySQL常见报错及处理系列(ERROR! The server quit without updating PID file)
  • 如何处理MySQL自增ID用完
  • Docker 安装教程【菜鸟级】
  • centos7.9 用docker安装mysql8.0
  • JVM和消息队列面经(自用)
  • 四、pikachu之文件包含
  • 【SVN内网穿透】远程访问Linux SVN服务
  • 没消费?复购难?不如试试即拼七人拼团模式
  • vscode+ros开发环境搭建
  • 10个最好的云GPU服务
  • 使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问
  • Windows下搭建Tomcat HTTP服务,发布外网远程访问
  • 【Spring Boot】详解条件注解以及条件拓展注解@Conditional与@ConditionalOnXxx
  • Android 12 源码分析 —— 应用层 一(SystemUI准备篇)
  • 记录 MySQL 如何开启已有的定时任务
  • 三种生成树(STP,RSTP,MSTP)的基本配置(自我理解)
  • FRP内网穿透,配置本地电脑作为服务器
  • Linux基础指令
  • 基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络