springboot项目打包&ngrok的使用

前言:

接触spring boot有一段时间了,但是一直未打包部署过spring boot项目,因为其内置tomcat,所以打包部署方式有所不同。还有ngrok,是一个类似于花生壳的内网穿透神器,本文也将介绍它的用法。


欢迎大家关注我的公众号 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)、执行java -jar:
执行第三步控制台输出success后,在本地项目根目录的target目录下就有love2.jar。

image.png

love2.jar就是打包好的项目。我们先在本地启动一把,等下再看看Linux服务器上如何启动。
在cmd窗口进入love2.jar所在目录,然后执行java jar love2.jar
image.png

(5)、访问项目:
启动成功后,访问localhost:8082/baby,本项目配置了端口为8082,baby是本项目路由。

image.png

注意:配置8082端口是因为我Linux服务器上有一个8080端口的项目了,配置8082是为了等下使用ngrok的方便。

(6)、部署到Linux服务器中:
部署到服务器中很简单,只需要把love2.jar上传到服务器,然后执行nohup java -jar love2.jar &即可。&表示后台运行。

image.png

(7)、访问服务器上的项目:

image.png

2、打war包:
打成jar包很方便,因为内置了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就是一个内网穿透工具,说内网穿透可能还有点不明白,说白了就是一个可以把localhost转成一个网址,从而让别人也能访问你本地项目的工具。

2、ngork在Windows中的使用:

(1)、进入官网下载:

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来实现。

(1)、安装:
安装就不多说了,下载Linux版,然后用unzip命令解压即可。解压好后只有一个ngrok文件。

image.png

(2)、使用:
在ngrok的解压目录下,执行./ngrok http 8082,8082为项目的端口。执行成功如下图:

image.png

在手机或电脑上访问图中圈出的地址+项目路由即可访问到项目。本人测试已通过,此处不再截图。

(3)、后台运行:
让ngrok后台运行,可以按如下步骤执行:
安装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

意思就是没有注册账号就会限制使用的时长和绑定的个数。既然注册免费,那就注册一个。注册时如果一直提示failed to resolve captcha,那就用谷歌或GitHub账户登录。注册好后,在auth页面会你这个账户专属的token。
image.png

回到服务器,在ngrok的解压目录下执行./ngrok authtoken xxxx,xxxx就是刚才在antu页面复制的token。

image.png

这样就授权成功了,以后就不用再运行此命令了。再次使用ngrok,就不会受限了。

三、sunny ngrok的使用:

上面介绍了ngrok的使用,接下来看看sunny ngrok的使用。其实我也不太清楚ngrok和sunny ngrok的关系,但是经个人测试sunny ngrok访问更快,而且可以自定义访问前缀。正如上面所示ngrok的前缀是一串随机生成的字符串,而sunny ngrok可以自定义访问前缀。

1、注册:
进入sunny ngrok官网进行注册。

2、开通隧道:
注册登录后,点击 隧道管理 -----> 开通隧道,选择购买如下图的免费服务器:

image.png

然后会要求你填写相关信息,隧道协议选择HTTP,隧道名称随便起,前置域名自己定义,本地端口一般写127.0.0.1:8080,其他可不填。

3、安装客户端:
开通成功后,就会生成隧道id,复制好隧道id,等下要用。

image.png

然后点击上图中的“客户端下载”,这里介绍Linux客户端的使用。
image.png

我下载的是图中圈出的版本,然后上传到Linux服务器解压即可。

4、使用sunny ngrok:
在sunny ngrok 解压根目录下执行如下命令:
./sunny clientid xxxxxx
xxxxxx就是刚才在网页复制的id。这样就开启了sunny ngrok。开启后,回到网页点击隧道管理,再编辑,还可以绑定自己购买的域名。

image.png

然后将自己购买的域名通过CNAME的方式解析到服务器,
image.png

再次回到Linux服务器执行上述命令开启,就可以用自己购买的域名指向localhost:8080。
image.png

这时所有运行在8080端口的tomcat下的项目都可以通过这个自己购买的域名+项目路由进行访问。同样也可以用screen让其在后台运行。

总结:

spring boot项目打包部署较为简单,maven install,然后把打好的jar包上传到服务器用nohup java -jar命令启动即可。至于ngrok的使用,本文也详细介绍了在windows和centos中用法,步骤也不复杂,反正听说比花生壳更简单,而sunny ngrok似乎比ngrok更加强大,因为个人感觉访问速度更快,而且可以自定义前缀,比起ngrok的一串随机生成的字符串作为前缀,总更好看些。用法也不复杂,你值得拥有!

以上内容属于个人笔记整理,如有错误,欢迎批评指正!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,590评论 18 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,726评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,407评论 25 707
  • 时代的症候,坚持去做一件事太难了,特别是阅读,还有跑步。 前些年,美国作者亚伦·杰柯布写的《我该如何阅读》这本书被...
    多传阅读 898评论 0 0
  • 520刚刚过去,我收获了自己零基础的彩铅临摹 以下为步骤图,上色着迷,忘了拍各个部分的细节图了
    蜀南枚阅读 409评论 0 1