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

      • 打开环境变量文件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

  • 相关阅读:
    Qt读取JSON和XML数据
    IOS设计模式学习(19)策略
    Android学习笔记(二)之异步加载图片
    ETL-Career RoadMap
    HDU 1501 & POJ 2192 Zipper(dp记忆化搜索)
    CodeForces 242E
    推荐:室内定位API
    基于单片机的电子密码锁的实现
    [nagios监控] NRPE: Unable to read output 的原因及排除
    (ubuntu)在andorid andk工程中使用ccache加速编译速度
  • 原文地址:https://www.cnblogs.com/fjrgg/p/14668217.html
Copyright © 2020-2023  润新知