【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

这篇具有很好参考价值的文章主要介绍了【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring Boot 项目开发结束后的工作便是运维,简单来说需要配置 Web 运行参数和项目部署两大工作,本文将尽可能详细地给大家讲全!

目录

1 定制 Web 容器运行参数

1.1 运行参数介绍

1.2 项目搭建

① 通过 IDEA Spring Initializr 创建项目

② 添加 Spring Web 等依赖

③ 编写 controller 层的接口

④ 测试接口

1.2 定制运行参数

① 配置压缩支持 + 报错处理

② 报错处理

③ 压缩支持

2 将应用以 Jar 包形式部署至服务器

2.1 云服务器安装 JDK8

① 下载 linux 版本下的 jdk

② 上传至指定文件夹并解压

③ 配置环境变量

④ 验证

2.2 以 jar 包形式将 Spring Boot 项目部署到云服务器

① 添加maven依赖

② 通过 idea 打包项目

③ 项目上传到服务器

④ 在服务器运行 jar 文件

⑤ 云服务器防火墙设置

⑥ 浏览器访问

3 将应用以 Docker 镜像文件形式部署至服务器

3.1 Dockerfile 文件

① 新建 Dockerfile 文件

② 将 Dockerfile 文件上传至服务器

3.2 以  Dockerfile 文件形式将 Spring Boot 项目部署到云服务器 

① 将项目打包成 jar 并放到服务器

② 在当前目录下运行指令,构建镜像

③ 运行镜像并检验


项目源码:尹煜 / rundemo · GitCode

1 定制 Web 容器运行参数

1.1 运行参数介绍

Ⅰ 可选容器列表

其实 Spring Boot 不仅支持 Tomcat,还支持 jetty、undertow 等容器,本项目采用的是 Tomcat ,若要更换容器,需要将 spring-boot-starter-tomcat 从 Web 的 starter 里去掉,然后引入像 jetty 这样的 starter ~

  • spring-boot-starter-tomcat
  • spring-boot-starter-jetty
  • spring-boot-starter-undertow
  • spring-boot-starter-reactor-netty

Ⅱ 端口

  • server.port:指定端口号
  • server.address:指定地址

Ⅲ 压缩支持

  • server.compression.enabled=true:开启压缩支持
  • server.compression.min-response-size:设置最小需要压缩的大小 默认为2t
  • server.compression.mime-types:设置默认压缩的类型

Ⅳ Tomcat 特定配置

  • server.tomcat.max-connections=10000:最大连接数
  • server.tomcat.max-http-post-size=2MB:设置post参数字符串大小
  • server.tomcat.max-swallow-size=2MB:请求正文的最大大小
  • server.tomcat.max-threads=200:最大线程数量
  • server.tomcat.min-spare-threads=10:最小空闲线程数

Ⅴ 错误处理

  • server.error.path=/error:错误页地址
  • server.error.include-exception=false:是否在错误页面显示异常信息
  • server.error.include-stacktrace=never:是不是要打出 stacktrace(堆栈轨迹),在开发环境中可以打开 在产线上不要打开
  • server.error.whitelabel.enabled=true:是否开启默认的错误页面

Ⅵ 其他

  • server.use-forward-headers:设置一些头,通过头传递真实的来源ip
  • server.servlet.session.timeout:设置 session 的超时

Ⅶ 通过编程方式

通过WebServerFactoryCustomizer<T>做一些定制,在 1.3 可以看到

  • TomcatServletWebServerFactory
  • JettyServletWebServerFactory
  • UndertowServletWebServerFactory

1.2 项目搭建

由于只是用作演示 Web 容器运行和部署,因此本项目很简单,写了几个简单的接口,而且也不连接数据库,以下是项目搭建的流程。

① 通过 IDEA Spring Initializr 创建项目

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

② 添加 Spring Web 等依赖

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

③ 编写 controller 层的接口

由于项目不做数据库相关操作,所以直接编写接口~

路径:src/main/java/com/rundemo/controller/UserController.java

package com.rundemo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/run")
public class UserController {


    @RequestMapping("/visit/{userId}")
    public int allUser(@PathVariable("userId") int id) {
        return 2/id;
    }

    @RequestMapping("/demo")//模拟下实体内容返回
    public Map<String, String> queryUser() {
        Map<String, String> map = new HashMap<>();
        map.put("id","1");
        map.put("name","yinyu");
        map.put("status","ok");
        return map;
    }
    
}

④ 测试接口

首先启动启动类 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

然后用 Termimal 终端进行访问,直接用浏览器也可~

返回成功,还附带了很多其他信息,包括状态、请求头等 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

1.2 定制运行参数

首先展示一下项目框架 👇,很清爽~

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

① 配置压缩支持 + 报错处理

本文以压缩支持和报错处理为例

路径:src/main/resources/application.properties

#压缩支持
server.compression.enabled=true
server.compression.min-response-size=512

#报错处理
server.error.include-stacktrace = always
server.error.include-exception = true

路径:src/main/java/com/rundemo/RundemoApplication.java

package com.rundemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.TimeZone;

@SpringBootApplication
public class RundemoApplication  implements WebMvcConfigurer,WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

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


    @Override //压缩配置,在application.properties和启动类选择一个配置即可
    public void customize(TomcatServletWebServerFactory factory) {
//        Compression compression = new Compression(); //压缩的配置
//        compression.setEnabled(true);//开启压缩
//        compression.setMinResponseSize(DataSize.ofBytes(200));// 设置最小需要压缩的大小
//        factory.setCompression(compression);//将配置传入
    }


    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jacksonBuilderCustomizer() {
        return builder ->
                builder.indentOutput(true)
                        .timeZone(TimeZone.getTimeZone("Asia/Shanghai"));
    }

}

② 报错处理

首先启动项目的启动类,然后正常访问 /run/visit/1 接口,正确返回 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

访问 /run/visit/0,此时预期会报错,因为分母无法为0,那么以下正确返回报错信息 👇,不过不建议在生产环境如下配置哈

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

③ 压缩支持

还是启动一下那个启动类,通过浏览器访问接口,打开 F12,切换到 NetWork 下,右键表头选择 Response Headers 下的Content-Encoding,如果开启了 Gzip,对应接口中的Content-Encoding中会有显示。

未压缩时:

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

压缩后,体积减小,Content-Encoding 也更新为 Gzip 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

2 将应用以 Jar 包形式部署至服务器

2.1 云服务器安装 JDK8

① 下载 linux 版本下的 jdk

网盘链接: jdk-8u171-linux-x64.tar.gz 网盘链接

② 上传至指定文件夹并解压

MobaXterm 中文版链接:MobaXterm中文版网盘链接

我通过 MobaXterm 工具将 jar 文件放到 home/java 目录下(也可根据需要使用rz命令、FileZilla工具等方式)

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

接下来就是切换到该目录下并解压👇

解压命令:tar -xvf jdk-8u171-linux-x64.tar.gz

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

再次查看该目录下的文件,红框内说明解压成功 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

③ 配置环境变量

编辑文件命令:vi /etc/profile

在文件末尾加上 jdk 配置:

export JAVA_HOME=/home/java/jdk1.8.0_171   
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:
export PATH=${JAVA_HOME}/bin:$PATH

i  1、进入编辑模式
esc 2、退出编辑模式 
:wq! 3、退出保存

编辑保存后 cat 查看该文件,末尾已加上 jdk 配置 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

刷新配置文件,让配置生效:source /etc/profile

④ 验证

验证命令:java -version

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

2.2 以 jar 包形式将 Spring Boot 项目部署到云服务器

① 添加maven依赖

    <groupId>com</groupId>
    <artifactId>rundemo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

② 通过 idea 打包项目

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

在控制台中看到有如下输出则表示输出成功 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

package 会将 Maven 工程打包成一个可执行的 jar 文件存放在 target 目录下

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

③ 项目上传到服务器

通过 MobaXterm 工具将 jar 文件 media/ 目录下

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

④ 在服务器运行 jar 文件

首先切换到 jar 文件所在目录

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

然后执行命令:java -jar rundemo.jar

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

⑤ 云服务器防火墙设置

由于我用的是腾讯云服务器,还需要开放 8080 端口~

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

⑥ 浏览器访问

注意和在本地电脑运行相比,只需将 ip 地址换成服务器的即可,端口号(默认8080)和路径名都是与本地一致,也可自行配置

访问返回成功 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

报错也返回成功 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

最后 ctrl +c 就结束进程了~

3 将应用以 Docker 镜像文件形式部署至服务器

目前将 SpringBoot 项目打包成 Docker 镜像主要有两种方案

  • 全自动化 :在项目的 pom文件/maven配置里配置好镜像仓库地址,并在项目配置Dockerfile文件,这样项目在idea中打包完成后可自动上传到镜像仓库,docker 直接启动该镜像就行了
  • 半自动化:将 SpringBoot 项目打包成普通的 jar 包,将该 jar 包上传至服务器,在同目录下创建一个 Dockerfile 文件,执行 docker build 命令,将这个 jar 包构建成一个 docker 镜像,然后就可以通过 docker 运行这个镜像了

一般来说半自动化较为普遍,本文采用第二种方式

3.1 Dockerfile 文件

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

① 新建 Dockerfile 文件

Dockerfile 文件是文本文档,不需要后缀,目录依据在服务器的具体位置

# java8运行环境
FROM java  
# 作者名称
MAINTAINER yinyu
 
# 切换工作目录
WORKDIR /media
 
# 添加rundemo.jar文件到docker环境内
ADD rundemo.jar /media/rundemo.jar
# 暴露端口8080
EXPOSE 8080
# 运行命令
ENTRYPOINT ["java", "-server", "-Xms512m", "-Xmx512m", "-jar", "/media/rundemo.jar"]

② 将 Dockerfile 文件上传至服务器

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

3.2 以  Dockerfile 文件形式将 Spring Boot 项目部署到云服务器 

① 将项目打包成 jar 并放到服务器

步骤参考本文的2.2小节,是一样的

② 在当前目录下运行指令,构建镜像

后边一个“.”,代表当前路径

docker build -t rundemo:0.0.1 .

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

通过 docker images 命令,查看镜像已创建成功

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

③ 运行镜像并检验

docker run -p 8080:8080 -t rundemo:0.0.1

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

浏览器访问,只需将 ip 地址换成服务器的即可,端口号(默认8080)和路径名都是与本地一致,也可自行配置,访问成功 👇

【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器

此时需要 docker stop rundemo:0.0.1 命令来停止 Spring Boot 项目的运行~


参考文章

docker系列之打包spring boot 项目成docker镜像__shan123的博客-CSDN博客_springboot打包docker镜像

如何定制 Web 容器的运行参数_L# S@的博客-CSDN博客_怎么web设置容器运行参数

部署springboot项目到云服务器的两种方式(jar+war)文章来源地址https://www.toymoban.com/news/detail-422613.html

到了这里,关于【Java开发】 Spring 11 :Spring Boot 项目部署至云服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu服务器中java -jar 后台运行Spring Boot项目

    问:我在我的服务器中java -jar 运行springboot项目,但是我操作不了命令了,必须要终止掉才能执行后面的操作,怎么样才能让他后台运行呢?比如我的jar包名是tools-boot-0.0.1-SNAPSHOT.jar 使用nohup命令: 在命令前加上nohup,并通过重定向将输出保存到文件中。例如: 问:这个outp

    2024年02月08日
    浏览(60)
  • 鸿鹄工程项目管理系统源码:Spring Boot带来的快速开发与部署体验

    随着企业规模的不断扩大和业务的快速发展,传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,企业需要借助先进的数字化技术进行转型。本文将介绍一款采用Spring Cloud+Spring Boot+Mybatis技术框架的工

    2024年02月03日
    浏览(44)
  • 【论坛java项目】第二章 Spring Boot实践,开发社区登录模块:发送邮件、开发注册功能、会话管理、生成验证码、开发登录、退出功能、

    😀如果对你有帮助的话😊 🌺为博主点个赞吧 👍 👍点赞是对博主最大的鼓励😋 💓爱心发射~💓 bofryuzursekbiab——密码 访问邮箱域名 邮箱端口 账号 密码 协议 详细配置 JavaMailSender 是 Spring Email 的核心组件,负责发送邮件 MimeMessage 用于封装邮件的相关信息 MimeMessageHelper 用

    2024年02月06日
    浏览(57)
  • 华为云云耀云服务器L实例评测|安装Java8环境 & 配置环境变量 & spring项目部署 &【!】存在问题未解决

    1.华为云服务器安装Java8环境配置; 2.上传jar包,运行jar包,控制台开放端口; 3.访问失败以及问题排查,未解决【!】 当前内存状态 查看当前路径 让配置生效 查看文件 运行打包好的jar包 http://124.70.138.34/doc.html 1.进程kill -9 运行窗口退出 2.ctrl c退出 开放8080端口 运行jar包,也

    2024年02月09日
    浏览(60)
  • 部署Spring Boot项目

    上传jar包 之前在 新建Spring Boot项目 [1] 使用 mvn install 的方式,已经构建出jar包。 通过scp或rz/sz,将该jar包上传到服务器 执行 java -jar hello-0.0.1-SNAPSHOT.jar ,发生如下报错: 这是由于 编译环境 与 运行环境 不一致导致: 本机执行 java -version 服务器上执行 java -version 服务器 安装/更

    2024年02月10日
    浏览(52)
  • Spring Boot 笔记 021 项目部署

    1.1 引入坐标,并双击package打包成jar包 1.2 在服务器上运行jar包 1.3 使用postman测试 2.1 运行配置 2.1.1 命令更改端口 java -jar big-event-1.0-SNAPSHOT.jar --server.port=7777 2.1.2 环境变量更新(略) 2.1.3 外部配置文件,在jar包同目录下配置application.yml文件(略) 3.1 多环境开发(开发,测试

    2024年02月21日
    浏览(36)
  • Docker部署spring boot项目

    在docker部署时首先要保证一般部署能够访问。 目前主流的java框架为spring,软件包为jar包,只需以jar为基础构建容器环境。打包为jar后只需要jvm就可以运行,因此需要以jdk为镜像构建容器。 基于命令构建jdk环境 拉取openjdk镜像: docker pull openjdk:8 上传web文件,启动容器和web服务

    2024年02月03日
    浏览(38)
  • Spring Boot 项目应用消息服务器RabbitMQ(简单介绍)

    本章讲述的是在用户下单环节,消息服务器RabbitMQ 的应用 在写一个电商项目的小demo,在电商项目中,消息服务器的应用: 1、订单状态通知:当用户下单、支付成功、订单发货、订单完成等关键节点时,可以通过消息服务器向用户发送相应的订单状态通知。 2、消息推送:通

    2024年02月13日
    浏览(85)
  • Linux 部署Vue+Spring Boot项目

    部署Vue+ Spring Boot项目 输入客户端进行测试: 设置redis密码(临时方法,重启redis后密码会失效,需要重新设置): 需要永久配置密码的话就去redis.conf的配置文件中找到requirepass这个参数,如下配置: 修改redis.conf配置文件,requirepass foobared,requirepass 123 指定密码123,重启后就

    2024年02月16日
    浏览(49)
  • 【Spring Boot】使用Spring Boot进行transformer的部署与开发

    Transformer是一个用于数据转换和处理的平台,使用Spring Boot可以方便地进行Transformer的部署与开发。 以下是使用Spring Boot进行Transformer部署与开发的步骤: 创建Spring Boot项目 可以使用Spring Initializr创建一个简单的Spring Boot项目。在创建项目时,需要添加以下依赖: 编写Transforme

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包