linux机器上如何部署spring boot

最近在捣鼓spring这套东东,需要部署一套springboot环境在linux上做研究,由于是纯小白,之前从来未接触过这块,先根据度娘搜到的信息扫个盲

1. 什么是Spring呢?
Spring是一个轻量级Java开发框架,最早由Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Java应用程序提供全面的基础架构支持。Spring负责基础架构,因此Java开发者可以专注
于应用程序的开发。简而言之,Spring是一个JAVA框架,简化了JAVA开发。 说白了Java框架就是封装好方便程序员操作的类,使项目的开发更简单,维护起来也更容易。 2. Spring Boot SpringBoot就是为了解决Spring缺点而生的,主要是简化了使用 Spring 的难度,节省了繁重的配置,开发者能够快速上手。 SpringBoot的核心功能有两个,起步依赖,自动配置,也就是他的默认配置; 起步依赖就是将具备某种功能的坐标打包到一起, 并解决了Spring的jar包冲突问题。 自动配置就是SpringBoot在底层给我们自动做了一些配置,所以springboot项目不编写配置文件也可以正常运行,但是根据我们的具体开发需要修改SpringBoot自动配置的默认值 3. Maven Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。当然这很宽泛,但在使用Maven的过程中,依赖管理这个点比较好理解,因为在制作之后的jar或者war包中存在了许多的jar,而这些jar并没有存在由maven构建的项目lib包中。想要理解Maven服务于Java平台的项目构建,举例说明 例如:两个项目A B,项目A需要依赖一些jar包,项目B也需要依赖这些jar包,那么此时如果都把jar包引入到项目中,就是在重复造轮子,我们应该把这些所有的jar包放到一个地方,需要用的时候过去取即可。 简而言之就是统一开发规范与工具。统一管理jar包。Spring Boot工程本质上就是一个Maven工程。 4. SpringCloud Spring Cloud事实上是一整套基于Spring Boot的微服务解决方案,它为开发者提供了很多工具,用于快速构建分布式系统的一些通用模式,例如:配置管理、注册中心、服务发现、限流、网关、链路追踪等。 综上所述 SpringBoot 是一个抽象的工具集,做出来的东西是一个应用或者组件,也就是单体应用 SpringCloud 以一种叫做微服务的方式组织的,应用的集合,是个虚拟概念。

好了,下面开始环境部署,这里使用的环境是Linux Centos7.8

springboot有自己的官方文档:http://felord.cn/_doc/_springboot/2.1.5.RELEASE/_book/  

 官方文档是从英文翻译过来的,还是有很好的参考价值的。

 

前置条件:需要先安装java(jdk)

注:java版本不能低于1.6,建议使用最新的java版本

一、cli方式安装
1. 直接下载springboot_release包 https://repo.spring.io/release/org/springframework/boot/spring-boot-cli/1.5.9.RELEASE/spring-boot-cli-1.5.9.RELEASE-bin.zip
2. 拷贝到linux环境
3. 按照解压缩归档文件中的 INSTALL.txt 说明进行操作

说明:这里由于自己是纯小白,所以试了下这里最简单的部署方法,cli安装方法确实很简单,就是将压缩包解压,然后将bin路径添加到系统环境变量就好了,接着就可以执行spring了,但后面按照官方文档写了个demo进行测试时报错,应该是依赖没处理好

 

 此处没有深究,换了通过maven的方式进行部署


二、maven方式部署

如果还没有安装 Maven,可以到 maven.apache.org 上按照说明进行操作。

maven安装具体步骤如下:
1. 下载压缩包  https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.zip
2. 将zip文件上传到linux机器, 解压缩
3. 将mvn所在bin路径加入到系统PATH目录下:export PATH=/opt/apache-maven-3.6.3/bin:$PATH

4. 打开终端检查是否安装了符合要求的 Java 版本和 Maven 版本

$ java -version
java version "11.0.5" 2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.5+10-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.5+10-LTS, mixed mode)
$ mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /opt/apache-maven-3.6.3
Java version: 11.0.5, vendor: Oracle Corporation, runtime: /usr/java/jdk-11.0.5
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1127.el7.x86_64", arch: "amd64", family: "unix"

 注:这里安装完maven后建议将镜像源修改为阿里的镜像源,

vi maven/conf/setting.xml,添加如下内容:

<mirrors>
    <mirror> 
      <id>alimaven</id> 
      <name>aliyun maven</name>   
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
      <mirrorOf>central</mirrorOf> 
   </mirror>
</mirrors>

 

到这里安装已经结束,接下来开始部署第一个Spring Boot应用啦,这里将使用 Java 开发一个简单的 Hello World! web 应用程序,以便体现 Spring Boot 的一些关键特性,使用 Maven 构建该项目。

 

注:以下步骤我是在/opt/apache-maven-3.6.3这个目录下进行操作的,仅作参考

1. 创建文件夹 mkdir www,进入该目录
2. 我们先要创建一个 Maven pom.xml 文件。pom.xml 是用于构建项目的配方。

加入以下内容,这里Spring Boot 依赖使用到了 org.springframework.boot  groupId

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>0.0.1-SNAPSHOT</version>
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent>
<!-- Additional lines to be added here... --> </project>

 

3. 运行mvn package生成一个工作版本  <这里也可以将打包后产生的项目导入 IDE(大部分的现代 Java IDE 都内置 Maven 支持)。简单起见,我就没用IDE了,继续使用纯文本编辑器。>

4. 添加Classpath依赖,这里因为开发的是web应用,需要添加一个对应的web应用依赖,编辑pom.xml,在parent下方添加如下内容

    <dependencies>
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
      </dependency>
    </dependencies>

 

5. 编码,要完成我们的应用,需要创建一个Java文件,默认情况下,Maven 将从 src/main/java 目录下编译源代码,因此需要创建该文件夹结构,之后添加一个名为 src/main/java/Example.java 的文件:

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

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

}

6. 运行应用

此时,我们的应用应该是可以工作了。由于使用了 spring-boot-starter-parent POM,因此可以使用 run 来启动应用程序。在根目录下输入 mvn spring-boot:run 以启动应用:

 

 7. 注意:这里是使用springboot内嵌的tomcat启动的。默认启动端口是8080,如果此端口被其他程序占用,会导致程序无法起来,需要修改端口,修改方法如下:

在src/main文件夹下新建resources文件夹,在src/main/resources文件夹下新建application.properties文件,往文件写入server.port=8083  <注意:端口号8083仅作参考>

8. 验证结果,如果是本地环境,用浏览器打开 localhost:8080,应该会看到以下输出,如果是虚拟机等环境,访问虚拟机IP:8080即可

 9. 创建可执行jar,上面的测试程序只能在测试环境中运行,生产环境上不能这样玩,这里需要将它转化为jar包通过java来运行,要创建可执行 jar,需要将 spring-boot-maven-plugin 添加到 pom.xml 文件中。在 dependencies 下方插入以下配置:

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

 保存 pom.xml 并在命令行中运行 mvn package

 

 10. 生成的jar包文件在target目录下:

 

 想要查看里面的内容,可以使用 jar tvf

$ jar tvf target/myproject-0.0.1-SNAPSHOT.jar

 

使用 java -jar 命令运行该应用:

好了,一个最简单的springboot web应用部署流程到这里基本就已经结束了

posted @ 2021-02-25 18:33  LuckyOven  阅读(1029)  评论(0)    收藏  举报