mysql部署jar包_SpringBoot系列——jar包与war包的部署

前言

Spring Boot支持传统部署和更现代的部署形式。jar跟war都支持,这里参考springboot参考手册学习记录

两种方式

jar

springboot项目支持创建可执行Jar,参考手册第11.5. Creating an Executable Jar就有对这样的介绍,我这里充当一回搬运工(大家好,我是大自然勤劳的搬运工~~):

我们通过创建一个完全自包含的可执行jar文件来完成我们的示例,该文件可以在生产环境中运行。可执行jar(有时称为“胖jar”)是包含编译类和代码需要运行的所有jar依赖项的归档文件

要创建一个可执行jar,我们需要将spring-boot-maven-plugin添加到我们的pom.xml中。为此,在dependencies部分下面插入以下几行:

org.springframework.boot

spring-boot-maven-plugin

如果需要制定jar包名称、生成路径,以及跳过测试

org.springframework.boot

spring-boot-maven-plugin

${project.artifactId}

../package

org.apache.maven.plugins

maven-surefire-plugin

true

如果是在父类的pom文件进行统一管理,然后子类引入父类,这需要加pluginManagement标签

...

2019-08-23补充:之前打包都是一个多个工程管理,在父类的pom文件配置这个,打包会在目录下面生成,因为用的是../package

5286254edb32b95aef5827138a75a070.png

最近打包一个单独的项目,路径我改成package,没有../了,打包后并没有在项目下面生成package目录,jar不知道打去哪了。。。我全局搜也搜不出来

后面改成绝对路径F:/package,终于有jar包了,但文件名不对,我们明明设置读取的是${project.artifactId},但打出来还是带上了版本号。。。,原因暂时未知

PS:实在不行可以直接指定一个文件夹,例如:F:\package

39cffef2697a258ab77f55a7f7025ca9.png

可以使用命令行来打包,或者使用Maven Projects来打包

6b946efd477b4dd35e00464027e989c5.png

同时也可以直接使用下面命令进行打包

6a7da0d96d1cf1026d53c3f1da2fcde6.png

71fd295307e53c7adac4ef23cb6757cd.png

打包成功,在target目录下就会看到jar包

6a846acd8f319de16cc1800310bacc64.png

要运行该应用程序,cmd命令,进入到jar所在路径文件,使用 java -jar 命令;win下直接双击用java方式打开即可运行(Ctrl+C退出)

2e22a0c9526382168a30e413ff9a7b85.png

那么Linux下面如何部署运行呢?

=====Linux部署命令======

0、查看运行的项目

pgrep java | xargs ps1、先kill掉旧服务

pkill-f myspringboot-0.0.1-SNAPSHOT2、后台启动新服务(nohup后台运行,&后台运行的区别:

使用nohup运行程序:

结果默认会输出到nohup.out

使用Ctrl+C发送SIGINT信号,程序关闭

关闭session发送SIGHUP信号,程序免疫

使用&后台运行程序:

结果会输出到终端

使用Ctrl+C发送SIGINT信号,程序免疫

关闭session发送SIGHUP信号,程序关闭

)

nohup java-jar /home/myspringboot/myspringboot-0.0.1-SNAPSHOT.jar &

如需输出日志

nohup java-jar /home/myspringboot/myspringboot-0.0.1-SNAPSHOT.jar > /home/myspringboot/myspringboot-0.0.1-SNAPSHOT.log &3、查看日志

tail-f /home/myspringboot/myspringboot-0.0.1-SNAPSHOT.log

2019-07-08补充:

一、当我们打包后上传Linux服务器,发现有些代码还需要修改,重新打包、上传又比较慢,如果只是少量代码,并且是前端代码、配置文件等,那么我们可以直接修改jar包内容

1、先cd进到jar位置,然后使用 vim命令进入jar包

18ac83ae46587b9b3668a51446ca91f4.png

2、使用/ 命令模糊搜索定位文件,例如main.js

be2ed39b39432c125ad3269b96352c42.png

3、按回车进入文件,修改完成后使用 :wq保存退出文件,回到jar包目录,使用 :q 退出jar包,即可成功修改文件内容

PS:修改jar,重启生效

二、如果我们需要改动的是后端java代码,那么我就需要在本地改好后重新编译代码,把对应的java、class文件都替换到jar包

war

springboot项目支持创建一个可部署的War文件,参考手册第92.1 Create a Deployable War File就有对这样的介绍,我这里充当一回搬运工(大家好,我是大自然勤劳的搬运工~~):

由于Spring WebFlux并不严格依赖于Servlet API,并且应用程序默认部署在嵌入式反应器Netty服务器上,所以WebFlux应用程序不支持War部署。

生成可部署war文件的第一步是提供SpringBootServletInitializer子类并覆盖其配置方法。这样做可以利用Spring Framework的Servlet 3.0支持,让您在Servlet容器启动应用程序时配置它。通常,您应该更新应用程序的主类以扩展SpringBootServletInitializer,同时,要将Spring应用程序部署到外部服务器,必须确保servlet初始化器直接实现WebApplicationInitializer(即使是从已经实现它的基类扩展而来)。如下例所示:

@SpringBootApplicationpublic class MyspringbootApplication extendsSpringBootServletInitializer implements WebApplicationInitializer {

@OverrideprotectedSpringApplicationBuilder configure(SpringApplicationBuilder application) {return application.sources(MyspringbootApplication.class);

}public static voidmain(String[] args) {

SpringApplication.run(MyspringbootApplication.class, args);

}}

在创建springboot项目时,默认是jar包,如果是想要打成war包,需要修改pom.xml,打包方式跟生成路径跟jar的一样,过程的最后一步是确保嵌入的servlet容器不会干扰部署war文件的servlet容器。为此,需要将嵌入式servlet容器依赖项标记为所提供的。

war

org.springframework.boot

spring-boot-starter-tomcat

provided

org.springframework.boot

spring-boot-maven-plugin

c2b599e922fbb7097702b89c9f67e9b7.png

得到war包后把它丢到服务容器里(放在webapps文件夹下)run起来就行了,要注意的是使用了外部容器,要记得改Tomcat的端口,在server.xml的Connector节点

ebc3a0846d80ae0e0f251d3b5fcf008e.png

友情翻译:如果使用Spring引导构建工具,将嵌入的servlet容器依赖项标记为提供,将生成一个可执行的war文件,并将提供的依赖项打包在lib提供的目录中。这意味着,除了可以部署到servlet容器之外,还可以在命令行上使用java -jar运行应用程序。

后记

打成war包丢到服务器里面运行启动报错,还不知道是什么问题,都是照着参考手册来的...,先记录到这里;推荐直接使用jar的方式运行,war报错的原因,有空再去研究。

补充

2019-06-24补充:我将我们前面写的IM系统按照步骤打成war包,但启动Tomcat报错

ba2d6a6f3f50f94c48b24fc9970d4a72.png

2019-07-12补充,后面看文档后发现,我们漏了一下东西,如果使用Logback,还需要告诉WebLogic选择打包版本,而不是预先安装在服务器上的版本。而SpringBoot默认使用Logback,同时,之前我们也漏了 implements WebApplicationInitializer

999ec992bd9a29bea8f62e4a9bea1caa.png

将所有的东西都补全后还是报错...

2eb7ecaaa9927730d7b6e4b770d05406.png

51593b1c59ec93f4e6c46e64e1c03049.png

8874c4b843e8f5600760afa2f7a99f7f.png

上网查了一下,说两种问题:1、Tomcat问题,2、jar包问题

我们之前的Tomcat版本是apache-tomcat-7.0.53,去官网看来下,只支持6 and later(7 and later for WebSocket)

fb9ac1c35859c5344157e71fffd79b59.png

但我们项目用的jdk版本是1.8.0_131,需要9.0.x版的Tomcat才支持,直接下载最新版Tomcat

77a9abfe48b6011d84511d5dce4a9198.png

成功启动

a7c75ca209baa5ca62057919a4f4b31b.png

同时我们也注意到,springboot 2.x的内置Tomcat使用的是9.x

fdf99849f478272b0987acd5ed1a2503.png

PS:

1、由于使用外部服务器,我们在项目的配置文件配置的server.port=10081已经没有用了,端口信息需要咋Tomcat的server.xml进行配置

2、解决Tomcat中文乱码,修改conf/logging.properties

java.util.logging.ConsoleHandler.encoding = GBK

3、为了安全,webapps只保留项目文件

4、Tomcat的本质是文件夹,默认配置下访问项目要加war包名称,例如: :端口/war包名/路径

这是因为我们server.xml的host节点的默认appBase="webapps"

661879be52fe5c872493875d3cd18b8a.png

新增一个默认访问路径就可以不用加war包名称了,例如:

604addf4c6b9e07051a86e3c795f4bf7.png

然后就可以这样访问了

922ee02b9966ac908d1aa74346b4c4e8.png

到这里war包启动报错的问题终于解决!

2019-08-26补充:补充一下如何云安装java的jdk,以及mysql数据库,这里主要参考以下博客文章(亲测可用):

jdk

//查看是否已安装JDK,卸载

yum list installed|grepjava//卸载CentOS系统Java环境// *表时卸载所有openjdk相关文件输入

yum-y remove java-1.8.0-openjdk*

// 卸载tzdata-java

yum-y remove tzdata-java.noarch//列出java环境安装包

yum-y list java*

// 安装JDK,如果没有java-1.8.0-openjdk-devel就没有javac命令

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

使用 java -version 查看版本号确认是否安装成功

mysql

下载、安装

//下载

wget-i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm//安装

yum-y install mysql57-community-release-el7-10.noarch.rpm

yum-y install mysql-community-server

启动、配置

//启动

systemctl start mysqld.service//查看root初始密码grep "password" /var/log/mysqld.log

//使用root登录mysql

mysql-uroot -p//设置安全级别

set global validate_password_policy=0

//默认密码长度为8,可以设置为其它值,最小4位

set global validate_password_length=4

//修改root密码

ALTER USER'root'@'localhost' IDENTIFIED BY 'root';//可视化工具的登录授权:(如果授权不成功,请查看防火墙)

grant all on*.* to root@'%' identified by 'root';

配置到这里就可以使用数据库工具去连接操作数据库了

代码开源

代码已经开源、托管到我的GitHub、码云:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值