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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章