SpringBoot项目war包部署
服务部署
记录原因
将本地SpringBoot项目通过war包部署到虚拟机中,验证服务器部署。
使用war包是为了方便替换配置文件等。
工具
| 对象 | 版本 |
|---|---|
| Spring Boot | 2.4.0 |
| VMware Workstation Pro | 16 |
| Git | 2.9.4 |
| maven | 3.3.9 |
| JDK | jdk1.8.0_281 |
| Tomcat | 9.0.45 |
| Redis | 6.2.1 |
Tomcat版本需要与SpringBoot内置版本保存大版本上一致,否则会出现问题
虚拟机这里安装不赘述。
Git
进入虚拟机的
cd /usr/local/src目录,输入下载链接:wget https://www.kernel.org/pub/software/scm/git/git-2.9.4.tar.gz
解压缩
tar -zxvf git-2.9.4.tar.gz
安装编译Git时需要的包(一句一句执行)
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum install gcc perl-ExtUtils-MakeMaker
删除已有的Git
yum remove git
编译安装
进入根目录:cd /usr/local/src/git-2.9.4
安装到/usr/local/git目录:./configure --prefix=/usr/local/git
编译安装:make && make install
创建软链:
ln -s /usr/local/git/bin/* /usr/local/bin/
验证安装完成
git --version


maven
检查maven是否安装
mvn -v
在/usr/local/src目录下下载maven压缩包
wget https://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
解压压缩包
tar -zxvf apache-maven-3.3.9-bin.tar.gz
移动到/usr/local
mv apache-maven-3.3.9 /usr/local/maven3
配置环境变量
打开环境变量文件
profilevim /etc/profile
在最末尾添加环境变量
export MAVEN_HOME=/usr/local/maven3
export PATH=$MAVEN_HOME/bin:$PATH
tips:这里准备部分Linix 文本编辑命令
i 进入编辑模式-在光标所在位置开始输入
esc 退出编辑模式
:wq 退出编辑模式后进行文件保存并推出 更多 https://www.linuxprobe.com/linux-vim-commend.html
使配置生效
source /etc/profile
检查是否安装成功
mvn -v

JDK
检查是否安装
java -version
安装JDK时建议在本地下载好安装包之后使用winSCP等软件从本地上传到服务器中,注意一定要下载正确的版本(
jdk-8uxxx-linux-x64.tar.gz)。JDK下载地址如下:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
将下载好的JDK安装包上传到服务器的/usr/local/src目录下,上传完成后解压。
tar -zxvf jdk-8u201-linux-x64.tar.gz
将解压好的JDK移动到/usr/local下
mv jdk1.8.0_201 /usr/local
配置环境变量
进入配置文件
vim /etc/profile
在最后添加如下环境变量配置后保存并退出:
export JAVA_HOME=/usr/local/jdk1.8.0_201
export JRE_HOME=/usr/local/jdk1.8.0_201/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
使配置生效
source /etc/profile
验证安装
java -version

Tomcat
下载Tomcat到本级,通过filezilla等工具上传到
/usr/local中https://tomcat.apache.org/download-90.cgi#9.0.45
解压缩
tar -zxvf apache-tomcat-9.0.45.tar.gz
如果有强迫症,可删除压缩包
rm /usr/local/apache-tomcat-9.0.45.tar.gz
启动
sh /usr/local/apache-tomcat-9.0.45/bin/startup.sh
关闭
sh /usr/local/apache-tomcat-9.0.45/bin/shutdown.sh
实时日志查看
tail -500f /usr/local/apache-tomcat-9.0.45/logs/catalina.out
Redis
通过本地下载redis上传到服务器或直接在服务器下载。我是选择稳定版本下载,传到虚拟机上。
https://redis.io/download
解压缩
tar -zxvf redis-6.2.1.tar.gz
Yum安装gcc依赖,并编译安装redis
cd /usr/local/redis-6.2.1 yum install gcc
make MALLOC=libc
cd src && make install
启动redis(另外可将其配置成一个服务)
./redis-server

连接不同问题解决
ping ip
ip不同检查防火墙
虚拟机检查端口号是否开启
修改端口后需要重启防火墙服务才能生效
centos8 检查端口是否开启
firewall-cmd --query-port=8080/tcp
开启端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防火墙:
systemctl restart firewalld.service
这里
centos8与之前的版本端口号开启有差异。最开始虚拟机Tomcat起来后我windows访问8080端口不通,后根据这两步访问成功。
项目准备
如果是使用Idea构建一个新项目,可以在创建时选择打包方式,如果构建时选择的是jar包方式,则需要一些变动。
新项目
构建时选择打包方式为war包

Jar包项目
指的是打包方式为jar的项目。
打包时需要忽略内置Tomcat,本地运行时需要使用。因此本地运行时关闭注释。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--忽略内置tomcat容器-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
忽略内置Tomcat的同时,需要额外添加
servlet依赖<!--由于忽略内置tomcat容器,因此使用javax.servlet方法需要额外添加依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
添加war包名,忽略打包文件(可选)
<build>
<finalName>demo</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<!--打包时忽略自定义类配置提示工具-->
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
打包
提供两种方法。
- Idea 点击Bulid>Build Artifacts>选择 demo.war

使用maven的打包命令
mvn clean package

启动
- 将打包好的
war包通过filezilla等工具上传到虚拟机 tomcat下的webapp目录中

启动虚拟机上的Tomcat,并访问,请求得到响应即成功
http://192.168.xxx.xxx:8080/demo/
踩坑
Tomcat启动后,使用如下日志命令监控项目启动,出现问题直观明了。
tail -500f /usr/local/apache-tomcat-9.0.45/logs/catalina.out
不管项目本地配置的端口号、访问url是什么,部署到虚拟机上都是使用Tomcat的端口号加war包名,如
8080/demo/由于我访问的是本地数据库,因此需要修改项目配置文件中数据库地址,部署项目时报错
java.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect...
这是由于数据库服务器未给服务部署服务器访问权限,具体修改参考 https://blog.csdn.net/xionglangs/article/details/50385057
SpringBoot项目war包部署的更多相关文章
- springboot项目war包部署及出现的问题Failed to bind properties under 'mybatis.configuration.mapped-statements[0].
1.修改pom文件 修改打包方式 为war: 添加tomcat使用范围,provided的意思即在发布的时候有外部提供,内置的tomcat就不会打包进去 <groupId>com.scho ...
- springBoot 项目war包部署及改为war包后资源路径错误问题
参考资料: https://blog.csdn.net/rico_zhou/article/details/83415114 https://blog.csdn.net/pz641/article/d ...
- IDEA多模块父子依赖maven项目war包部署
IDEA多模块父子依赖maven项目war包部署 Posted on 2018-04-25 | In IDEA | | Visitors 286 IDEA全称为IntrlliJ IDEA,它是一款非常 ...
- 将Web项目War包部署到Tomcat服务器
1. 配置Java运行环境 1.1 下载并安装JDK 从官网上下载最新的JDK:http://java.sun.com/javase/downloads/index.jsp ,下载后安装,选择想把JD ...
- tomcat运行springboot项目war包
以最简单的spring boot demo项目来演示如何发布项目war包到tomcat,并成功运行(有很多小伙伴会出现404错误) 一.准备一个最简单的demo项目 在IDEA中新建一个项目,一直ne ...
- java web项目war包部署,使用tomcat对指定接口设置身份认证
先简单说一下需求: 将一个基于springboot2.0开发的java web项目打成war包,通过tomcat部署到一台linux服务器上,项目相关的一些图片等资源也按照一定规则放置在服务器构建好的 ...
- springboot打war包部署tomcat服务器,以及表单提交数据乱码处理
小白觉得springboot打成jar包直接使用内嵌的tomcat或jetty容器(java -jar xxx.jar)运行项目不利于定位问题,我还是习惯于查看tomcat或nginx的日志来定位问题 ...
- IntelliJ IDEA打包WAR并部署运行(mac osx)将Web项目War包部署到Tomcat服务器基本步骤(完整版)
用IntelliJ IDEA做web开发体验很好,但导出war包比eclipse麻烦了不少,以下是解决方案: 打包:1.自动打包:File —> Project Structure —> ...
- 将Web项目War包部署到Tomcat服务器基本步骤
参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html 1. 常识: 1.1 War包 War包一般是在进行Web ...
随机推荐
- NGK算力生态建设者狂欢!SPC之后又有VAST!
想致富,先挖矿.这句话已经成为了币圈的一句名言.挖矿一词始终贯穿着区块链以及数字加密领域. 据小道消息透露,NGK官最近将会推出两款挖矿产品---SPC星空币以及其子币VAST维萨币. 下面笔者就来一 ...
- 微信附近的人,用redis也能实现?(GEO)
相信微信附近的人的功能大家都应该用过 我可以很随意的通过我自己的定位能看到我附近的人,并且能看到那个人距离我的距离,大家有没有思考过这个是怎么实现的? 作为一个程序猿任何问题应该都有一个思考的过程,而 ...
- java中synchronized与Lock的异同
本文转载自java中synchronized与Lock的异同 前言 synchronized和Lock通过互斥保障原子性,能够保护共享数据以实现线程安全,其作用包括保障原子性.可见性.有序性 常见问题 ...
- JDK源码阅读-DirectByteBuffer
本文转载自JDK源码阅读-DirectByteBuffer 导语 在文章JDK源码阅读-ByteBuffer中,我们学习了ByteBuffer的设计.但是他是一个抽象类,真正的实现分为两类:HeapB ...
- MongoDB语句命令
更新列名 db.xx.update({}, {$rename : {"StoreId" : "MetaId"}}, false, true) 查询长度 db.g ...
- 玩遍博客网站,我整理了 Hugo 及其流行的风格主题
搭建博客网站是个人进入互联网世界的最常见方式之一.伴随着网站技术的发展,如何搭建博客网站已经变得非常容易了.当然,你可以选择诸如 新浪博客.CSDN.博客园 之类的大型网站,快速创建依赖于大平台的个人 ...
- Mybites学习
参考链接:https://www.cnblogs.com/dongying/p/4073259.html <select <!-- 1. id (必须配置) id是命名空间中的唯一标识符, ...
- css中a元素放长英文字母或者数字自动换行的解决
在做链接分享页面的时候遇到a元素中的下载链接长英文溢出不换行的问题 在给他以及他父元素设置宽度依然没有解决这个问题 最后解决办法给元素加上word-wrap:break-word 解释:使用break ...
- C#语言特性及发展史
本文按照C#语言的发展历史,介绍C#每个版本的新增特性,主要参考微软官方文档.了解这些语言特性可以帮助我们更高效的编写C#代码. C# 1.0 与Visual Studio .NET 2002一起发布 ...
- Codeblocks支持语法着色