博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot项目打包&ngrok的使用
阅读量:7218 次
发布时间:2019-06-29

本文共 4418 字,大约阅读时间需要 14 分钟。

前言:

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

一、springboot项目打包部署:

1、打jar包:

(1)、在pom.xml中可以配置jar包的名字:

love2
org.springframework.boot
spring-boot-maven-plugin

等下生成jar包的名字就叫做love2。

(2)、clean一下项目:

选中按项目run as maven clean

(3)、打包项目:

选中项目run as maven install

(4)、执行java -jar:

执行第三步控制台输出success后,在本地项目根目录的target目录下就有love2.jar。

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

(5)、访问项目:

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

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

(6)、部署到Linux服务器中:

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

img_97b55bf49d15c58793be9212cf1c5b7f.png
image.png

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

img_f193e177c5e778e187bda0a315db78cf.png
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。

com.zhu
love2
0.0.1-SNAPSHOT
war

添加一个依赖:

org.springframework.boot
spring-boot-starter-tomcat
provided

(2)、修改启动类:

启动类继承SpringBootServletInitializer并重写configure方法。

@SpringBootApplicationpublic 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)、进入官网下载:

img_2c1448713d5c942dac4b977f90e1605a.png
image.png

(2)、下载后解压:

img_a00cae6bfa03063c623a107bcfbaf650.png
image.png
双击解压后的ngrok.exe,会自动进入cmd命令窗口。

(3)、使用ngrok:

进入cmd窗口后,输入ngrok http 8082

img_e6a869df90cdcd2c0073b97d2512953e.png
image.png
然后别人的电脑或手机就可以通过上图中圈出的地址+项目路由访问到我们本地启动的love2那个项目。
img_c82ece3b3feabde73e5866fdd4d6360f.png
电脑访问
img_33cc15141214bea5719cf68f7fd47f03.png
手机访问

3、ngrok在Linux中的使用:

在windows中使用是因为我们没买服务器又想让别人也能访问我们的项目,在Linux中使用是因为使用域名需要备案,有点麻烦,而我们又不想直接通过IP访问项目,因为把IP暴露出去不太安全。所以就可以通过ngrok来实现。

(1)、安装:

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

img_84cbf22063431475b30e08e71e858837.png
image.png

(2)、使用:

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

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

(3)、后台运行:

让ngrok后台运行,可以按如下步骤执行:
安装screen:
yum install screen

开启新窗口:

screen

运行ngrok:

./ngrok http 8082

返回到主终端:

ctrl+A+D

img_e6f536baa125d40721ca40cf823917a3.png
image.png
这样就相当于让ngrok在后台运行了。

返回到ngrok的screen窗口:

screen -ls
screen -r xxxxx

img_483899e8c8992f7752102658ce8f8dbd.png
image.png
这样就可以返回到ngrok运行的窗口,按ctrl+C就可以关闭ngrok,按ctrl+A+D就可以后台运行,
screen -S xxxx -X quit就可退出xxxx的screen。

(4)、注册ngrok账号:

上面3个步骤就可以使用ngrok了,但是当我第二天访问这个项目时就出错了,错误如下:

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

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

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

三、sunny ngrok的使用:

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

1、注册:

进入sunny ngrok进行注册。

2、开通隧道:

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

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

3、安装客户端:

开通成功后,就会生成隧道id,复制好隧道id,等下要用。

img_66a96ac6f6a69d963a1db1964c46ca86.png
image.png
然后点击上图中的“客户端下载”,这里介绍Linux客户端的使用。
img_18bcc608d132a902b6b728b7623c8924.png
image.png
我下载的是图中圈出的版本,然后上传到Linux服务器解压即可。

4、使用sunny ngrok:

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

img_ac6db5a6a8bf6cc683b07a6b3ed1d088.png
image.png
然后将自己购买的域名通过CNAME的方式解析到服务器,
img_34667d00764845cdba45d4512f00d336.png
image.png
再次回到Linux服务器执行上述命令开启,就可以用自己购买的域名指向localhost:8080。
img_7efb3617658ffc040142936820567be0.png
image.png

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

总结:

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

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

转载地址:http://aexym.baihongyu.com/

你可能感兴趣的文章
如何在macOS Sierra中运行CORE Keygen破解程序
查看>>
终极解决方案:windows10资源管理器假死
查看>>
【java】一维数组循环位移方阵
查看>>
Essential Studio for mobile MVC中创建Razor应用程序平台教程
查看>>
java主函数的含义
查看>>
中国大学MOOC —— 学习笔记(四)
查看>>
访问,ringbtn,
查看>>
致橡树
查看>>
一段测试代码,哦哦哦,
查看>>
uiimagepickercontroller,中文,--》摘
查看>>
第四次作业
查看>>
在python中调用js或者nodejs
查看>>
【年终总结】2年计划还是要有的,万一实现了呢?(转自叶小钗)
查看>>
数字图像处理学习笔记(1.1)---位图的读写、几何变换、傅里叶变换、直方图均衡...
查看>>
javascript数组顺序-----1冒泡的另一种比较好理解的写法
查看>>
数据结构-栈的实现之行编译器核心实现
查看>>
C++ Project 积累(2)
查看>>
(1)用VisualSvn Server,Tortoise Svn,AnkhSvn搭建Svn版本控制
查看>>
Mysql索引
查看>>
格式化输出
查看>>