部署SpringBoot项目到Linux并以Jar方式启动

今天用Python写了一个收集日志的系统,目的就是将每个服务器系统中的日志归总到本地。写了一天终于在本地服上测试完成了。可以将每个服务器id以及对应的过滤的日志都收集到本地,完美!

正要到Boss面前报告进度,并拿外网的用户名和密码来测试外网。Duang~ 访问禁止!What,不能用SSH的方式来访问外网服务器,这就尴尬了,那我能怎么操作呢?

思考一番,用请求的方式来操作吧。在每个服务器中部署一个进程,并访问这个进程去做外网服的数据归总。归总完毕之后将数据发送或者下载外网归总好的日志。好像也只有这一种方法了。因此就需要用到一个进程,SpringBoot的jar方式启动一个小小的进程的方式最合适不过了。

构建SpringBoot项目踩过的坑

第一个API无法访问

在这里插入图片描述
写了这个第一个API之后发现用localhost:8086/collectLog并不能访问
错误是@RequestMapping("collectLog")我忘记吧斜杠也写上导致。

补充好斜杠之后,发现还是不能访问。这就奇怪了,查找资料发现我的代码的位置有问题。Springboot自动扫描的地址是和启动类相同或者是启动类的下面包的路径,因此需要将包和类文件都放入到下图红色框的位置
在这里插入图片描述
通过上面的一通操作之后就可以访问到了。

打包部署到Linux中出错

nohup java -jar logsys.jar 命令启动jar方式

报错如下
在这里插入图片描述
原因是jarfile文件不对。

第一反应是打包不对吧,检查

在这里插入图片描述
最重要的是第四步将MANIFEST.MF中的文件信息放入到resource文件夹中,这样就会将依赖的包都打入到jar包中了。

重新打包mvn clean install 并上传到linux中我用的是rz,sz的方式

启动:还是报错

我检查了一下我的pom表,发现并没有内置tomcat,然后加上,最后的pom结构如下

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

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-loader -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-loader</artifactId>
            <version>2.3.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!--内置tomcat使用jar启动服务-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <version>2.1.6.RELEASE</version>
        </dependency>
    </dependencies>

    <!--项目打包-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

简单项目的结构如下
在这里插入图片描述

修改了之后,打包上传还是启动不来.

这就奇怪了,为什么啊?应该是没有地方出错了啊。最后我发现是我用rz的时候勾选了ASCII方式上传文件导致文件的格式不对
在这里插入图片描述

去掉后,正常上传文件!命令行nohub java -jar logsys.jar 启动并使用192.168.0.239:8086/collectLog访问成功返回hello。

查看是否已经启动起来 ps -ef | grep java 查看已经有一个进程在运行中了。

总结:

记录一次SpringBoot以Jar方式的启动,其中遇到了几个坑,不急,遵循以下几步即可

  1. 资料,因为你遇到的别人也肯定会遇到过。
  2. 想想原理,什么会导致项目不能按照预定的设想来走呢?
  3. 最后就是请教他人
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值