SpringBoot项目部署到阿里云ESC并后台运行

准备

  1. SpringBoot项目
    在这里插入图片描述

其中,使用了Maven项目管理工具

  1. Linux

我的Linux发行版是CentOS 7 ,是阿里云服务器
学生“在线实践”计划,学生可以免费领6个月服务器—其实学生购买服务器也不贵,建议弄一个玩玩

  1. 远程连接Linux工具
    Xftp、Xshell挺好用的

Linux操作(1)基本操作 - 远程登录与用户管理


打包项目

我们知道SpringBoot内置了Tomcat,只需要打包成jar文件,在Linux上运行即可

如果是使用Maven管理项目,可以直接通过Maven打包,点击右边Maven Projects
,双击package就会自动打包
(Windows也可以使用cmd命令去Maven文件夹下打包)
在这里插入图片描述

可能会出现这个问题:

Running com.myblog.blog.BlogApplicationTests
Tests run: 3, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 0.002 sec <<< FAILURE! - in com.myblog.blog.BlogApplicationTests
initializationError(com.myblog.blog.BlogApplicationTests)  Time elapsed: 0.001 sec  <<< ERROR!
java.lang.Exception: The class com.myblog.blog.BlogApplicationTests is not public.

在这里插入图片描述

导致打包失败

在这里插入图片描述

这是Maven中少了maven-surefire-plugin组件

在build - > plugins标签下加上

扫描二维码关注公众号,回复: 10780747 查看本文章
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.18.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

这就是打包成功了
在这里插入图片描述

去你的项目下的target文件夹下可以找到jar文件,如我的地址是D:\JavaProject\blog\SpringBootBlog\target\blog-0.0.1-SNAPSHOT.jar

在这里插入图片描述

把这个jar包传输到Linux下


Linux运行

把jar包放到你想要运行的目录下

我放在了/opt/blog下
在这里插入图片描述

你需要在Linux下安装了jdk(需要运行jar项目)

注意:你的数据库是否放入了Linux中
毕竟SpringBoot在运行阶段就会校验数据库连接

注意:阿里云要设置安全组
在控制台左侧有安全组设置
在这里插入图片描述

点击配置规则

在这里插入图片描述
在这里插入图片描述
点击快速创建规则,需要改3个地方:
8080/8080安全组端口号(3306是Mysql服务器的端口号)
1优先级:优先级越小越高
0.0.0.0/0授权对象:允许所有IP访问
在这里插入图片描述

ok,设置好了优先级

运行jar项目:java -jar 项目名

在这里插入图片描述

springboot的图标就出来了(我把springboot图标改成NO BUG了)

运行可能会报错:

o.s.b.d.LoggingFailureAnalysisReporter   : 

***************************
APPLICATION FAILED TO START
***************************

Description:

The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured.

8080端口被占了

先检测一下端口号:netstat -tunlp |grep 8080

有一个进程占了我的8080端口

在这里插入图片描述

可以杀死这个进程:kill -9 2814
-9是强制杀死这个进程,2814是占了我端口的进程号

杀完后就8080就是空闲的了
在这里插入图片描述

再运行一次
在这里插入图片描述
ok,运行成功,通过公网IP访问一下项目(要是无法访问可能是防火墙的问题iptables、firewall)

在这里插入图片描述
因为是命令行界面,我们界面是SpringBoot的控制台
在这里插入图片描述

ctrl + c即可退出,返回
在这里插入图片描述

但问题就是,当我们退出时,SpringBoot就退出了
在这里插入图片描述
而我们想要的效果是,云服务器后台持续运行服务器


后台持续运行

可以写一个shell脚步完成

当前目录下创建一个startup.sh
在这里插入图片描述

vim startup.sh

命令就两行,第一行运行的时候不是注释,是指此脚本使用/bin/sh来解释执行,是解释器解释
第二行写自己jar文件的地址,我的是/opt/blog/blog-0.0.1-SNAPSHOT.jar

#!/bin/sh
nohup java -jar /opt/blog/blog-0.0.1-SNAPSHOT.jar &                                              

脚本编写完后,初始是没有运行权限的,还有设置权限chmod +x startup.sh赋予可执行权限

在运行shell脚本./startup.sh

后台运行,控制台信息会放到nohup.out中
在这里插入图片描述

再把Xshell关闭也可以使用SpringBoot中的项目


结语

项目最终还是要去部署到Linux下
还有,欢迎大家来我的个人博客参观

发布了121 篇原创文章 · 获赞 31 · 访问量 7869

猜你喜欢

转载自blog.csdn.net/key_768/article/details/105413813
今日推荐