springboot項目打包&ngrok的使用

前言:

接觸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。

image.png

love2.jar就是打包好的項目。我們先在本地啟動一把,等下再看看Linux服務器上如何啟動。
在cmd窗口進入love2.jar所在目錄,然后執(zhí)行java jar love2.jar
image.png

(5)、訪問項目:
啟動成功后,訪問localhost:8082/baby,本項目配置了端口為8082,baby是本項目路由。

image.png

注意:配置8082端口是因為我Linux服務器上有一個8080端口的項目了,配置8082是為了等下使用ngrok的方便。

(6)、部署到Linux服務器中:
部署到服務器中很簡單,只需要把love2.jar上傳到服務器,然后執(zhí)行nohup java -jar love2.jar &即可。&表示后臺運行。

image.png

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

image.png

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)下載:

image.png

(2)、下載后解壓:

image.png

雙擊解壓后的ngrok.exe,會自動進入cmd命令窗口。

(3)、使用ngrok:
進入cmd窗口后,輸入ngrok http 8082

image.png

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

手機訪問

3、ngrok在Linux中的使用:

在windows中使用是因為我們沒買服務器又想讓別人也能訪問我們的項目,在Linux中使用是因為使用域名需要備案,有點麻煩,而我們又不想直接通過IP訪問項目,因為把IP暴露出去不太安全。所以就可以通過ngrok來實現(xiàn)。

(1)、安裝:
安裝就不多說了,下載Linux版,然后用unzip命令解壓即可。解壓好后只有一個ngrok文件。

image.png

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

image.png

在手機或電腦上訪問圖中圈出的地址+項目路由即可訪問到項目。本人測試已通過,此處不再截圖。

(3)、后臺運行:
讓ngrok后臺運行,可以按如下步驟執(zhí)行:
安裝screen:
yum install screen

開啟新窗口:
screen

運行ngrok:
./ngrok http 8082

返回到主終端:
ctrl+A+D

image.png

這樣就相當于讓ngrok在后臺運行了。

返回到ngrok的screen窗口:
screen -ls
screen -r xxxxx

image.png

這樣就可以返回到ngrok運行的窗口,按ctrl+C就可以關閉ngrok,按ctrl+A+D就可以后臺運行,screen -S xxxx -X quit就可退出xxxx的screen。

(4)、注冊ngrok賬號:
上面3個步驟就可以使用ngrok了,但是當我第二天訪問這個項目時就出錯了,錯誤如下:

image.png

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

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

image.png

這樣就授權成功了,以后就不用再運行此命令了。再次使用ngrok,就不會受限了。

三、sunny ngrok的使用:

上面介紹了ngrok的使用,接下來看看sunny ngrok的使用。其實我也不太清楚ngrok和sunny ngrok的關系,但是經(jīng)個人測試sunny ngrok訪問更快,而且可以自定義訪問前綴。正如上面所示ngrok的前綴是一串隨機生成的字符串,而sunny ngrok可以自定義訪問前綴。

1、注冊:
進入sunny ngrok官網(wǎng)進行注冊。

2、開通隧道:
注冊登錄后,點擊 隧道管理 -----> 開通隧道,選擇購買如下圖的免費服務器:

image.png

然后會要求你填寫相關信息,隧道協(xié)議選擇HTTP,隧道名稱隨便起,前置域名自己定義,本地端口一般寫127.0.0.1:8080,其他可不填。

3、安裝客戶端:
開通成功后,就會生成隧道id,復制好隧道id,等下要用。

image.png

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

我下載的是圖中圈出的版本,然后上傳到Linux服務器解壓即可。

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

image.png

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

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

這時所有運行在8080端口的tomcat下的項目都可以通過這個自己購買的域名+項目路由進行訪問。同樣也可以用screen讓其在后臺運行。

總結(jié):

spring boot項目打包部署較為簡單,maven install,然后把打好的jar包上傳到服務器用nohup java -jar命令啟動即可。至于ngrok的使用,本文也詳細介紹了在windows和centos中用法,步驟也不復雜,反正聽說比花生殼更簡單,而sunny ngrok似乎比ngrok更加強大,因為個人感覺訪問速度更快,而且可以自定義前綴,比起ngrok的一串隨機生成的字符串作為前綴,總更好看些。用法也不復雜,你值得擁有!

以上內(nèi)容屬于個人筆記整理,如有錯誤,歡迎批評指正!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,262評論 6 342
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,936評論 25 709
  • 時代的癥候,堅持去做一件事太難了,特別是閱讀,還有跑步。 前些年,美國作者亞倫·杰柯布寫的《我該如何閱讀》這本書被...
    多傳閱讀 1,045評論 0 0
  • 520剛剛過去,我收獲了自己零基礎的彩鉛臨摹 以下為步驟圖,上色著迷,忘了拍各個部分的細節(jié)圖了
    蜀南枚閱讀 450評論 0 1

友情鏈接更多精彩內(nèi)容