服务部署

记录原因

将本地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
  • 配置环境变量

    • 打开环境变量文件profile

      vim /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

连接不同问题解决

  1. ping ip

    ip不同检查防火墙

  2. 虚拟机检查端口号是否开启

    修改端口后需要重启防火墙服务才能生效

    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包部署的更多相关文章

  1. springboot项目war包部署及出现的问题Failed to bind properties under 'mybatis.configuration.mapped-statements[0].

    1.修改pom文件 修改打包方式 为war: 添加tomcat使用范围,provided的意思即在发布的时候有外部提供,内置的tomcat就不会打包进去 <groupId>com.scho ...

  2. springBoot 项目war包部署及改为war包后资源路径错误问题

    参考资料: https://blog.csdn.net/rico_zhou/article/details/83415114 https://blog.csdn.net/pz641/article/d ...

  3. IDEA多模块父子依赖maven项目war包部署

    IDEA多模块父子依赖maven项目war包部署 Posted on 2018-04-25 | In IDEA | | Visitors 286 IDEA全称为IntrlliJ IDEA,它是一款非常 ...

  4. 将Web项目War包部署到Tomcat服务器

    1. 配置Java运行环境 1.1 下载并安装JDK 从官网上下载最新的JDK:http://java.sun.com/javase/downloads/index.jsp ,下载后安装,选择想把JD ...

  5. tomcat运行springboot项目war包

    以最简单的spring boot demo项目来演示如何发布项目war包到tomcat,并成功运行(有很多小伙伴会出现404错误) 一.准备一个最简单的demo项目 在IDEA中新建一个项目,一直ne ...

  6. java web项目war包部署,使用tomcat对指定接口设置身份认证

    先简单说一下需求: 将一个基于springboot2.0开发的java web项目打成war包,通过tomcat部署到一台linux服务器上,项目相关的一些图片等资源也按照一定规则放置在服务器构建好的 ...

  7. springboot打war包部署tomcat服务器,以及表单提交数据乱码处理

    小白觉得springboot打成jar包直接使用内嵌的tomcat或jetty容器(java -jar xxx.jar)运行项目不利于定位问题,我还是习惯于查看tomcat或nginx的日志来定位问题 ...

  8. IntelliJ IDEA打包WAR并部署运行(mac osx)将Web项目War包部署到Tomcat服务器基本步骤(完整版)

    用IntelliJ IDEA做web开发体验很好,但导出war包比eclipse麻烦了不少,以下是解决方案: 打包:1.自动打包:File —> Project Structure —> ...

  9. 将Web项目War包部署到Tomcat服务器基本步骤

    参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html 1. 常识:   1.1 War包 War包一般是在进行Web ...

随机推荐

  1. ASP.NET Core中如何对不同类型的用户进行区别限流

    老板提出了一个新需求,从某某天起,免费用户每天只能查询100次,收费用户100W次. 这是一个限流问题,聪明的你也一定想到了如何去做:记录用户每一天的查询次数,然后根据当前用户的类型使用不同的数字做比 ...

  2. 02.描述统计 (descriptive statistics)

    1.数据的可靠性和有效性 2.利用图表对数据进行可视化 2.1分类变量的可视化 2.11无序分类变量 2.12有序分类变量的可视化 2.1数值变量的可视化 数据的分布

  3. Python学习笔记_有关tuple的几点强调

    创建只有一个元素的tuple,需要用逗号结尾消除歧义 a_tuple = (2,) tuple中的list mixed_tuple = (1, 2, ['a', 'b']) print("m ...

  4. Python学习笔记_生成验证码

    import random def verification_code(): num = [str(x) for x in range(10)] # 列表生成器0-9 upper = [chr(x) ...

  5. 内核栈与thread_info结构详解

    本文转载自内核栈与thread_info结构详解 什么是进程的内核栈? 在内核态(比如应用进程执行系统调用)时,进程运行需要自己的堆栈信息(不是原用户空间中的栈),而是使用内核空间中的栈,这个栈就是进 ...

  6. Mysql之用户认证授权管理

    概述 Mysql的认证采用账号密码方式,其中账号由两个部分组成:Host和User:Host为允许登录的客户端Ip,User为当前登录的用户名. 授权没有采用典型的RBAC(基于角色的访问控制),而是 ...

  7. 【转载】Win10彻底格式化磁盘防止数据恢复的技巧

    转载地址 注意 要尽量删除数据,请在运行cipher /w时关闭其他所有应用程序. 1.如果你在格式化磁盘后想要防止数据被恢复, Format 命令,而现在只需在其后添加 /P 参数,即可用随机数据覆 ...

  8. 你见过老外的 Java 面试题吗(下)?

    前言 上一篇文章总结了 老外常见的 Java 面试题上,如果有感兴趣的同学可以点击查看,接下来补上下半部. 正文 finalize 方法调用了多少次 关于 finalize 总结了以下几点: fina ...

  9. Android Layout属性

    通用属性 android:layout_height android:layout_width 值 含义 fill_parent/match_parent 高度或者宽度对齐到父控件 wrap_cont ...

  10. 洛谷 P4747 [CERC2017]Intrinsic Interval 线段树维护连续区间

    题目描述 题目传送门 分析 考虑对于 \([l,r]\),如何求出包住它的长度最短的好区间 做法就是用一个指针从 \(r\) 向右扫,每次查询以当前指针为右端点的最短的能包住 \([l,r]\) 的好 ...