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

瑞_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.lryc.cn/news/514855.html

相关文章:

  • javaEE-多线程进阶-JUC的常见类
  • Flume拦截器的实现
  • Swift Combine 学习(四):操作符 Operator
  • leetcode 173.二叉搜索树迭代器栈绝妙思路
  • df.groupby([pd.Grouper(freq=‘1M‘, key=‘Date‘), ‘Buyer‘]).sum()
  • LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 (4)
  • icp备案网站个人备案与企业备案的区别
  • 如何不修改模型参数来强化大语言模型 (LLM) 能力?
  • AF3 AtomAttentionEncoder类的init_pair_repr方法解读
  • DDoS攻击防御方案大全
  • Vue中常用指令
  • Servlet解析
  • 带虚继承的类对象模型
  • 深度学习中的离群值
  • 如何利用Logo设计免费生成器创建专业级Logo
  • Mysql SQL 超实用的7个日期算术运算实例(10k)
  • 运算指令(PLC)
  • 「Mac畅玩鸿蒙与硬件49」UI互动应用篇26 - 数字填色游戏
  • 机器学习经典算法——逻辑回归
  • 【数据仓库金典面试题】—— 包含详细解答
  • 【UE5 C++课程系列笔记】19——通过GConfig读写.ini文件
  • JS 中 json数据 与 base64、ArrayBuffer之间转换
  • USB 驱动开发 --- Gadget 驱动框架梳理
  • 细说STM32F407单片机中断方式CAN通信
  • Python应用指南:高德交通态势数据
  • 医学图像分析工具01:FreeSurfer || Recon -all 全流程MRI皮质表面重建
  • .NET框架用C#实现PDF转HTML
  • mamba-ssm安装
  • 网络IP协议
  • 双指针算法详解