SpringBoot项目部署到Linux服务器过程记录

 

基于SpringBoot的微服务开发完之后,现在我们可以将它发布并部署到服务器环境中去运行了。(Linux服务器配置可参考文章:https://blog.csdn.net/weixin_41633941/article/details/105376774)

一.SpringBoot项目打包前配置

1.首先对pom.xml文件进行配置。

SpringBoot项目部署到Linux服务器过程记录_第1张图片

 

解析:

1.可解决运行Maven是报错:No goals have been specified for this build的问题,可理解为未指定maven执行到生命周期具体哪个阶段。compile意思将执行maven的所有阶段。(选填,我在别的项目中没有报此错误)

compile

2.让maven把src/main/resources下的所有文件进行打包。让maven将src/main/java下所有xml配置文件进行打包。


    
        src/main/resources
        
            **/**
        
    
    
    <-- 以下选填 -->
    
        src/main/java
              
            **/*.xml
        
    

3.此处指定main方法入口的class,解决未找到主类的问题。相当于指定主类的全限定类名。

com.System.Recruitment.主类类名

4.导入外部引入的jar并进行打包。(非maven管理的jar包)

true

tips:如果项目中存在外部引用jar包,可以参考文章https://www.jb51.net/article/130449.htm

5.项目中有test测试类时在maven打包过程中也会进行运行和测试,出错会导致打包异常,可以选择跳过。

true

另外的一个pom配置小细节,代码大意是让项目打包和输出过程使用UTF-8编码。习惯了打包过程都使用UTF-8编码,不知道不使用会怎么样,下次可以试一下,我猜可能会出现打包后jar源码里中文解释乱码的情况。

    
        UTF-8
        UTF-8
        1.8
        3.1.1
    

SpringBoot项目部署到Linux服务器过程记录_第2张图片

2.修改SpringBoot启动类(选填部分)

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

@SpringBootApplication
public class GcudepartApplication extends SpringBootServletInitializer{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(GcudepartApplication.class);
    }
    public static void main(String[] args) {
        SpringApplication.run(GcudepartApplication.class, args);
        System.out.println("Start the work!");
    }
}

为什么说这部分为选填部分呢,因为当我们想要将项目打包成WAR包和使用外置WEB容器时,这段代码是必须要实现的。所以当我们打包成jar和使用内置web容器时这段代码是非必要的。而SpringBootServletInitializer类就是完成这项工作,若有兴趣可以分析此类的源码。

 

其实配置到这一步的时候,maven就可以将SpringBoot项目打包成jar包了。但如果想要正常运行到Linux服务器上还是需要进一步对项目进行配置。

3.配置静态访问资源

@Configuration
public class MyResourceConfigurer implements WebMvcConfigurer {
    /**
     * 配置静态访问资源
     * 
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //registry.addResourceHandler("/images/**").addResourceLocations("file:E:\\Recruiment\\images\\");
        registry.addResourceHandler("/images/**").addResourceLocations("file:/usr/local/webapp/images/");
    }
}

同时将项目中访问开发环境地址资源的改为部署环境的地址资源。

二、利用maven打包项目

当一切准备完毕之后我们利用maven对项目进行打包

以eclipse开发工具为例:

1.maven clean 

2.maven install

SpringBoot项目部署到Linux服务器过程记录_第3张图片

按如图顺序进行打包。打包完毕后从项目路径的target目录下找到jar包,修改application.preperties文件

配置application.properties

1.因为HTTP的默认端口号是80,而我们SpringBoot项目内置的Tomcat默认是8080端口,所以在要部署的项目上的application.properties当中配置80端口。

2.同时如果使用了thymeleaf模板引擎记得把开发环境中,模板缓存关闭状态改回打开。

3.修改数据库账号密码

4.修改redis账号密码

5.修改log日志保存地址

server.port=80
spring.thymeleaf.cache=true

logging.file=/usr/local/log/rec_logger.log

 

三.上传jar包,上传数据库数据,上传本地资源文件

1.利用navicat等数据库工具远程连接数据库

首先在服务器上创建需要使用到的数据库,再执行转存的sql文件

2.使用winscp等工具将所需要的所有文件上传到Linux服务器上

SpringBoot项目部署到Linux服务器过程记录_第4张图片

四.运行SpringBoot项目

cd到项目的目录中使用下属关键命令:

ps -ef | grep java                      查看进程

kill -9 进程号                             杀死进程

nohup java -jar xxx.jar &           后台启动jar包

 

五测试项目

输入服务器的域名或者外网地址

SpringBoot项目部署到Linux服务器过程记录_第5张图片

成功打开项目,测试成功!

 

注意

1.关于云服务器的25端口

由于项目需要用到连接第三方SMTP服务器需要用到TCP25端口,而腾讯云服务器的默认关闭25端口,所以需要手动去申请25端口解封。详情查看腾讯云文档,https://cloud.tencent.com/document/product/213/40436。还好在部署项目前提前看一些相关文档,不然项目SMTP功能就无法使用,甚至被禁用了。且该功能只开放给年费预付服务器用户 0.0

解封过程:

SpringBoot项目部署到Linux服务器过程记录_第6张图片

2.JRE?JDK?

在用eclipse的maven打包过程中遇到了一个错误提示。

[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

它的意思是我的java环境未提供编辑器,可能我的运行环境是JRE而不是JDK。后来我检查系统的JAVA_HOME配置才发现我一直在使用jre在开发编程。天呐,原来我在之前重装系统的时候配错了,不过那时候还多配了一个版本JDK,最后通过我直接修改JAVA_HOME路径和开发工具的JDK版本后,此问题解决。


下面列出百度出来的JRE和JDK的定义:

JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。

JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提 供了JVM和Runtime辅助包,用于解析class文件使其得到运行)。如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运 行Java程序的平台。JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库 (rt.jar)。

你可能感兴趣的:(Linux服务器,SpringBoot)