springboot的jar包部署教程
Posted 皓月天边 半步青莲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot的jar包部署教程相关的知识,希望对你有一定的参考价值。
springboot的打包方式有很多种。有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的。这里主要介绍如何打成jar进行部署。不推荐用war,因为springboot适合前后端分离,打成jar进行部署更合适。 首先需要在application.properties当中配置端口
1.pom.xml配置
<groupId>com.web.boot</groupId> <artifactId>demo</artifactId> <version>0.0.1</version> <!--默认为jar方式 --> <packaging>jar</packaging> <!--改为war方式 --> <!-- <packaging>war</packaging>-->
<build> <!-- 指定打包项目名称 --> <finalName>SpringBoot</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>${jdk.version}</source><!-- 指定jdk版本 --> <target>${jdk.version}</target> <encoding>${project.build.sourceEncoding}</encoding><!-- 指定编码版本 --> </configuration> </plugin> <!--该插件的主要功能是进行项目的打包发布处理 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.5.4.RELEASE</version> <configuration> <!--设置程序执行的主类,指定程序入口 --> <mainClass>com.web.boot.ApplicationStart</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal><!-- repackage将jar / war 重新打包为可执行文件--> </goals> </execution> </executions> </plugin> </plugins> </build>
项目右键 --> run as -->Maven build 出现如下界面
在Goals后面的框中输入打包命令:
clean package clean package -D maven.test.skip=true //不执行测试用例,也不编译测试用例类 clean package -D skipTests //不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。
确认打包:run
3.此时将形成“SpringBoot.jar”程序文件,并且这个文件里面包含有全部的依赖支持库文件。
4.将“SpringBoot.jar”文件随意拷贝到一个路径之中,例如:D盘,而后进入到命令行方式:java -jar SpringBoot.jar
5.执行完成之后,我们的服务就跑起来了,可以通过浏览器正常访问:
http://localhost:8200/SpringBoot/testcontroller/testfile
6.Linux下发布过程,如下:
6.1 (特殊情况)查看项目端口是否被占用,格式:
netstat -tunlp | grep 端口号
可以看到 8200 端口已经被轻 java 服务占用,PID(113670)
此种情况的解决办法有如下两种:
@A 使用kill命令结束占用端口的进程后继续布置项目,格式如:kill -9 PID @B 修改项目配置文件application.properties的端口配置,修改一个没被占用的端口,重新打包部署 @C 换一台没有占用此端口的服务器继续部署项目
6.2 项目已经部署过了,更新了项目内容后,重新部署替代之前的版本的项目,那么一般则分为以下三个步骤:
@A 结束上一个版本的进程,不然会冲突:kill -9 $(ps -aef | grep p1upgradeTask-0.0.1-SNAPSHOT.jar | grep -v grep | awk \'{print $2}\')
以下对此命令作解释
ps -aef | grep SpringBoot.jar //查询出我们部署的项目的信息(包含有grep本身的进程信息) 包含内容有:UID PID PPID C STIME TTY TIME CMD这几个选项 UID:用户ID PID:进程ID PPID:父进程ID C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高 STIME:进程启动的时间 TTY:完整的终端名称 TIME:CPU时间 CMD:完整的启动进程所用的命令和参数 其中的grep -v grep 是干啥的呢 ? 为了去除包含grep的进程行 ,避免影响最终数据的正确性 ,因为grep本身也是一个进程。 awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息 $2:表示第二个字段 print $2 : 打印第二个字段 awk \'{print $2}\' : 一行一行的读取指定的文件, 以空格作为分隔符,打印第二个字段
6.3 备份
mv SpringBoot.jar SpringBoot__`date \'+%Y-%m-%dT%H-%M-%S\'`.jar.backups
注意:“`” 重音符或抑音符,又称反单引号,是西文字符中的附加符号,主要用于计算机相关领域。位置在键盘中数字键“1”的左边,其上档符号是“~ ”,使用Shift键可以换挡输入。由于计算机显示的原因,反单引号非常容易和单引号 ‘ 混淆。
6.4 导入新版本的jar包
mv /opt/upfile/SpringBoot.jar SpringBoot.jar
这里说明以下,我提前把打好的jar包放入了/opt/upfile/目录下,这一步自己去做,方式有很多种,我用的“rz”命令,传入的。
6.5 防火墙开放端口,不然项目发布,外部是访问不到的
vi /etc/sysconfig/iptables
重启服务:service iptables restart
测试端口是否开通:Telnet 192.168.95.4 8200
6.6 项目发布
如果不需要输出日志,可以使用如下命令
后台无窗口发布:nohup java -jar SpringBoot.jar >/dev/null &
我们也可以手动指定一个参数来规定日志文件的输出地点,如:
后台无窗口发布:nohup java -jar SpringBoot.jar >nohup.out 2>&1 &
上面的2 和 1 的意思如下:
0 标准输入(一般是键盘)
1 标准输出(一般是显示屏,是用户终端控制台)
2 标准错误(错误信息输出)
将运行的jar 错误日志信息输出到nohup.out文件中,
然后(>&1)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行。
6.7 访问测试
http://192.168.95.4:8200/SpringBoot/testcontroller/testfile
以上是关于springboot的jar包部署教程的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot – 将项目代码与依赖jar包分开打包教程