在Linux系統上安裝Spring boot應用
阿新 • • 發佈:2019-05-30
Unix/Linux 服務
systemd 服務
操作過程
1. 安裝了JDK的centOS7虛擬機器
注意下載linux版本JDK的時候不能直接通過wget這種直接連結下載,否則會解壓不成功,應該開啟原官網,點選同意許可後點擊下載(這種方式下載很慢),比較好的方式是複製下載頁的地址到迅雷,通過迅雷開啟該下載頁,同意許可後點擊下載。
下載後解壓、配置環境變數
tar -zxvf jdk1.8.0_211.jar.gz
環境變數配置:/etc/profile 檔案最後新增如下
export JAVA_HOME=/var/java/jdk1.8.0_211 export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$PATH:$JAVA_HOME/bin
新增環境變數之後,執行source /etc/profile
,讓環境變數生效
2. 準備好要安裝的spring boot應用程式
2.1 要想安裝成功,尤其要注意pom檔案的有關外掛的配置。正確示例如下:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.itsherman.dcm.Application</mainClass> <executable>true</executable> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
如果只單單聲明瞭spring-boot-maven-plugin外掛,忽略了後面的配置項,那麼很可能你構建的程式包(jar)移植過去啟動不成功。報找不到主選單屬性錯誤。
上面的問題主要是因為構建的可執行jar包中有一個META_INF資料夾,該資料夾下的MANIFEST.MF檔案描述了改程式包的主要資訊,其中缺少了Main-Class的一行。解決辦法是我們可以手動加上,或者按照上面的配置,尤其不能缺少execution的配置項,然後重新執行mvn install。重新生成jar包以後通過winrar工具開啟,檢查MANIFEST.MF檔案的資訊。
一般完整的檔案資訊如下:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: Sherman
Start-Class: com.itsherman.dcm.Application
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Version: 2.1.5.RELEASE
Created-By: Apache Maven 3.6.0
Build-Jdk: 1.8.0_172
Main-Class: org.springframework.boot.loader.JarLauncher
沒問題之後,可以嘗試在本地使用java -jar myapp.jar
命令執行一下
3. 通過xftp等檔案移植工具將jar包移植到【1】 步驟的虛擬機器上
4. 在虛擬機器上 /etc/systemd/system 下編寫服務的配置檔案,參考例項如下:
[Unit] Description=myapp After=syslog.target [Service] User=hadoop ExecStart=/var/java/jdk1.8.0_211/bin/java -jar /home/hadoop/myapp/dev-manager.jar SuccessExitStatus=143 [Install] WantedBy=multi-user.target
- Description: 程式的描述資訊
- User: 系統使用者
- ExecStart: 程式啟動的命令
編寫好改配置檔案之後,儲存,退出
. 啟動服務
重新整理服務配置資訊
systemctl daemon-reload
啟動服務
systemctl start myapp.service
開機啟動服務
systemctl enable myapp.service
檢視服務狀態資訊
systemctl status myapp.service
6.測試
即開啟瀏覽器,訪問