通过Springboot登陆demo实战记录,我们做了一个Springboot的登陆demo。下一步我们想要实现的是将该项目发布到服务器上。 Springboot项目有两种发布方式,一种是Springboot默认的jar包方式发布,一种是传统的war包的方式。下面是将Springboot项目部署在服务器上的具体步骤。

1. 服务器环境部署

1.1 安装JDK

很明显,Springboot项目是使用java作为开发语言,所以你的服务器上一定要有JDK,才能够正常运行你的项目。

在oracal官网下载对应版本的JDK,这里使用的是JDK15。我们选择这种tar.gz格式的。

spring boot 服务不是长连接 springboot 服务器部署_spring boot 服务不是长连接

下载之后打开控制台,进入你的下载路径,使用$tar -zxvf jdk-15.0.2_linux-x64_bin.tar.gz 对其进行解压,解压后,你的下载路径中会多一个jdk-15.0.2的文件,说明解压成功。

1.2 配置环境变量

和Windows一样,JDK安装后,需要去配置环境变量。

使用命令$vim /etc/profile进行环境变量配置模块,光标滑到最后一行,输入I进入插入模式,另起一行输入:

export JAVA_HOME=/home/dell/下载/jdk-15.0.2 (根据自己的完整路径修改)

export PATH=spring boot 服务不是长连接 springboot 服务器部署_spring boot_02JAVA_HOME/bin:spring boot 服务不是长连接 springboot 服务器部署_linux_03PATH

export CLASSPATH=.:spring boot 服务不是长连接 springboot 服务器部署_java_04JAVA_HOME/jre/lib

复制粘贴后按ESC退出,另起一行输入wq!,回车退出

1.3激活环境

$source /etc/profile
$java -version

如果出现java版本信息,则环境变量配置成功。

2. 项目部署

2.1 jar包方式部署

这种方式是Springboot推荐且默认的,部署起来十分方便。

2.1.1 打包

在已经安装了maven且配置了环境变量的基础上,在IDEA的terminal中输入mvn clean package。即可对项目进行打jar包。(terminal的路径必须是你项目的根路径,其实最简单的办法就是关掉terminal,再打开,路径就是项目根路径。)

spring boot 服务不是长连接 springboot 服务器部署_spring boot 服务不是长连接_05

2.1.2 运行jar包

Springboot以Jar包方式部署十分简单,我们打好包之后,将jar包移动到linux机器上(我是通过QQ邮箱发送文件,再下载的方式),打开控制台,使用cd 命令进入你jar包存放位置,输入java -jar xxx.jar即可运行。

这种启动jar包的方式,启动之后,控制台便被锁定不能输入其他指令。并且控制台关闭,则服务也被关闭了。
如果想让该服务不受控制台关闭影响,可以使用下面的命令:
$nohup java -jar XXXXXX.jar &
表明忽略一切关闭信号。

2.2 war包方式部署

war包部署的方式就比较麻烦了,首先要更改pom.xml文件、还要下载和配置tomcat、更改启动类。

2.2.1 更改pom.xml文件

1)更改打包方式。Springboot默认是jar,在pom.xml中添加:

spring boot 服务不是长连接 springboot 服务器部署_spring boot_06


2) 移除Springboot自带的tomcat

spring-boot-stater-web依赖中添加以下内容:

<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>

还有一种方法也可以。这里使用的是这种方法。
3) 导入java servlet 容器依赖

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
        </dependency>

4)更改打包名字(随意)

这里默认是项目名,也可以更改。在build中添加final name标签。

<build>
        <finalName>denglu</finalName> #更改打包后的名字。默认为项目名字
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
2.2.2 修改启动类

让原来的启动类继承SpringBootServletInitializer,并且重写其中的configure方法。

@SpringBootApplication
@MapperScan(basePackages = "com.hky.springboot_login_register.mapper")
public class SpringbootLoginRegisterApplication extends SpringBootServletInitializer{

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
        return builder.sources(SpringbootLoginRegisterApplication.class);
    }
    public static void main(String[] args) { #原来启动类的Main函数,不用更改
        SpringApplication.run(SpringbootLoginRegisterApplication.class, args);
    }
}
2.2.3 打成war包

和上述打成jar包方式一样,不再赘述。

2.2.4 安装tomcat

因为Springboot项目内嵌的有tomcat,所以我们之前的程序可以直接运行,现在我们打war包之前,移除了tomcat依赖,所以我们需要在服务器上安装一个tomcat服务器来运行我们的项目。

下载tomcat

首先,去官网下载页面下载tar.gz格式的tomcat。

spring boot 服务不是长连接 springboot 服务器部署_spring boot_07

解压tomcat

控制台cd 进入tomcat压缩包下载位置,输入命令对其解压。

tar -zxvf 安装包全名

解压后,该目录下会有一个不带tar.gz后缀的tomcat文件,即表示解压成功。

spring boot 服务不是长连接 springboot 服务器部署_spring boot 服务不是长连接_08

运行tomcat

进入解压后的tomcat文件夹的bin目录下,通过终端输入 ./startup.sh 运行tomcat。

spring boot 服务不是长连接 springboot 服务器部署_spring boot 服务不是长连接_09


出现上面的界面表示运行成功,然后打开浏览器,输入localhost:8080进行测试,如果出现tomcat页面则表示启动成功。如果没有进入tomcat页面,那基本上是防火墙的问题,去关闭一下防火墙,或者让防火墙开放8080端口。

2.2.5 将war包移动到tomcat的webapps下

tomcat默认在webapps下存放项目,因此通过终端命令

sudo cp war包名 tomcat的webapps路径将其移动到webapps目录下。

2.2.6 配置server.xml

上述流程走完之后,我的程序还是无法运行,具体表现为可以访问tomcat页面,可以访问项目主页面,但是当项目进行跳转的时候,出现404错误。
这个问题困扰了我一天,我尝试了网上的各种方法,包括tomcat版本问题、防火墙问题、甚至是代码问题。
最后我发现 当我启动项目,进入主页面的时候,我的浏览器地址为

localhost:8080/项目名/主页面

当我进行跳转的时候,浏览器地址本应该变成

localhost:8080/项目名/某页面

但是却变成了localhost:8080/某页面

少了项目名,所以访问不到页面。

所以我更改了server.xml中的信息。具体操作如下:

1 .终端进入tomcat下的conf目录

2. 使用vim server.xml 命令对其进行编辑。

3. 输入I 进入编辑模式。

4. 找到Host标签,在其中插入子标签Context。

5.ESC退出编辑模式,输入 :wq ,回车退出。

spring boot 服务不是长连接 springboot 服务器部署_spring boot 服务不是长连接_10


path表示localhost:8080/后面加什么可以启动你的项目。

docBase表示你要启动的项目的路径。可以是绝对路径也可以是相对路径。

这样就不会报404了,总结一下,感觉报404的基本上就是项目路径,或者跳转路径的问题- - 。