单机启动/开机启动SpringBoot服务的正确方式

这篇具有很好参考价值的文章主要介绍了单机启动/开机启动SpringBoot服务的正确方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  此操作只针对于测试环境或单机部署的情况下,使用Jenkins自动化部署或docker部署SpringBoot服务请忽略。

SpringBoot单机启动和集群启动的区别:

  • 部署方式:单机启动可以直接运行jar文件或使用IDE启动应用程序,而双机集群启动需要将应用程序部署在多台机器上,并配置负载均衡器。
  • 数据一致性:单机启动的应用程序只有一个实例,数据一致性相对简单。而双机集群启动的应用程序有多个实例,需要考虑数据同步和一致性的问题。
  • 扩展性:单机启动的应用程序可以通过增加机器的性能进行扩展,而双机集群启动的应用程序可以通过增加机器的数量进行扩展。
  • 故障处理:在单机启动中,如果应用程序出现故障,可能会导致整个服务不可用。而在双机集群启动中,即使一个应用程序出现故障,其他应用程序仍然可以继续处理请求。

  总而言之,单机启动适用于开发和测试环境,对并发请求要求不高的小型应用程序。而双机集群启动适用于生产环境,以确保应用程序的稳定性和可扩展性。

一、安装Java运行时环境,这里我们使用开源免费的OpenJDK11

  1. 查看OpenJDK11安装包列表
yum list|grep java-11-openjdk
  1. 执行安装命令
yum install -y java-11-openjdk.x86_64
  1. 查看安装成功的版本
[root@localhost ~]# java -version
openjdk version "11.0.21" 2023-10-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.21.0.9-1.el7_9) (build 11.0.21+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.21.0.9-1.el7_9) (build 11.0.21+9-LTS, mixed mode, sharing)
  1. 设置JAVA_HOME
  • 通过命令查找java安装的真实路径,使用which java找到的是软链接,需要通过ll命令一层层查找真实路径,我们这边最终/usr/bin/java真实的路径为 /usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64/bin/java,那么我们的JAVA_HOME就是java的安装目录/usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64,去掉 末尾的 /bin/java 。
[root@localhost ~]# which java
/usr/bin/java
[root@localhost ~]# ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Jan  2 16:13 /usr/bin/java -> /etc/alternatives/java
[root@localhost ~]# ll /etc/alternatives/java
lrwxrwxrwx 1 root root 64 Jan  2 16:13 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64/bin/java
[root@localhost ~]# ll /usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64/bin/java
-rwxr-xr-x 1 root root 13192 Nov 15 00:51 /usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64/bin/java
  • 编辑/etc/profile文件,添加JAVA_HOME配置,并使用source /etc/profile命令使环境配置生效,不需要配置CLASS_APTH, rt.jar, tools.jar。
vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.21.0.9-1.el7_9.x86_64
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile

二、编写启动、停止SpringBoot服务的Shell脚本

  1. 定义运行服务需要的参数,服务名称、服务程序路径、日志文件等,这里可以感觉自己的需要来定义,包括可以添加java -jar的运行参数等。
#!/bin/bash
APP_NAME="gitegg-application.jar" # 命令号提示服务名
APP_PATH="/opt/server/gitegg-application.jar" # jar包文件路径
LOG_FILE="/opt/server/gitegg-application.log" # 日志输出文件路径,一般我们服务会记录日志,如果不想在这里输出,那么可以填写 /dev/null
  1. 定义命令脚本运行提示,如果输入的命令格式错误,这里可以给出正确的命令格式等。
#使用说明,提示输入参数
usage() {
 echo "Usage: sh start_server.sh [start|stop|restart|status]"
 exit 1
}
  1. 定义检查服务是否正在运行的函数
#检查服务是否正在运行
is_running(){
 pid=`ps -ef|grep $APP_PATH|grep -v grep|awk '{print $2}' `
if [ -z "${pid}" ]; then
 return 1
 else
 return 0
 fi
}
  1. 定义启动服务的函数
#启动服务
start(){
  is_running
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
    nohup java -jar $APP_PATH > $LOG_FILE 2>&1 &
  fi
}
  1. 定义停止服务的函数
#停止服务
stop(){
  is_running
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi
}
  1. 定义查看服务运行状态的函数
#显示运行状态
status(){
  is_running
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}
  1. 定义服务重启函数
#重启服务
restart(){
  stop
  start
}
  1. 脚本接收参数,根据参数执行对应的命令函数
#选择要运行的命令
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac
  1. 设置脚本执行权限,填写自己脚本文件的实际路径
chmod +x /opt/server/start_server.sh
完整的执行脚本如下:
#!/bin/bash
APP_NAME="gitegg-application.jar" # 命令号提示服务名
APP_PATH="/opt/server/gitegg-application.jar" # jar包文件路径
LOG_FILE="/opt/server/gitegg-application.log" # 日志输出文件路径,一般我们服务会记录日志,如果不想在这里输出,那么可以填写 /dev/null
 
#使用说明,提示输入参数
usage() {
 echo "Usage: sh start_server.sh [start|stop|restart|status]"
 exit 1
}
 
#检查服务是否正在运行
is_running(){
 pid=`ps -ef|grep $APP_PATH|grep -v grep|awk '{print $2}' `
if [ -z "${pid}" ]; then
 return 1
 else
 return 0
 fi
}
 
#启动服务
start(){
  is_running
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
  else
    nohup java -jar $APP_PATH > $LOG_FILE 2>&1 &
  fi
}
 
#停止服务
stop(){
  is_running
  if [ $? -eq "0" ]; then
    kill -9 $pid
  else
    echo "${APP_NAME} is not running"
  fi
}
 
#显示运行状态
status(){
  is_running
  if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
  else
    echo "${APP_NAME} is NOT running."
  fi
}
 
#重启服务
restart(){
  stop
  start
}
 
#选择要运行的命令
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

三、编写启动、停止SpringBoot服务的Shell脚本
  在CentOS中的服务是由systemd管理的,可以通过systemctl命令进行服务运行的相关操作。

  1. 新增管理服务gitegg-server.service,服务名称可以自己定义,此服务放到 /lib/systemd/system/ 目录
vi /lib/systemd/system/gitegg-server.service
  1. 编写服务内容
[Unit]                                                                                                                                                                                                               
Description=gitegg-server                                                                                                                                                                                  
After=docker.socket early-docker.target network.target
Wants=network-online.target docker.service
Requires=docker.socket                                                                                                                                                                                            
                                                                                                                                                                                                                     
[Service]                                                                                                                                                                                                            
Type=forking                                                                                                                                                                                                         
ExecStart=/opt/server/start_server.sh start
ExecStop=/opt/server/start_server.sh stop            
ExecSatus=/opt/server/start_server.sh status                                              
ExecRestart=/opt/server/start_server.sh restart                                                       
                                                                                                                                                                                               
[Install]                                                                                                                                                                                                            
WantedBy=multi-user.target
  1. 保存并重新加载配置
systemctl daemon-reload
  1. 设置服务开机启动
systemctl enable gitegg-server.service
  1. 可以直接使用systemctl 命令操作服务
# 启动服务
systemctl start gitegg-server.service
# 关闭服务
systemctl stop gitegg-server.service
# 查看服务状态
systemctl status gitegg-server.service
# 重启服务
systemctl restart gitegg-server.service

  单机启动是指在一台机器上启动一个Spring Boot应用程序。在单机启动的情况下,应用程序运行在一个独立的进程中,并且只能处理一个请求。单机启动适用于开发和测试环境,以及对并发请求要求不高的小型应用程序。
  通过以上配置,当服务器重新启动时,jar文件也将自动运行。请注意,这只是在CentOS系统实现的一种方法,实际操作可能因操作系统版本和个人设置而有所不同。文章来源地址https://www.toymoban.com/news/detail-831660.html

到了这里,关于单机启动/开机启动SpringBoot服务的正确方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux如何查看服务启动状态是否开机自动启动

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Linux如何查看服务启动状态是否开机自动启动 - joshua317的博客 linux中查看服务启动状态是否开机自动启动的方法: 1、打开linux终端; 2、在终端命令行中输入“chkconfig --list servicename”命令查看服务启动状态是否开机自动

    2023年04月09日
    浏览(55)
  • linux实现开机自启动服务/脚本

    linux实现开机自启动服务或者开机自运行用户自定义脚本有三种方式 方式一: 执行 systemctl enable 服务名 命令,将对应服务的.service文件软链接到 /etc/systemd/system/multi-user.target.wants/ 目录下 (此种方式一般适用于通过rpm部署的软件,系统自动创建了对应服务的.service文件这种情

    2024年02月07日
    浏览(42)
  • Linux elasticsearch设置为开机自启动服务

    说明: (1)“su es”为切换用户名,“es”为系统新建的用户名 (2)“/usr/local/elasticsearch-6.2.3”为el安装目录 具体el安装流程:请点击这里

    2024年02月13日
    浏览(31)
  • linux 配置服务开机自启动之chkconfig(Linux 运行级别)

    1. 三种解决方案 方式一:在/etc/rc.d/rc.local文件中直接添加启动命令 想启动的脚本或服务,把他们启动的命令放入/etc/rc.local这个文件中即可。适用于简单的启动脚本或服务。但请确保在添加之前检查该文件是否存在,并赋予执行权限。 方式二:通过chkconfig配置服务自启动 你

    2024年02月05日
    浏览(32)
  • Linux:Ubuntu 20.04 —添加开机启动(服务/脚本)

    本文章向大家介绍Linux Ubuntu 20.04 —添加开机启动(服务/脚本),主要包括Linux Ubuntu 20.04 —添加开机启动(服务/脚本)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。 系统启动时需要加载的配置文件 一、修改开机启动文件

    2024年02月10日
    浏览(52)
  • Linux:将服务重启脚本加入CentO7的开机启动里

    我们的平台服务使用 docker 部署,使用 docker-compose 进行管理 平台部署到客户环境时,一小部分客户,使用自己机房或单独的服务器,并没有做断电保护,有时候这台服务器会断电重启 断电重启后,我们的平台服务要能自动拉起来,为客户正常提供服务 实现思路很简单,创建

    2024年02月11日
    浏览(45)
  • 【PHP面试题79】在Linux中如何设置MySQL和PHP服务开机启动

    本文已收录于PHP全栈系列专栏:PHP面试专区。做全网最全最有营养的PHP面试大全。 计划将全覆盖PHP开发领域所有的面试题, 对标资深工程师/架构师序列 ,欢迎大家提前关注锁定。 ⭐⭐⭐ 记得先收藏文章,关注作者,整个工作过程中面试多少是会有几次的。 ⭐⭐⭐ 在Linu

    2024年02月16日
    浏览(44)
  • Linux_CentOS_7.9 VNC安装卸载以及相关配置开机自启动服务简易记录

    2.1 拷贝配置文件,必须有冒号和数字 2.2 修改配置文件中的 参数为具体登录参数(配置文件中需要与操作系统登录用户保持一致,然后用这个操作系统登录linux以后,执行vncpasswd才会生效) 2.3 设置密码(先copy脚本,后设置vnc密码,其中只读用户可选,一般选择N即可) 2.4 配

    2024年01月23日
    浏览(63)
  • Syncthing实时共享同步数据 服务器数据备份软件 Syncthing开机自启动 修改端口(linux、windows)

    Syncthing是一个开源文件同步工具,可以在多台设备之间实时同步文件或文件夹。它可以帮助你自由地选择数据的存储位置、数据是否被第三方共享以及同步的数据如何在互联网上传输。 Syncthing使用P2P技术实现数据在设备间的同步,和传统的网盘不同,数据在同步的过程中并不

    2024年02月05日
    浏览(49)
  • Unity 创建快捷方式开机自动启动

    先导入插件包👈,再 把导入的 ZYF_AutoRunApp.cs 挂到物体上即可。

    2024年04月14日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包