Web項目部署到tomcat外部並配置其他端口訪問和無項目名


1.將項目的啟動類Application.java繼承SpringBootServletInitializer並重寫configure方法

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
 
import javax.servlet.MultipartConfigElement;
 
 
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
 
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
 
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

2.在pom.xml文件中,project下面增加package標簽

<packaging>war</packaging>

 

 

1:創建一個目錄:   /var/www

2:為將要部署的項目創建一個目錄, /var/www/my_project

3:將項目打成 war 包, 然后解壓到 /var/www/my_project

4:最終的目錄結構為:/var/www/my_project/WEB-INF,也即 WEB-INF 在項目名稱目錄之下

5:修改  TOMCAT_HOME/conf/ server.xml 文件找到 Host 標記,在其中添加如下子標記: 

    <Context path="" docBase="/var/www/my_project" reloadable="false" />

6:注意 Host 標記中的 appBase 屬性不要去修改,讓其為默認值 "webapps"

7:啟動 tomcat 打完收工

    第一個關鍵點:以上配置中項目是部署在了 TOMCAT_HOME/webapps 目錄之外的,這樣做是為了避免 tomcat 加載項目兩次的坑,因為配置文件中如果配置了該項目會被加載一次,而項目在 webapps 下面又會被自動重復加載一次,這個坑會引發一些莫名奇妙的問題,例如:老版本的tomcat中,多人同時登錄后session產生混亂,再例如:有些項目有定時任務,如果重復加載項目,那么定時任務也會被執行多次。所以記住第一點,永遠不要將項目放在 TOMCAT_HOME/webapps 目錄下面。

   第二個關鍵點:以上配置中的 Context 標記的 path 屬性一定要設置為 "" 而不是 "/",否則也會跳入一個坑。 docBase 屬性后面放項目名稱的絕對地址, windows 下則是類似於這樣的值: d:/www/my_project。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM