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

服务器重启后能够自动重启Jar包

在服务器上部署Jar包,可以使用Java的内置服务工具——java命令的守护进程特性。但是要确保这个过程的自动实现,将使用systemd服务。以下是详细的实现方式:

Step 1: 创建服务脚本

首先,需要创建一个systemd服务脚本来定义java服务。在 /etc/systemd/system/ 目录下使用文本编辑器如nanovim创建一个文件。比如部署和运行名为MyApp.jar的jar包,将文件命名为myapp.service

sudo nano /etc/systemd/system/myapp.service

然后在文件中输入以下内容:

[Unit]
Description=MyApp
After=network.target[Service]
Type=simple
User=myusername
Restart=always
RestartSec=10s
ExecStart=/usr/local/bin/java -jar /path/to/your/MyApp.jar
StandardOutput=syslog
StandardError=syslog[Install]
WantedBy=multi-user.target

ExecStart行定义了运行java应用的命令。请将/usr/local/bin/java/path/to/your用真实的文件路径替换。Restart保持always,确保该服务在重启或意外停止后自动重启。

如果myapp.service与此不同,User应该设置为运行此应用的实际用户名。Systemd可以为此服务创建和使用其他用户。

Step 2: 让systemd加载新的服务

systemd加载新创建的服务

sudo systemctl daemon-reload

Step 3: 启动与启用服务

服务创建和加载之后,即可启动该服务:

sudo systemctl start myapp.service

如果想让这个服务开机自启所有服务,可以使用下面这个命令:

sudo systemctl enable myapp.service

Step 4: 检查服务状态

使用以下命令可以查看服务的状态及日志:

sudo systemctl status myapp.service

确保服务事项正确并运行,如果没有,通过journalctl检查日志错误:

journalctl -u myapp.service

通过上面的过程,Jar文件将在服务器重启后自动重启。

扩展使用:关联其他服务

如果想要确保jar包关联其他的服务,例如数据库或消息队列,可以在systemd服务脚本文件中写入相应的After, Before, Requires关键词,这样就可以保证服务是在其他被依赖的服务启动后才运行,或者与他们一同启动。查询systemd相关的文档来更详细地理解这些关键词的使用。

示例:如果后端服务依赖于数据库,可以添加以下行:

Requires=db.service
After=db.service

并确保db.service已经定义,在systemd配置中被适当地配置。按照这样的方式,可以保障多个服务的正确启动顺序,以确保java前后端项目能够在服务器重启后再次正确运行。


http://www.mrgr.cn/news/18295.html

相关文章:

  • LeetCode字母异位词分组
  • 秋招/春招投递公司记录表格
  • 每一次逾越都是不可替代的成长![我是如何克服编程学习过程中的挫折感】
  • 虚拟机输入ip addr不显示IP地址
  • 算法之哈希表
  • 详解 Go 语言测试
  • 花生壳的登录及获取二级域名
  • 分贝通助力元气森林企业支出一体化降本提效
  • 使用 Bodybuilder 项目简化前端ES查询
  • C语言基础(三十三)
  • Java-数据结构-链表-LinkedList(一) (^_−)☆
  • 【最新华为OD机试E卷】猜字迷(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)
  • 【C++ Primer Plus习题】9.4
  • CSS瀑布流实现
  • 【操作系统】详述linux系统性能调优及技巧
  • 算法训练营|图论第10天 Bellman_ford:优化算法,判断负权算法,单源有限最短路
  • 【框架】在Spring Cloud分布式微服务框架中,一个请求的流转和处理的步骤
  • 干货含源码!如何用Java后端操作Docker(命令行篇)
  • 获取 包 的类名信息以及 使用类名信息反向实例化类
  • 网络是怎样连接的