在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
posted @ 2021-05-08 14:50  哈喽哈喽111111  阅读(834)  评论(0编辑  收藏  举报