前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot使用war包的形式进行应用的发布部署

springboot使用war包的形式进行应用的发布部署

作者头像
码农王同学
发布2019-11-26 15:36:01
7320
发布2019-11-26 15:36:01
举报
文章被收录于专栏:后端Coder后端Coder

在使用springboot这项技术时,我们创建的项目都是以jar的形式进行的,最近偶尔想到了如何换下启动方式,所以这篇文章就出来了。

接下来我们按照下面的步骤一步一步来看下如何使用war包的形式进行项目的发布和部署的吧。

首先我们使用的工具是idea,java版本使用的1.8,下面我们按照图片的教程一步一步去整理我们需要的内容咯。

下面的步骤就是一步一步进行项目的创建过程了,比较容易理解,跟着教程就可以了,过多的内容讲述就省略了。

Tips:记得让自己的电脑可以连上网络,不然无法创建下面的项目流程了。

上面我们进行标注这是一个war包形式,这里注意不要勾选错了。

勾选上面需要的内容,点击下面的下一步,接着完成,这个项目就创建完成了,然后我们继续看下下面如何创建了。

下面我们打开我们的pom文件,发现我们的打包方式现在是war的形式了。

我们需要在我们的主程序中进行下面的信息配置。

代码语言:javascript
复制
package com.wpw.springbootwar;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
//下面SpringBootServletInitializer ,idea快捷键 ctrl+o可以选择对应的方法
public class SpringbootWarApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        return builder.sources(SpringbootWarApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringbootWarApplication.class, args);
    }

}

上面的方法已经注释了如何进行对应方法的实现和配置,希望你可以知道。写到这了,我们为了可以在页面上进行直观的看出效果,我们自定义一个controller然后里面进行返回一条很简单的信息进行测试。

代码语言:javascript
复制
package com.wpw.springbootwar;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author 微信公众号~后端Coder
 */
@RestController
public class UserController {
    @GetMapping(value = "/hello")
    public String hello() {
        return "hello backCoder";
    }
}

在上面的示例程序中,我们自定义一个controller用于测试,很简单的一条信息返回。

这里我们为了我们接下来的打包名称比较简洁,也就是我们自定义的打包名称,我们需要在pom文件里面进行如下配置。

代码语言:javascript
复制
<build>
        <finalName>hello-war</finalName>//这句就是我们可以进行自定义打包名称的位置
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

好了,我们为了可以很方便的进行打包,我们还是采用了idea上面的打包工具好了,命令也可以。

双击上面的package就可以打包了,然后我们看到我们的控制台出现了下面的success信息就表示我们成功了。

代码语言:javascript
复制
[INFO] Building war: D:\springboot-war\target\hello-war.war
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.2.1.RELEASE:repackage (repackage) @ springboot-war ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

其实在上面我们可以看到我们打的包放在的位置就是target目录下面,我们找到就可以了。

为了我们看下我们打包是否正确我需要将war包上传到自己的服务器的tomcat进行部署下。

这次我们可以使用到了我们上次文章发布的docker容器化技术搭建的tomcat环境了。

我们看到我们的tomcat服务器还是在运行的,这次我们将自己的war包进行在tomcat进行部署了。关于文件如何上传到自己的服务器,推荐winScp工具进行上传,关于如何使用工具请自行搜索。

好了,现在我已经将自己的war包上传到自己的服务器了,接下来我们将war包拷贝到我们的tomcat这样的web容器里面进行启动即可。

关于如何将本地的war包拷贝到容器对应的目录里面,我们可以按照下面的命令进行操作即可。

首先我们使用下面的命令查看自己tomcat容器的容器id

代码语言:javascript
复制
docker ps | grep tomcat

然后我们使用下面的命令进行进入到容器里面,主要是看下webapps目录的路径是什么,其目的就是将自己的war包放入到这个路径下面。

代码语言:javascript
复制
docker exec -it  tomcat容器id bash

进入之后我们ls,可以发现webapps目录,然后 cd webapps目录里面,然后pwd一下就可以找到webapps目录的绝对路径了,下面的路径是自己的。

代码语言:javascript
复制
/usr/local/tomcat/webapps

好了,上面的步骤完成之后,我们终于到了如何将服务的war包拷贝到容器里面这个步骤了。

代码语言:javascript
复制
docker cp hello-war.war  自己的tomcat容器id:/usr/local/tomcat/webapps

好了,我们为了正确性,看下我们的war是否已经拷贝到对应的目录了吧,再次进入容器里面进行查找了。

我们看到我们的hello-war包已经启动了,下面我们开始在我们的浏览器进行项目的访问了。

这里提示一下,tomcat的端口号默认是8080,但是自己将主机的端口10000映射为容器的8080端口上,所以我们在浏览器上访问是10000的端口,不过你们也可以根据自己的喜欢进行设定,需要了解如何设置的可以看下我之前发过的文章。

代码语言:javascript
复制
http://自己tomcat服务器所在的机器ip:10000/hello-war/hello

我们通过上面的地址进行访问,首先解析一下吧,上面的hello-war是我们的项目名称,也就是war包的名称,后面的/hello就是上面我们自定义的controller自定义的url路径。

我们看到上面的图片就是我们在示例程序中定义的信息,说明我们成功了,好了,本次需要分享的文章就到这里结束了

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农王同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档