SpringBoot 项目部署到服务器的两种方式

前言:目前,前后端分离的架构已成主流,而使用SpringBoot构建Web应用是非常快速的,项目发布到服务器上的时候,只需要打成一个jar包,然后通过命令 : java -jar jar包名称即可启动服务了。

一、jar包(官方推荐)

SpringBoot项目默认打包成jar包

jar包方式启动,也就是使用SpringBoot内置的tomcat运行。服务器上面只要你配置了jdk1.8及以上就ok,不需要外置tomcat。

1、SpringBoot将项目打包成jar包

a.首先在pom.xml文件中导入Springboot的maven依赖

<!--将应用打包成一个可以执行的jar包-->

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

        </plugins>

    </build>

b.package一下

c.package完成以后,target中会生成一个.jar包;

d.将jar包放到Linux服务器任意目录,执行下面的命令即可启动项目服务

$ nohup java -jar test.jar >temp.txt &

//这种方法会把日志文件输入到你指定的文件中,没有则会自动创建。进程会在后台运行。

2、Linux运行jar包与停止命令
a、执行jar包的命令和在windows操作系统上是一样的,都是java -jar xxxx.jar。
b、后台运行,nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行

当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中,除非另外指定了输出文件。

nohup java -jar shareniu.jar

c、如果想杀掉运行中的jar程序,查看进程命令为:

ps aux|grep getCimiss-surf.jar

将会看到此jar的进程信息

data 5796 0.0 0.0 112656 996 pts/1 S+ 09:11 0:00 grep --color=auto getCimiss-surf.jar data 30768 6.3 0.4 35468508 576800 ? Sl 09:09 0:08 java -jar getCimiss-surf.jar

其中30768则为此jar的pid,杀掉命令为

kill -9 30768

ps:

Linux jar包运行命令详细说明,请查看这篇博客:Linux后台运行Jar方法

为了方便也可以写shell脚本,请查看这篇博客:后台启动和关闭jar的shell脚本

二、war包

传统的部署方式:将项目打成war包,放入tomcat 的webapps目录下面,启动tomcat,即可访问。

SpringBoot项目改造打包成war的流程

1、pom.xml配置修改

<packaging>jar</packaging>
//修改为
<packaging>war</packaging>

2、pom文件添加如些依赖

 <!--添加servlet-api的依赖,用来打war包  -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>

这个依赖主要是用于在和jsp进行整合的使用,可酌情添加

3、排除springboot内置的tomcat干扰

 <!--最终打成war包,排除内置的tomcat-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

4、改造启动类

如果是war包发布,需要增加SpringBootServletInitializer子类,并重写其configure方法,或者将main函数所在的类继承SpringBootServletInitializer子类,并重写configure方法

当时打包为war时上传到tomcat服务器中访问项目始终报404错就是忽略了这个步骤!!!

改造之前:

@SpringBootApplication
public class MainApp {

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

改造之后:

@SpringBootApplication
public class MainApp extends SpringBootServletInitializer {

    public static void main(String[] args) {
        SpringApplication.run(MainApp.class,args);
    }
  
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {

        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(MainApp.class);
    }
}

这种改造方式也是官方比较推荐的方法

5、pom文件中不要忘了maven编译插件

 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

6、在IDEA中使用mvn clean命令清除旧的包,并使用mvn package生成新的war包

执行完毕后,可以看到war包已经生成了,默认是在target目录下,位置可以在pom文件中进行配置:

7、使用外部Tomcat运行该 war 文件,有两种方式。第一种把 war 文件直接丢到 tomcat的webapps目录,启动tomcat;第二种使用tomcat - conf - server.xml配置,使用target目录中war包解压的文件夹为项目地址进行部署

<Service name="testWar">  
  <Connector port="8088"    maxHttpHeaderSize="8192"  maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="true" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true"  URIEncoding="utf-8"/>   
  <Engine name="hnswzy" defaultHost="localhost">
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
     <Host name="localhost" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
         <Context path="" reloadable="true" docBase="D:\project\springboot\war\target\war-0.0.1">
         </Context>
     </Host>
  </Engine>
</Service>

注意事项:

将项目打成war包,部署到外部的tomcat中,这个时候,不能直接访问spring boot 项目中配置文件配置的端口。application.yml中配置的server.port配置的是spring boot内置的tomcat的端口号, 打成war包部署在独立的tomcat上之后, 你配置的server.port是不起作用的。一定要注意这一点!!

其实我们从tomcat的启动界面,已经可以看出,是启动的哪个端口:

很明显,日志告诉我们,我们应该访问8080端口。

三、jar包和war包方式对比

1.SpringBoot项目打包时能打成 jar 与 war包,对比两种打包方式,jar更加简单方便,使用 java -jar xx.jar 就可以启动。所以打成 jar 包的最多。

而 war包可以部署到tomcat的 webapps 中,随Tomcat的启动而启动。具体使用哪种方式,应视应用场景而定。

2、打jar包时不会把src/main/webapp 下的内容打到jar包里 (你认为的打到jar包里面,路径是不行的会报404)

     打war包时会把src/main/webapp 下的内容打到war包里

3.打成什么文件包进行部署与项目业务有关,就像提供 restful API 服务的项目需要打包成 jar文件,用命令运行很方便。。。而有大量css、js、html,且需要经常改动的项目,打成 war 包去运行比较方便,因为改动静态资源可以直接覆盖,很快看到改动后的效果,这是 jar 包不能比的(举个‘栗’子:项目打成 jar 包运行,一段时间后,前端要对其中某几个页面样式进行改动,使其更美观,那么改动几个css、html后,需要重新打成一个新的 jar 包,上传服务器并运行,这种改动频繁时很不友好,文件大时上传服务器很耗时,那么 war包就能免去这种烦恼,只要覆盖几个css与html即可)


参考链接:

SpringBoot的jar包运行及日志输出

SpringBoot War包形式部署到外部Tomcat

Spring Boot打war包部署遇到的坑

  • 39
    点赞
  • 233
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
* 前台采用的是拟态风格,支持黑白主题切换。 * 后台用的是[Naive UI](https://www.naiveui.com/),有暗黑及亮白两种主题,支持全局设置修改界面样式。 * 文章编辑采用Markdown,语法简洁。 * 评论加入了动态表情,体验更加有趣。 * 图片懒加载显示,避免网路不畅导致图片加载时空白。 * 留言采用贴纸效果,可选择留言主题。 * 前后端分离部署。 * 用户申请友链,后台可控,用户可修改。 * 动态修改文章预览样式。 * 支持QQ登录和邮箱绑定,绑定后可互相登录。 * 支持发表说说,分享日常生活。 * 采用JWT进行用户授权,降低服务器查询数据库的次数。 * 支持搜索结果高亮。 * 上传图片(oss或本地)。 * 基于RBAC模型,动态修改用户权限,根据权限限制操作。 * AOP注解实现日志管理。 * 后台可修改轮播背景图片,博客配置等信息。 * 后端多模块设计,方便后期升级维护。 * 日志拆分记录,快速定位问题。 * 支持https配置 * 即时聊天室 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
【资源说明】 基于 SpringBoot+Vue核酸检测登记查询系统源码+数据库sql+项目说明.zip 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现类似其他功能。 核酸检测登记查询系统 natweb目录为前端项目 采用Vue+ElementUI+VantUI natserver目录为后端项目 采用SpringBoot+SpringSecurity+Mybatis+MySQL nat.sql 为数据库文件,nat_with_v2_system为兼容微信登录和非微信登陆的数据库 (admin默认密码为123456) (提醒:部署在服务器上时,请配置SSL证书,前端通过浏览器调用摄像头时必须为https协议) ## 项目配置 运行前请修改配置 前端配置路径 public/config.js 项目功能简介 ### 用户端 (路径:/#/user) 个人信息登记、个人信息二维码展示、检测结果查询 目前可以支持不使用微信平台来进行用户数据录入功能,添加了一套独立的用户登录功能(开关位于`UserLoginConfig.useWechet`),请使用nat.sql数据库文件来兼容独立用户登录功能和硬件节点信息功能 ### 采集端 (路径:/#/operator) 通过扫描试管条码和个人信息二维码进行信息录入 chrome 在47后调用navigator.mediaDevices.getUserMedia 仅能在在https和 loaclhost环境下才可以使用。本机调试的话**只有用户在浏览器端设置信任该域名才可以使用本地摄像头。** #### 设置方法 地址栏输入`chrome://flags/`, 搜索`unsafely` enabled 并填入要授信的域名。 ### 后台 (路径:/#/admin) 后台有两种角色可登录,超级管理员和采集单位账号 超级管理员可进行检测结果查询、人员信息查询、以及所有单位的试管管理、任务管理和采集人员管理 单位账号可进行本单位下的试管管理、任务管理和采集人员管理
这是一个基于SpringBoot和Vue的高校心理教育辅导系统。该系统主要括前端和后端两部分,前端使用Vue进行开发,后端使用SpringBoot进行开发。 在前端部分,使用Vue.js框架,结合HTML、CSS和JavaScript等技术,实现了用户界面的设计。括学生、教师和管理员三种角色的登录界面,以及各自的操作界面。学生可以查看心理教育资讯,参与心理测试,提交心理咨询申请等;教师可以发布心理教育资讯,审核学生的心理测试结果,处理学生的心理咨询申请等;管理员可以进行用户管理,资讯管理等。 在后端部分,使用SpringBoot框架,结合MyBatis、MySQL等技术,实现了数据的存储和处理。括用户信息、心理教育资讯、心理测试结果、心理咨询申请等数据的存储和查询。 此外,该系统还提供了丰富的交互功能,如心理测试的自动评分,心理咨询的在线预约等,大大提高了高校心理教育辅导的效率和质量。 源码中含了完整的前端和后端代码,以及数据库的创建和初始化脚本。部署说明详细介绍了如何将该系统部署到服务器上,括环境配置、软件安装、项目运行等步骤。演示视频展示了系统的实际运行效果,括各种角色的操作流程和界面展示。 总的来说,这是一个功能完善、操作简便、界面友好的高校心理教育辅导系统,能够有效地满足高校心理教育辅导的需求。
【资源说明】 1、基于SpringBoot+Vue的外卖网上点餐系统源码+项目说明.zip 2、该资源括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SpringBoot+Vue的外卖网上点餐系统源码+项目说明.zip 基于SpringBoot+Vue的外卖网上点餐系统源码+项目说明.zip 基于SpringBoot+Vue的外卖网上点餐系统源码+项目说明.zip **系统一个共有三个端,分别是用户端、商家端和骑手端 项目的架构是SpringBoot和Vue的前后端分离,数据库为MySQL+Redis,MyBatis、Swagger接口文档、Shiro安全框架,3个客户端分别对应3个角色具有不同操作权限, 使用了主流的 **七牛云图片文件服务器** /本地存储两种文件上传访问方式,前后端采用Restful接口风格对接,采用Websocket通讯实时交互。 :hand: 用户端和骑手端采用移动端UI框架Vant、商家端使用ElementUI 项目部署上采用Doker虚拟化技术部署在自己的阿里云上,整合合Nginx、Haproxy和keepalived,从数据库到后端、前端均采用多节点负载均衡策略部署。 整个项目用的都是目前主流的技术,覆盖前后端各个技术的基础,从数据库,到后端,再到前端,再部署上云,覆盖了前后端开发部署的全部流程及各种细节。
部署 WebSocket 服务器通常有两种方法: 1. 将 WebSocket 服务器直接部署在应用服务器中,如 Tomcat、Jetty 等,这种方式需要在应用服务器中添加 WebSocket 支持的插件或者模块。 2. 使用独立的 WebSocket 服务器,如 Netty、Undertow 等,这种方式需要将 WebSocket 服务器独立部署,并将 WebSocket 服务器和应用服务器进行集成。 以下是基于 Spring Boot 的 WebSocket 服务器部署步骤: 1. 添加 Spring Boot WebSocket 依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 2. 创建 WebSocket 配置类,并添加 @EnableWebSocket 注解: ``` @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new MyWebSocketHandler(), "/websocket").setAllowedOrigins("*"); } } ``` 3. 创建 WebSocket 处理器: ``` public class MyWebSocketHandler extends TextWebSocketHandler { @Override public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { String payload = message.getPayload(); session.sendMessage(new TextMessage("Received: " + payload)); } } ``` 4. 在应用程序中注入 WebSocket 处理器: ``` @Controller public class WebSocketController { @Autowired private MyWebSocketHandler webSocketHandler; @GetMapping("/websocket") public String websocket() { return "websocket"; } } ``` 5. 编写前端页面,使用 WebSocket 进行连接: ``` var socket = new WebSocket('ws://localhost:8080/websocket'); socket.onmessage = function(event) { console.log('Received: ' + event.data); } socket.send('Hello, Server!'); ``` 6. 运行应用程序,并访问 http://localhost:8080/websocket 页面,打开浏览器控制台查看 WebSocket 连接状态。 以上是基于 Spring Boot 的 WebSocket 服务器部署步骤,具体实现可以根据自己的需求进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java架构何哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值