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

瑞_Linux中部署配置Java服务并设置开机自启动

文章目录

    • 背景
    • Linux服务配置步骤并设置开机自启动
    • 附-Linux服务常用指令

瑞&3l

🙊 前言:由于博主在工作时,需要将服务部署到 Linux 服务器上运行,每次通过指令启动服务非常麻烦,所以将 jar 包部署的服务设置开机自启动,特此记录




背景

由于是记录在 Linux 环境下配置 jar 包程序并将其配置为 Linux 服务并设置开机自自动,所以需要 Linux 以及相关 Java 环境。博主使用的SSH客户端远程连接工具是 MobaXterm,有需要的小伙伴可以参考《瑞_Java所有相关环境及软件的安装和卸载》

  步骤中所需的路径参考如下 ⬇️

  1️⃣ JDK 安装路径/usr/local/jdk1.8,即 Java 程序执行路径/usr/local/jdk1.8/bin/java

在这里插入图片描述

在这里插入图片描述
  2️⃣ 需要配置为服务的 jar 包工作路径/home/ray-project/ray-monitor,以及 jar 包所在路径/home/ray-project/ray-monitor/ray-monitor.jar

在这里插入图片描述

Linux服务配置步骤并设置开机自启动

  1️⃣ 进入 Linux 系统服务路径

cd /usr/lib/systemd/system/

  2️⃣ 新建服务文件,如ray_monitor.service

vi ray_monitor.service

  3️⃣ 服务文件内容参考如下⬇️

[Unit]
# 服务描述
Description=ray_monitor
# 指定该服务在哪个目标(target)之后启动。network.target表示网络服务已经启动并可用后,再启动这个服务
After=network.target

[Service]
# 指定服务类型为简单类型(simple),这意味着服务将一直运行,直到被停止
Type=simple
# 指定服务的工作目录
WorkingDirectory=/home/ray-project/ray-monitor/
# 设置服务的重启策略,这里设置为always,表示只要服务进程终止,就会自动重启。且Restart 先执行ExecStop, 再执行ExecStart
Restart=always
# 定义启动该服务时执行的命令,并设置远程调试监听端口
ExecStart=/usr/local/jdk1.8/bin/java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=48644 -jar ./ray-monitor.jar
# 定义停止该服务时执行的命令。这里使用kill -15发送SIGTERM信号给主进程($MAINPID)
ExecStop=/usr/bin/kill -15 $MAINPID
# 指定成功退出的状态码。由于Java进程在收到SIGTERM信号后会返回143,所以这里设置为143。正常kill执行成功是返回0
SuccessExitStatus=143

[Install]
# 指定该服务属于哪个目标(target)。multi-user.target是默认的多用户目标,意味着该服务将在多用户模式下启动
WantedBy=multi-user.target
vi 指令的使用

  1️⃣ 保存并退出:在 vi 的命令模式下(按下 Esc 键确保处于命令模式),输入:wq并按 Enter 键。这个命令会将当前编辑的内容保存到文件中,然后退出 vi
  2️⃣ 强制保存并退出:如果文件没有写入权限,但你想强制保存并退出,可以使用:wq!命令
  3️⃣ 仅保存不退出:如果你只想保存当前编辑的内容而不退出 vi,可以输入:w并按 Enter 键
  4️⃣ 仅退出不保存:如果你想放弃所有未保存的更改并退出 vi,可以输入:q!并按 Enter 键

命令模式与其他模式的关系

  与输入模式的关系:在命令模式下,按下i键可以切换到输入模式,此时用户可以开始输入文本。完成输入后,按下 Esc 键可以返回到命令模式
  与末行模式的关系:在命令模式下,按下冒号:可以切换到底行模式,以执行文件管理操作,如保存文件和退出 vi。完成操作后,按下 Esc 键可以返回到命令模式

  4️⃣ 重新加载 systemd 守护进程的配置文件,使配置文件生效

sudo systemctl daemon-reload

  5️⃣ 设置服务开机自启动

sudo systemctl enable ray_monitor.service

在这里插入图片描述

  6️⃣ 启动服务

sudo systemctl start ray_monitor.service

  7️⃣ 检查服务状态

sudo systemctl status ray_monitor.service

在这里插入图片描述

瑞:如果服务启动异常,可以通过journalctl -xesudo systemctl status xxx.service -l进行错误排查

# 查看启动日志错误详情
journalctl -xe

附-Linux服务常用指令

瑞:以下命令中XXX.service可以改为XXX,即不需要.service也能执行

# 设置XXX服务开机自启动
sudo systemctl enable xxx.service
# 移除XXX服务开机自启动的设置
sudo systemctl disable xxx.service
# 重新加载 systemd 守护进程的配置文件,使配置文件生效
sudo systemctl daemon-reload

# 查看XXX服务状态
sudo systemctl status xxx.service
# 重新加载指定服务的配置文件,而不需要中断服务
sudo systemctl reload xxx.service
# 停止XXX服务,如果设置了服务开机自启动,则服务器重启后仍然会自启动
sudo systemctl stop xxx.service
# 开启XXX服务,如果没有设置服务开机自启动,则服务器重启后仍然不会自启动
sudo systemctl start xxx.service



本文是博主的粗浅理解,可能存在一些错误或不完善之处,如有遗漏或错误欢迎各位补充,谢谢

  如果觉得这篇文章对您有所帮助的话,请动动小手点波关注💗,你的点赞👍收藏⭐️转发🔗评论📝都是对博主最好的支持~



http://www.kler.cn/a/465395.html

相关文章:

  • Tableau数据可视化与仪表盘搭建-安装教程
  • Python爬虫 - 豆瓣图书数据爬取、处理与存储
  • 07-ArcGIS For JavaScript--隐藏参数qualitySettings(memory和lod控制)
  • 探索Docker Compose:轻松管理多容器应用
  • PostgreSQL对称between比较运算
  • K8s高可用集群之Kubernetes集群管理平台、命令补全工具、资源监控工具部署、常用命令
  • 软件工程期末大复习(三)
  • 图像相似性计算
  • 小程序用户体验优化策略:提升用户留存与活跃度
  • 关于电话的正则表达式
  • PyTorch Instance Normalization介绍
  • 第81期 | GPTSecurity周报
  • 【前端,TypeScript】TypeScript速成(六):函数
  • 自动化办公 | 根据成绩进行自动评级
  • 昆仑万维大数据面试题及参考答案
  • 基于基本滤波器的图像滤波理论与实验分析-附Matlab源程序
  • Lambda 表达式学习
  • springboot3+vue项目实践-黑马
  • 力扣-数据结构-7【算法学习day.78】
  • 周末总结(2024/12/28)
  • 解決當前IP地址僅適用於本地網路
  • 在 Blazor 和 ASP.NET Core 中使用依赖注入和Scoped 服务实现数据共享方法详解
  • Elasticsearch检索之三:官方推荐方案search_after检索实现(golang)
  • 【SpringBoot教程】IDEA快速搭建正确的SpringBoot版本和Java版本的项目
  • PCA降维算法详细推导
  • UE5材质节点Camera Vector/Reflection Vector