Springboot項目部署到雲服務器(Ubuntu 18.04)
-
技術概述:springboot的出現大大方便了后端的開發,項目在本地運行固然方便調試,但涉及使用時,把項目部署到雲上顯然是更好的選擇,這篇隨筆就介紹以下這次實踐中我在springboot項目部署方面的一些經驗。技術難點:部署涉及的內容較多,如linux命令的使用、maven的plugin及goal、linux上java環境/mysql的安裝等,沒有實踐經驗的人需要參考很多資料才能完成從打包到部署的全過程。
-
部署步驟、部分問題及解決過程等見下列內容
大致框架參考了這一篇博文:https://blog.csdn.net/Mou_Yang/article/details/102137861
這里只對我成功部署的大致步驟進行概括,並對與文章不同及有遇到問題的部分進行重點介紹。
一、 雲服務器設置
購買雲服務器后,要在安全組里設置要開放的端口號,否則無法訪問直接對服務器指定端口進行訪問
二、 Springboot項目打包
由於springboot項目中本來就帶有tomcat服務器,所以只需要將項目打包成jar包,后續就能很方便地在linux服務器上運行。
關於打包的坑:
spring項目打包部署可以有兩種方式:一種是項目文件與依賴文件分開,一種是全部文件都打包成一個jar包。這里我們為了方便,選擇打包成單一jar包的方式進行部署。
-
要注意的是,使用IDEA的maven的jar插件也能將項目打包成一個獨立的jar,但是通過查看打包出的jar包的內部結構,我們可以發現:在沒有經過特別配置的情況下,這種方法打包出來的只包含項目本身的文件,不包含項目的依賴文件,所以運行起來會報如“ClassNotFoundException”之類的錯誤。
而使用IDEA的“spring initializr”創建springboot項目時,會在pom.xml文件里自動添加上插件:“spring-boot-maven-plugin”。里面跟打包jar包有關的主要“goal”是:repackage,這個goal的作用是把生成好的項目本身的jar跟項目依賴的jar包再次打包,統一整合進一個可直接運行的jar中。
所以,有了這個插件后,我們在命令行直接輸入“maven package”命令並執行,maven就會執行maven自帶的jar插件后會再執行spring-boot-maven-plugin中的repackage,來把依賴文件也打包進去。這樣子,在命令行中,就可以通過使用“java -jar xxxx.jar”命令直接運行springboot項目。
-
一些錯誤/問題的解決:
- 在打包前需要在pom文件中指定項目的啟動類,否則在后續啟動時可能會遇到“xxx.jar沒有主清單屬性的錯誤”,具體分析及修改過程見這篇博客:https://www.cnblogs.com/Zs-book1/p/12457356.html
- 如果希望跳過maven打包前自動執行的測試,可以在pom文件的properties標簽中添加
<skipTests>true</skipTests>
;在IDEA中使用時也可以在maven的標簽卡上方的選項中找到閃電帶有閃電標志的”toggle ‘Skip Tests’ mode"按鈕並點選。
三、 項目部署
-
MySQL的安裝、配置(雲端的Ubuntu 18.04上):
-
安裝:要想使用高版本的MySQL,比如MySQL8,在ubuntu 18.04 LTS上不能直接使用apt install mysql,因為這樣默認安裝的是MySQL5,后面要改很麻煩。
-
正確做法:根據教程先加載配置文件,設置要下載的版本,之后再使用apt-get install mysql安裝。
-
參考教程:https://blog.csdn.net/qq_40871363/article/details/88822117
-
-
配置:為了方便自己在遠程訪問,可以按照教程進行配置,其中幾個注意點:
- 進行遠程訪問用戶創建與授權時,按照網上的幾個教程會報語法錯誤,后面看有博文說了:高版本MySQL中用戶創建跟授權要分開,不然會報語法錯誤,確實如此。還有,要注意用戶名后的@符號的含義。
四、項目啟動
先在linux上安裝好jdk,配置好環境變量什么的。然后把jar包傳到linux上,按照教程使用nohup命令一直運行。
教程:相關命令的使用:https://blog.csdn.net/ninisui/article/details/77989938
參考文章: