Centos-Springboot项目jar包自启动
CentOS环境下部署Springboot项目的jar包开机自启动。
部署环境
- Centos 7.5
- Springboot 2.1.x
操作步骤
修改pom
在pom.xml文件中<plugin>
标签中添加以下代码:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
主要是executable这个标签
赋予jar包权限
$ chmod a+x /home/demo/demo-1.0.0.1.jar
注释:
a+x 是给所有人加上可执行权限,包括所有者,所属组,和其他人
创建jar包的软连接
$ ln -s /home/demo/demo-1.0.0.1.jar /etc/init.d/demo
注释:
- demo即为自定义的服务名称
- 删除软连接可以使用
rm -rf /etc/init.d/demo
链接jdk下的java到sbin目录下
$ ln -s ${JAVA_HOME}/bin/java /sbin/java
注释:
- 非绿色版本的jdk可以忽略该步骤
- 不执行上述的命令,在启动服务时会出现java找不到的问题
创建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,就是日志的存储位置必须是已经存在,否则启动报错
-
conf文件配置参数官网地址
添加开机启动
$ chkconfig demo on
$ service demo start
// 或者使用下面的命令
$ systemctl enable demo
$ systemctl start demo
重启验证是否可用:
$ reboot
$ jps
移除开机自启动
$ service demo stop
$ chkconfig demo off
//或者使用下面的命令
$ systemctl disable demo
$ systemctl stop demo
问题处理
生成的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>