前言:
接觸spring boot有一段時間了,但是一直未打包部署過spring boot項目,因為其內(nèi)置tomcat,所以打包部署方式有所不同。還有ngrok,是一個類似于花生殼的內(nèi)網(wǎng)穿透神器,本文也將介紹它的用法。
歡迎大家關注我的公眾號 javawebkf,目前正在慢慢地將簡書文章搬到公眾號,以后簡書和公眾號文章將同步更新,且簡書上的付費文章在公眾號上將免費。
一、springboot項目打包部署:
1、打jar包:
(1)、在pom.xml中可以配置jar包的名字:
<build>
<finalName>love2</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
等下生成jar包的名字就叫做love2。
(2)、clean一下項目:
選中按項目run as maven clean。
(3)、打包項目:
選中項目run as maven install。
(4)、執(zhí)行java -jar:
執(zhí)行第三步控制臺輸出success后,在本地項目根目錄的target目錄下就有l(wèi)ove2.jar。

love2.jar就是打包好的項目。我們先在本地啟動一把,等下再看看Linux服務器上如何啟動。
在cmd窗口進入love2.jar所在目錄,然后執(zhí)行
java jar love2.jar:
(5)、訪問項目:
啟動成功后,訪問localhost:8082/baby,本項目配置了端口為8082,baby是本項目路由。

注意:配置8082端口是因為我Linux服務器上有一個8080端口的項目了,配置8082是為了等下使用ngrok的方便。
(6)、部署到Linux服務器中:
部署到服務器中很簡單,只需要把love2.jar上傳到服務器,然后執(zhí)行nohup java -jar love2.jar &即可。&表示后臺運行。

(7)、訪問服務器上的項目:

2、打war包:
打成jar包很方便,因為內(nèi)置了tomcat,所以服務器上也無需安裝tomcat。正因為如此,所以如果要同時啟動多個spring boot項目項目,那就得配置不同的端口,比如一個8080,一個8081,一個8082……。但是這樣也不好,因為接下來的ngrok免費版只能解析一個端口,即如果解析了8080那就不能解析其他的了。所以可以打成war包,全都運行在8080端口的tomcat服務器下,那么ngrok只解析8080端口就行了。接下來就看看如何打成war包:
(1)、修改pom.xml:
打包方式由jar改成war。
<groupId>com.zhu</groupId>
<artifactId>love2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
添加一個依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
(2)、修改啟動類:
啟動類繼承SpringBootServletInitializer并重寫configure方法。
@SpringBootApplication
public class Love2Application extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// TODO Auto-generated method stub
return builder.sources(Love2Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Love2Application.class, args);
}
}
(3)、進行打包:
同樣是run as maven install就行了,在項目根目錄的target目錄下就會生成一個war包,把war包上傳至服務器tomcat的webapps目錄下,過幾秒就會自動解壓,然后就可以訪問了。
我們都知道直接通過服務器的IP訪問項目不太安全,買域名要備案又有點麻煩,又或者根本沒買服務器,但是項目又想讓別人也能訪問,那么,ngrok就可以幫到你,接下來看看ngrok的使用方法。
二、ngrok的使用:
1、ngrok簡介:
ngrok就是一個內(nèi)網(wǎng)穿透工具,說內(nèi)網(wǎng)穿透可能還有點不明白,說白了就是一個可以把localhost轉(zhuǎn)成一個網(wǎng)址,從而讓別人也能訪問你本地項目的工具。
2、ngork在Windows中的使用:
(1)、進入官網(wǎng)下載:

(2)、下載后解壓:

雙擊解壓后的ngrok.exe,會自動進入cmd命令窗口。
(3)、使用ngrok:
進入cmd窗口后,輸入ngrok http 8082:

然后別人的電腦或手機就可以通過上圖中圈出的地址+項目路由訪問到我們本地啟動的love2那個項目。


3、ngrok在Linux中的使用:
在windows中使用是因為我們沒買服務器又想讓別人也能訪問我們的項目,在Linux中使用是因為使用域名需要備案,有點麻煩,而我們又不想直接通過IP訪問項目,因為把IP暴露出去不太安全。所以就可以通過ngrok來實現(xiàn)。
(1)、安裝:
安裝就不多說了,下載Linux版,然后用unzip命令解壓即可。解壓好后只有一個ngrok文件。

(2)、使用:
在ngrok的解壓目錄下,執(zhí)行./ngrok http 8082,8082為項目的端口。執(zhí)行成功如下圖:

在手機或電腦上訪問圖中圈出的地址+項目路由即可訪問到項目。本人測試已通過,此處不再截圖。
(3)、后臺運行:
讓ngrok后臺運行,可以按如下步驟執(zhí)行:
安裝screen:
yum install screen
開啟新窗口:
screen
運行ngrok:
./ngrok http 8082
返回到主終端:
ctrl+A+D

這樣就相當于讓ngrok在后臺運行了。
返回到ngrok的screen窗口:
screen -ls
screen -r xxxxx

這樣就可以返回到ngrok運行的窗口,按ctrl+C就可以關閉ngrok,按ctrl+A+D就可以后臺運行,
screen -S xxxx -X quit就可退出xxxx的screen。
(4)、注冊ngrok賬號:
上面3個步驟就可以使用ngrok了,但是當我第二天訪問這個項目時就出錯了,錯誤如下:

意思就是沒有注冊賬號就會限制使用的時長和綁定的個數(shù)。既然注冊免費,那就注冊一個。注冊時如果一直提示failed to resolve captcha,那就用谷歌或GitHub賬戶登錄。注冊好后,在auth頁面會你這個賬戶專屬的token。

回到服務器,在ngrok的解壓目錄下執(zhí)行./ngrok authtoken xxxx,xxxx就是剛才在antu頁面復制的token。

這樣就授權成功了,以后就不用再運行此命令了。再次使用ngrok,就不會受限了。
三、sunny ngrok的使用:
上面介紹了ngrok的使用,接下來看看sunny ngrok的使用。其實我也不太清楚ngrok和sunny ngrok的關系,但是經(jīng)個人測試sunny ngrok訪問更快,而且可以自定義訪問前綴。正如上面所示ngrok的前綴是一串隨機生成的字符串,而sunny ngrok可以自定義訪問前綴。
1、注冊:
進入sunny ngrok官網(wǎng)進行注冊。
2、開通隧道:
注冊登錄后,點擊 隧道管理 -----> 開通隧道,選擇購買如下圖的免費服務器:

然后會要求你填寫相關信息,隧道協(xié)議選擇HTTP,隧道名稱隨便起,前置域名自己定義,本地端口一般寫127.0.0.1:8080,其他可不填。
3、安裝客戶端:
開通成功后,就會生成隧道id,復制好隧道id,等下要用。

然后點擊上圖中的“客戶端下載”,這里介紹Linux客戶端的使用。

我下載的是圖中圈出的版本,然后上傳到Linux服務器解壓即可。
4、使用sunny ngrok:
在sunny ngrok 解壓根目錄下執(zhí)行如下命令:
./sunny clientid xxxxxx
xxxxxx就是剛才在網(wǎng)頁復制的id。這樣就開啟了sunny ngrok。開啟后,回到網(wǎng)頁點擊隧道管理,再編輯,還可以綁定自己購買的域名。

然后將自己購買的域名通過CNAME的方式解析到服務器,

再次回到Linux服務器執(zhí)行上述命令開啟,就可以用自己購買的域名指向localhost:8080。

這時所有運行在8080端口的tomcat下的項目都可以通過這個自己購買的域名+項目路由進行訪問。同樣也可以用screen讓其在后臺運行。
總結(jié):
spring boot項目打包部署較為簡單,maven install,然后把打好的jar包上傳到服務器用nohup java -jar命令啟動即可。至于ngrok的使用,本文也詳細介紹了在windows和centos中用法,步驟也不復雜,反正聽說比花生殼更簡單,而sunny ngrok似乎比ngrok更加強大,因為個人感覺訪問速度更快,而且可以自定義前綴,比起ngrok的一串隨機生成的字符串作為前綴,總更好看些。用法也不復雜,你值得擁有!