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>