您的位置:首页 > 运维架构 > Linux

SpringBoot 部署到linux环境

2020-04-01 19:14 1136 查看

SpringBoot 项目部署到linux环境

参考文档:

https://blog.csdn.net/zeng_ll/article/details/80217788
https://www.cnblogs.com/kaile/p/10194362.html
https://blog.csdn.net/c1481118216/article/details/53010963

一、项目打包

1.1. 在pom.xml文件中添加springboot打包插件

<build>
<finalName>${project.artifactId}</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<!--是否替换资源中的属性-->
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.TopoStartApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>

</plugins>
</build>

1.2. 在代码目录使用 mvn clean package 打包

在指令窗口输入:mvn clean package

在target目录下可以看到生成的jar包

二、在windows系统执行
指令窗口执行: java -jar topo.jar

三、在linux系统执行
3.1. 上传jar包至linux服务器

3.2. 在linux服务器上运行Jar文件

$ java -jar topo.jar

这种方式特点是ssh窗口关闭时,程序中止运行.或者是运行时没法切出去执行其他任务,有没有办法让Jar在后台运行呢:
方法一:

$ nohup java -jar topo.jar 2>&1 &
//nohup 意思是不挂断运行命令,当账户退出或终端关闭时,程序仍然运行
//当用 nohup 命令执行作业时,缺省情况下该作业的所有输出被重定向到nohup.out的文件中
//除非另外指定了输出文件。

方法二:

$ nohup java -jar topo.jar > system.log 2>&1 &

//这种方法会把日志文件输入到你指定的文件中,没有则会自动创建

3.3 查看某端口占用的线程的pid: 可以看出当前端口占用的pid是101003

-bash-4.3$ netstat -nlp|grep 20011
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp        0      0 :::20011        :::*      LISTEN   101003/java
-bash-4.3$

3.4 通过pid可以查看当前程序运行情况
(1)查看linux中的当前java进程:

-bash-4.3$ jps
70483 SCS_ServerStart
70713 SCC_ClientStart
103690 Jps
18628 start.jar
101003 jar
-bash-4.3$

(2)查看java进程参数值:初始堆内存

-bash-4.3$ jinfo -flag InitialHeapSize 101003
-XX:InitialHeapSize=262144000
-bash-4.3$

(3)jstat
查看类装载信息:

-bash-4.3$ jstat -class  101003
Loaded  Bytes  Unloaded  Bytes     Time
10187 19399.0        1     1.0      11.09
-bash-4.3$

(4)查看线程内容:jstack PID

-bash-4.3$ jstack  101003

四、验证启动情况
在浏览器上访问验证(windows环境启动效果)

linux环境启动效果

五、FAQ

  1. 执行 java -jar topo.jar 启动过程中报错空指针

    通过错误可以看出获取对象Project为空

    查看初始化逻辑,获取文件路径失败。

    这种写法在eclipse中可以执行成功,但是在jar包中获取文件路径就失败了。
    原因是获取的文件路径只能到jar包,jar包的内部文件目录无法获取到。


解决方法
i).把该模版文件放到jar项目外,在项目中配置该模版文件的绝对路径,不太推荐这种方式,可能会忘记配置模版
ii.)通过 ClassPathResource resource = new ClassPathResource(“static/office_template/word_replace_tpl.docx”);方式读取
直接使用它的流方法

ClassPathResource resource = new ClassPathResource("conf/serverconf.yml");
File sourceFile = resource.getFile();
InputStream fis = resource.getInputStream();

  • 点赞
  • 收藏
  • 分享
  • 文章举报
桃花·心木 发布了2 篇原创文章 · 获赞 0 · 访问量 38 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: