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_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

Linux管理SpringBoot应用shell脚本实现的更多相关文章

  1. 自学Linux命令行与Shell脚本之路

    自学Linux命令行与Shell脚本之路[第一回]:初识Linux   1.1 自学Linux Shell1.1-Linux初识 1.2 自学Linux Shell1.2-Linux目录结构 1.3  ...

  2. 结合docker发布后端项目(基于gradle包管理)的shell脚本

    结合docker发布后端项目(基于gradle包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统(敏感信息都进行了处理) 目前主流的 ...

  3. 结合docker发布前端项目(基于npm包管理)的shell脚本

    结合docker发布前端项目(基于npm包管理)的shell脚本 本教程依据个人理解并经过实际验证为正确,特此记录下来,权当笔记. 注:基于linux操作系统 目前主流的前后端分离的项目中,常常在部署 ...

  4. 在Linux下如何用Shell脚本读写XML?现有一个config.xml(转)

    在Linux下如何用Shell脚本读写XML?现有一个config.xml <?xml version="1.0" encoding="UTF-8"?&g ...

  5. linux的基本操作(shell 脚本的基础知识)

    shell 脚本的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本 ...

  6. Linux命令行与shell脚本编程大全.第3版(文字版) 超清文字-非扫描版 [免积分、免登录]

    此处免费下载,无需账号,无需登录,无需积分.收集自互联网,侵权通知删除. 点击下载:Linux命令行与shell脚本编程大全.第3版 (大小:约22M)

  7. 《Linux命令行与shell脚本编程大全 第3版》创建实用的脚本---11

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  8. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  9. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  10. 《Linux命令行与shell脚本编程大全 第3版》Linux命令行---57

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

随机推荐

  1. 从零开始配置vim(25)——关于 c++ python 的配置

    从9月份到国庆这段时间,因为得了女儿,于是回老家帮忙料理家事以及陪伴老婆和女儿.一时之间无暇顾及该系列教程的更新.等我回来的时候发现很多小伙伴私信我催更.在这里向支持本人这一拙劣教程的各位小伙伴表示真 ...

  2. JavaScript获取浏览器的显示区域大小测试

    JavaScript获取浏览器的显示区域大小测试 Now we get the screen size about this browser 网页可见区域宽 document.body.clientW ...

  3. SpringBoot-MyBatis - Java枚举类型 <---> MySQL Int,建立 类型处理器(typeHandlers)

    场景: MySQL里的某一个字段,比如:status状态,一共有5个状态,我们会在MySQL里 建立 status(int)字段,1.2.3.4.5 来标记5种状态:利用MyBatis在自动代码生成器 ...

  4. 函数防抖与节流 - js

    防抖(debounce)和节流(throttle)是在 高频次调用函数 的场景下,常用的解决方案了.故名思意,可以节省开销,优化体验. 二者的区别: 防抖: 我们让想要执行的函数只在最后一次调用完一小 ...

  5. Embedding 模型部署及效果评测

    写在前面 最近大模型发展迅速,与之对应的向量化需求也被带动起来了,由此社区也衍生出很多模型,本文选几款,简单做下评测. 前置概念 为方便读者,先简单介绍几个概念. 概念1:Vector Embeddi ...

  6. 反悔贪心&模拟费用流

    贪心是一种常用的算法,它能够获得局部最优解,但我们往往需要的是全局最优解,所以我们在贪心的时候加入和反悔的机制,让他能够得到全局最优解. 由于网络流中的退流操作本质上也是反悔贪心,所以在实现反悔贪心时 ...

  7. NC24438 [USACO 2016 Ope P]262144

    题目链接 题目 题目描述 Bessie likes downloading games to play on her cell phone, even though she does find the ...

  8. Js遍历对象总结

    Js遍历对象总结 Js遍历对象的方法主要有for in.Object.keys().Object.getOwnPropertyNames().Reflect.ownKeys().Object.getO ...

  9. win32- copyfile的使用

    #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <tchar.h&g ...

  10. win32-使用EnumWindows比较两个窗口的Z轴

    通过使用EnumWindows()和枚举窗口来手动确定EnumChildWindows()来直接确定哪个窗口在z轴上比另一个窗口高. struct myEnumInfo { HWND hwnd1; H ...