1.1服務器准備
首先需要購買雲服務器,我這里是白嫖的阿里雲,所以就用阿里雲做演示:
服務器上首先需要配置安全組規則,這里參考配置mysql
然后我們需要安裝數據庫(我這里用的是mysql)和jdk。這里可以使用寶塔進行安裝,比較方便
配置完jdk后可以通過java -version查看是否安裝成功,成功的可以看到如下圖的格式

還需要在本地電腦上安裝xshell和xftp,有免費版的。

輸入用戶名和密碼進行配置。xftp也是一樣 后者是為了快捷傳輸文件。
1.2本地准備
打包方式有兩種,一種是打包成war包,這個時候需要在雲服務器中部署tomcat才能夠運行。第二種是打包成jar包,這種由於springboot內置了tomcat,所以只需要服務器上有jdk就可以了。需要注意的是springboot最低需要jdk1.8及以上版本。我們這里演示的是打包jar包。
首先我們最好在項目配置兩個環境,一個dev環境,一個pro環境。

其中的配置文件大同小異,主要是數據庫的連接配置需要修改,畢竟一般都是一個用的本地的數據庫,一個用的雲服務器上的數據庫。可以先在發布環境中跑一遍項目。
然后再pom中加入依賴

這個是加入的依賴。
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
這個是配置靜態資源
<resources>
<resource>
<!-- 指定resources插件處理哪個目錄下的資源文件 -->
<directory>${basedir}/src/main/webapp</directory>
<!-- 需要將資源文件放到該目錄下才能訪問 -->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>
這個是指定打包jar包
<!-- 打包成jar包 -->
<packaging>jar</packaging>
然后進行打包

打包后的結果在target目錄下:

打包完了可以直接在本地先試着運行一下(切換目錄到jar包所處位置,下面代碼運行jar包。xxx.jar是你的Java包全稱)
java -jar xxx.jar
到這里本地准備也完成了。
1.3部署
將jar包通過xftp發送到服務器中:

嘗試運行該xxx.jar包
- 查看端口使用情況
netstat -anp | grep 8800 //netstat -anp | grep <端口號>
我們要想在linux系統上運行這個項目,就要保證他運行所用的端口沒有被占用,不然運行就會報錯 - 如果被占用了,(沒被占用的時候不顯示任何東西),查看占用端口的PID
sudo lsof -i:8800 //sudo lsof -i:<端口號>


- 我們要把它kill掉,留出空位來運行我們的項目。kill后再次查看端口,可以看到這個端口已經騰出來了(查詢為空)
sudo kill -9 26191 //sudo kill -9 <PID>

- 進入xxx.jar包所在的目錄下
- 然后執行命令:
java -jar xxx.jar 
這樣就算部署成功了,可以通過http://公網ip:端口號 訪問網站。但是這樣還有一個問題。就是當我們關掉xhell時,我們的網站又訪問不上了。只能再次運行一次。
我們可以先停掉原來的項目。創建一個start.sh文件。向其中添加字段 :java -jar ***.jar。按ESC + :wq + 回車鍵保存退出。這是vim的基本操作。
給這個start.sh 管理員權限,然后用nohup指令不間斷地運行(nohup指令:忽略所有掛斷(SIGHUP)信號,不掛斷地運行命令)
chmod 777 start.sh //賦予管理員權限
nohup ./start.sh & //不間斷運行文件內的指令
把Xshell關掉,在瀏覽器上輸入http://公網IP:8800 發現項目還是可以進入,說明我們已經設置成功了。至此springboot項目部署到阿里雲服務器上完結。

當然后面還需要我們去申請域名,就是其他人那種www.xxx.com的訪問地址,而不是我們現在這種ip+端口的地址。我這里就不做演示了。
1.4可能遇到的問題
- mysql的時區問題
由於我的是寶塔一鍵部署的,好像配置好了的,這個問題倒是沒遇見。遇到了可以通過修改時區解決。 - 項目在本地可以訪問,到服務器啟動成功了訪問不了。我出現過這個問題。經過各種嘗試有如下幾種可能:
- 有種可能是tomcat配置問題。在yml文件中配置:server.address=0.0.0.0。據說是tomcat默認的是172.0.0.0.所以只能本地訪問。

- 靜態資源問題。就是靜態資源打包的時候沒有打入jar。所以訪問404. 解決就是上面配置靜態資源那段代碼。
- 服務器端口未開啟:
我最終的問題就出現在這里,我是通過阿里雲的控制台界面開啟的端口。在該界面顯示端口是開啟了的。但是實際上並沒有開啟。需要在命令行界面開啟。
添加端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent (--permanent永久生效,沒有此參數重啟后失效)
刷新規則:
firewall-cmd --reload
查看指定端口
firewall-cmd --zone=public --query-port=8080/tcp
刪除指定端口
firewall-cmd --zone=public --remove-port=8080/tcp --permanent
查看已開放得所有端口
firewall-cmd --list-ports
我們可以先查看所有開放的端口是否存在我們需要開放的端口。沒有的話添加,需要注意的是添加后需要刷新規則。不然不生效。然后通過查看指定端口號如果返回yes就說明開放端口成功。
