在CentO7系统上配置Springboot项目jar包开机自启动
官方文档地址:https://docs.spring.io/spring-boot/docs/current/reference/html/deployment.html#deployment-install
有两种方式:
第一种是使用init.d,第二种是使用service
前提工作--修改pom
在pom.xml文件中标签中添加以下代码:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
主要是executable这个标签
命令语法:Usage: ./park-single.jar {start|stop|force-stop|restart|force-reload|status|run}
说明:这种方式等同于使用java -jar方式
第一种方法: init.d方式
1.赋予jar包x权限
chmod a+x /home/demo/demo-1.0.0.1.jar
注释:a+x 是给所有人加上可执行权限,包括所有者,所属组,和其他人
2.创建jar包的软连接
ln -s /home/demo/demo-1.0.0.1.jar /etc/init.d/demo
注释:
- demo即为自定义的服务名称
- 删除软连接可以使用
rm -rf /etc/init.d/demo(/etc/init.d/demo最后没有/,不然删除不了软连接)
3.链接jdk下的java到sbin目录下
ln -s ${JAVA_HOME}/bin/java /sbin/java
注释:
- 非绿色版本的jdk可以忽略该步骤
- 不执行上述的命令,在启动服务时会出现java找不到的问题,如下所示:
# service demo start
Application is running as root (UID 0). This is considered insecure.
Unable to find Java
4.创建conf文件
在jar包的同级目录下创建和jar包名字完全相同,后缀为conf的文件,如jar包为demo-1.0.0.1.jar,先切换到jar包所在目录:
vim demo-1.0.0.1.conf
APP_NAME=demo
MODE=service #后台运行
JAVA_HOME=/usr/java/jdk1.8.0_191 #注:非绿色版可忽略
JAVA_OPTS="-server -Xms4G -Xmx4G -XX:+UseG1GC -Dfile.encoding=utf-8"
RUN_ARGS="--server.port=80 --spring.profiles.active=prod" # 根据实际情况来定
LOG_FOLDER=/home/demo # 根据实际情况来定
LOG_NAME=demo.log # 根据实际情况来定
注释:LOG_FOLDER,就是日志的存储位置必须是已经存在,否则启动报错
5.添加开机启动
chkconfig demo on
service demo start
# // 或者使用下面的命令
systemctl enable demo
systemctl start demo
# 重启验证是否可用:
reboot
jps
6.移除开机自启动
service demo stop
chkconfig demo off
# //或者使用下面的命令
systemctl disable demo
systemctl stop demo
7.问题处理
生成的demo.log文件特别大,导致服务器存储被沾满,从而影响整个服务器的运行。
解决方案:
- 指定demo.log文件位置,不指定的话默认在/var/log目录下
- 使用logback日志时,生产环境一定要将console去掉,不然会导致demo.log越来越大
<!-- 4.2 生产环境:输出到文档 -->
<springProfile name="prod">
<root level="info">
<!-- 生产环境注释掉,不然生成的.log文件太大,导致磁盘占用过多 -->
<!-- <appender-ref ref="CONSOLE" /> -->
<appender-ref ref="LOG_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>
</springProfile>
8.说明
默认pid文件:/var/run/<appname>/<appname>.pid
若是没有配置日志的话,默认日志文件路径:/var/log/<appname>.log
第二种方法:service方式
1.编写service文件
vim /usr/lib/systemd/system/park.service
[Unit]
Description=park
After=network.target
[Service]
Type=simple
ExecStart=/home/demo/demo-1.0.0.1.jar start # 根据实际情况来定
ExecReload=/home/demo/demo-1.0.0.1.jar restart # 根据实际情况来定
ExecStop=/home/demo/demo-1.0.0.1.jar stop # 根据实际情况来定
Restart=on-failure
RestartSec=5
TimeoutStopSec=15
KillMode=mixed
StandardOutput=syslog # 日志输出到syslog处理
StandardError=syslog
SyslogIdentifier=park_log
[Install]
WantedBy=multi-user.target
说明:
- 若不使用syslog处理日志,则默认日志会输出到
/var/log/message中
2.使用rsyslog处理日志
# vim /etc/rsyslog.d/park_log.conf
if $programname == 'park_log' then /home/demo/logs/park.log
& stop
# systemctl restart rsyslog
说明:
- 需要事先创建好日志文件
- 若不想保留程序日志,可以把日志路径换成
/dev/null
3.启动,设置开机自启动
systemctl daemon-reload
systemctl start|stop|status|restart park.service
systemctl enable park.service
在CentO7系统上配置Springboot项目jar包开机自启动的更多相关文章
- springboot项目jar包运行
springboot项目jar包运行 参考 Linux后台运行java的jar包 步骤 进入maven项目中,打包项目. mvn package -Dmaven.test.skip=true 运行ja ...
- 部署SpringBoot项目jar包到云服务器
前言 做安卓开发也有三四年了,但是对网络这块什么http.tcp/ip之类的一直不理解.并且想自己做一些小项目练练手的时候,数据库直接存在apk里总不是滋味,所以这次站在安卓开发的角度尝试着做一做简单 ...
- SpringBoot:springboot项目jar包如何引入外置配置文件
springboot项目打成jar包,默认读取的classpath路径下的配置文件,config.properties是自定义配置文件. 如果要把config.properties配置 ...
- SpringBoot项目jar包启动脚本
startup.bat @echo off set path=X:\xxxxxxx\Java\JDK\jre\bin START "项目名" "%path%\java&q ...
- shell脚本运行springboot项目jar包
#!/bin/bash APP_NAME=AutomationGuide-0.0.1-SNAPSHOT.jar #使用说明,用来提示输入参数 usage() { echo "please e ...
- Centos-Springboot项目jar包自启动
CentOS环境下部署Springboot项目的jar包开机自启动. 部署环境 Centos 7.5 Springboot 2.1.x 操作步骤 修改pom 在pom.xml文件中<plugin ...
- linux安装docker,并在docker上运行springboot项目
docker架构示例图 仓库---> 镜像 ---> 容器 一.安装docker 1.通过 uname -r 命令查看你当前的内核版本 uname -r 2使用 root 权限登录 Ce ...
- linux服务器上部署springboot项目,并让他持续运行到后台
我们知道在运行springboot 项目只需要java -jar + 项目的war包(jar包)名. 但是只要终端已停止那么服务就会被关闭,也就无法访问到我们的项目了.所以我们可以使用守护进程的方式来 ...
- 在Mac系统上配置Android真机调试环境
在Mac系统上配置Android真机调试环境 mac上配置安卓环境还说挺方便的,真机调试也比win上要好一些.win上被各种软件强行安装了xxx助手. 在mac上就了一个干净的感觉. 下载Androi ...
随机推荐
- 基于 Rainbond 部署 DolphinScheduler 高可用集群
本文描述通过 Rainbond 云原生应用管理平台 一键部署高可用的 DolphinScheduler 集群,这种方式适合给不太了解 Kubernetes.容器化等复杂技术的用户使用,降低了在 Kub ...
- Solution -「构造」专练
记录全思路过程和正解分析.全思路过程很 navie,不过很下饭不是嘛.会持续更新的(应该). 「CF1521E」Nastia and a Beautiful Matrix Thought. 要把所有数 ...
- Note -「序列元素在线段树上的深度」 感悟
0x01 前言 想法源于一道你谷的毒瘤题目. 这个方面的知识点好像挺新颖的. 于是和 JC 一起想出了该命题的 \(O(n)\) 解法. 0x02 算法本身 总所周知,线段树上的节点都对应表示的原序列 ...
- DateFormat类的format方法和parse方法
/** * 使用DateFormat类中的方法format,把日期格式化为文本 * String format(Date date) 按照指定的模式把Date日期格式化为符合模式的字符串 * 使用步骤 ...
- vscode无法调试python2.7版本
概述 好久没有用python2.7版本了,最近有个老的脚本要优化,但是发现vscode无法对脚本调试,特此记录下解决方法. 本地安装有python2和python3,开发过程中,vscode可以随时调 ...
- HTML js 复习
<a href="#top" target="_self">返回顶部</a> 返回页面顶部代码 打印js对象方法 function wr ...
- python编程思想及对象与类
目录 编程思想 面向对象 面向过程 对象与类的概念 对象与类的创建 对象的实例化方法-独有数据 编程思想 1.面向对象 1.1. 面向对象前戏 案例:人狗大战 # 需求:人狗大战# 1.'创造'出人和 ...
- Nginx 限制上传文件的大小。responded with a status of 413 (Request Entity Too Large)
# 限制请求体的大小,若超过所设定的大小,返回413错误. client_max_body_size 50m; # 读取请求头的超时时间,若超过所设定的大小,返回408错误. client_heade ...
- 5.20 NOI 模拟
万年不更题解的鸽子来更题解了 \(T1\)矩阵 是个炒鸡恶心的推式子题 求\([x_1,x_2],[y_1,y_2]\)内部的数字和,把矩阵分成四份比较容易想到,差分也容易想到 \(Sum[x][y] ...
- 解决前端向后端请求静态资源的问题(基于express框架)
请求js,css,image资源: 前端 <script src='后端url/assets/js/xxx.js'>,<link href='后端url/assets/css/xxx ...