# Tomcat、將Spring Boot專案布置到外部Tomcat中、將tomcat部屬成windows服務 ## 介紹 Tomcat(Apache Tomcat)和其他Web應用程式容器(Web Application Containers)例如WildFly (先前稱為JBoss)、 IBM WebSphere Application Server(簡稱WebSphere AS或WAS)是IBM提供的一個企業級Java EE應用程式伺服器...等。 都是用於執行Java Web應用程式的軟體。 這些容器提供了一個環境,使得Java Web應用程式能夠在伺服器上運行,並處理HTTP請求。 ## 安裝 1. [官網](https://tomcat.apache.org/)下載tomcat: 2. 解壓縮或安裝 Tomcat。假設安裝完成後爲D:\apache-tomcat-9.0.50,具體情況與版本,請以使用者具體安裝路徑爲準。 3. 執行tomcat中bin資料夾裡的startup.bat。 **注意!如果使用tomcat10,至少要使用JDK17版本**,否則行tomcat中bin資料夾裡的startup.bat後,會自動關閉視窗,好像什麼事都沒發生。 可以先使用打開CMD輸入`java -version`確認當前JAVA版本 所以若是版本為1.8,請先到環境變數修改java home的位置改成使用JAVA17。 **或!讓tomcat自動配置java版本** **在bin這個資料夾中建立一個setenv.txt檔,輸入下面程式碼後,改副檔名為.bat檔案** 其實就是設置自己的java home與path位置,在執行startup.bat時會也自動執行你想要使用的JDK。 ``` set JAVA_HOME=C:\Java\OpenJDK\17\jdk-17 set PATH=C:\Java\OpenJDK\17\jdk-17\bin;%PATH% ``` 第二:到`Tomcat 10.1\conf`中修改`tomcat-users.xml`裡面設定帳號密碼 ``` <role rolename="manager-gui"/> <user username="tomcat" password="tomcat" roles="manager-gui"/> ``` 4. 在瀏覽器中輸入地址`http://localhost:8080`,出現 Tomcat 歡迎頁面則說明配置成功。 5. 將war包放到wabapps資料夾,再次啟動tomcat,會自動解開war包,部屬到tomcat中。 6. 再次輸入進入tomcat頁面,右邊有個manager點進去可以看到部屬的wabapp,直接點連結就會進入網站。 如果此時要輸入帳號密碼,就是你在tomcat-users.xml中設置的使用者名稱、權限及密碼。 # Spring Boot專案布置到外部Tomcat 要將springboot專案部署到獨立的 Tomcat 容器中,必須做出以下調整,總共3個步驟: 1. 調整套用 @SpringBootApplication 的類別 (DemoApplication.java) 原本標註 @SpringBootApplication 的主程式,**必須修改成繼承 SpringBootServletInitializer 類別**: ```java package com.duotify.app1; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } ``` 2. 調整 pom.xml 並修改 Packaging 格式為 war 3. 調整 pom.xml 並加入 spring-boot-starter-tomcat 相依套件,並將 `<scope>` 設定為 provided 此時使用maven打包就會排除掉tomcat,再將war檔案放到wabapps資料夾中,啟動tomcat即完成。 ## 將tomcat部屬成windows服務 使用tomcat 10以上版本 使用cmd進入tomcat的bin資料夾,輸入service.bat install後就會安裝到windows服務中 ``` cd tomcat\bin service.bat install ``` 移除windows服務 ``` tomcat10 //DS//Tomcat10 如果要移除7就是 tomcat10 //DS//Tomcat7 又或是 sc delete 「windows服務名稱」 ``` ## 參考資料 https://help.fanruan.com/finereport-tw/doc-view-4419.html https://blog.miniasp.com/post/2022/09/21/How-to-deploy-Spring-Boot-to-Apache-Tomcat