type
status
date
summary
slug
tags
category
password
icon
Linux
中启动SpringBoot
分为前台启动
和后台启动
。- 前台启动是指通过命令直接运行
SpringBoot
项目JAR
包,并且运行打印日志直接显示在我们所看到的前台,页面一旦关闭就会停止或改变;
- 而后台启动则是通过命令或脚本启动
SpringBoot
项目,是项目能够独立的在后台运行,不会打扰我们其他操作。
这里介绍的是以服务的形式后台启动
Java
项目。一、Java项目设置为系统服务
以下是在
CentOS 7
环境下将Spring Boot
项目打包成服务的步骤:1.创建 Systemd 单元文件
- 在
/etc/systemd/system
目录下创建一个新的服务单元文件
- 命名为
springboot_trans_price.service
,并使用文本编辑器打开它:
然后将以下内容粘贴到文件中:
确保替换以下内容:
Description
:服务的描述。
User
:希望服务运行的用户。
Group
:希望服务运行的用户组。
WorkingDirectory
:Spring Boot 项目的目录。
ExecStart
:启动命令,这里是运行 Java JAR 文件的路径。
2.重新加载 Systemd 配置
保存并关闭文件后,重新加载 Systemd 配置:
3.启动服务
现在可以使用以下命令启动服务:
4.启用开机自启动(可选):
如果希望服务在系统启动时自动启动,可以运行以下命令启用自启动:
- 现在,可以使用systemctl来以服务的方式操作项目了
5.查看日志
- 查看该服务日志
- 筛选2024年5月1号到5月31号的springboot_trans_price服务日志并显示最近20条记录
- 导出所有日志
将
springboot_trans_price.service
服务的所有日志导出到一个文件,例如 springboot_logs.txt
:- 导出特定时间范围的日志,例如过去一小时内的日志:
- 导出某个特定日期的日志:
- 导出并压缩日志
如果日志文件比较大,可以直接将其导出并压缩:
- 导出并附加到现有文件
如果你想将日志附加到一个现有文件中,可以使用
>>
:6.查看服务
可以使用
systemctl list-units
命令结合一些过滤选项来查看系统中所有的 systemd 服务。具体来说,使用
systemctl list-units --type=service
来列出所有服务,然后使用 grep
进行进一步过滤。例如,要查找所有包含特定关键词(如 "springboot")的服务,可以使用以下命令:如果你想查看所有正在运行的服务,可以使用:
二、通过脚本来执行java项目
为了实现在后台运行一个 Java 可执行文件,即使关闭终端也能保持该程序的执行,可以创建一个shell脚本。
可以按照以下步骤创建一个 shell 脚本文件来启动你的 Spring Boot 项目的 JAR 文件:
1.打开终端窗口
2.创建脚本文件
使用文本编辑器创建一个新的 shell 脚本文件,例如
springboot_trans_price.sh
:3.后台启动
在打开的编辑器中,输入以下内容:
确保替换
/opt/interface/springboot_trans_price.jar
为 Spring Boot 项目 JAR 文件的实际路径;并将
/opt/interface/springboot_trans_price.log
替换为希望将输出日志写入的位置。4.保存并关闭编辑器
- 在
nano
编辑器中,你可以按下Ctrl + X
,然后输入Y
确认保存,最后按下Enter
退出编辑器。
- 在
vim
编辑器中,你可以按下:
,然后输入w
确认保存,最后按下q
退出编辑器。
5.赋予脚本可执行权限
接下来,使用
chmod
命令赋予该脚本文件可执行权限:6.启动脚本
最后,执行该脚本文件来启动 Spring Boot 项目:
- 这样,就创建了一个 shell 脚本文件,其中包含使用
nohup
和java -jar
命令启动 Spring Boot 项目的 JAR 文件的指令。
- 同时,该脚本会将输出日志写入指定的日志文件中,并且该脚本还会在后台运行项目。
个人比较推荐第二种方法,因为可以灵活的配置日志输出的地方,方便查看日志。
- 作者:PH3C
- 链接:https://notion.966699.xyz//article/java-service
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章