Windows 服務操作指南
目錄
Tomcat 監視應用程式
Tomcat10w 是用於監控和設定 Tomcat 服務的 GUI 應用程式。
命令列指令
每個命令列指令的格式為 //XX[//服務名稱]
如果省略 //服務名稱
元件,則服務名稱會假設為檔案名稱減去 w 字尾。因此,預設服務名稱為 Tomcat10
。
可用的命令列指令如下
//ES | 編輯服務設定 | 這是預設作業。如果未提供選項,就會呼叫它。啟動 GUI 應用程式,讓你可以修改、啟動和停止服務設定。 |
//MS | 監控服務 | 啟動 GUI 應用程式,並將它最小化到系統匣。 |
//MR | 監控並執行服務 | 啟動 GUI 應用程式,並將它最小化到系統匣。如果服務目前未執行,則啟動它。 |
//MQ | 監控結束 | 停止服務的任何執行中監控。 |
Tomcat 服務應用程式
Tomcat10 是用於以 Windows 服務執行 Tomcat 10 的服務應用程式。
命令列指令
每個命令列指令的格式為 //XX[//服務名稱]
可用的命令列指令如下
//TS | 以主控台應用程式執行服務 | 這是預設作業。如果未提供選項,就會呼叫它。ServiceName 是可執行檔的名稱,不含 exe 字尾,也就是 Tomcat10 |
//RS | 執行服務 | 僅從 ServiceManager 呼叫 |
//ES | 啟動 (執行) 服務 | |
//SS | 停止服務 | |
//US | 更新服務參數 | |
//IS | 安裝服務 | |
//DS | 刪除服務 | 如果服務正在執行,則停止它 |
//PS | 列印服務 | 列印命令,以 (重新) 建立目前的設定 |
//PP[//seconds] | 暫停服務 | 預設為 60 秒 |
//VS | 版本 | 列印版本並結束 |
//? | 說明 | 列印用法並結束 |
命令列參數
每個命令列參數都加上 --
字首。如果命令列參數加上 ++
字首,而且參數支援多個值,則它的值會附加到現有選項。下表中,支援多個值的參數都加上 ++
字首。
如果環境變數與命令列參數同名,但加上 PR_
字首,則它會優先。例如
set PR_CLASSPATH=xx.jar
等同於提供
--Classpath=xx.jar
做為命令列參數。
參數名稱 | 預設值 | 說明 |
---|---|---|
--Description | 服務名稱說明 (最多 1024 個字元) | |
--DisplayName | ServiceName | 服務顯示名稱 |
--Install | procrun.exe //RS//ServiceName | 安裝映像 |
--啟動 | 手動 | 服務啟動模式可以是自動或手動 |
++依賴 | 此服務所依賴的服務清單。依賴服務使用#或;字元分隔 | |
++環境 | 將以金鑰=值形式提供給服務的環境變數清單。它們使用#或;字元分隔。如果您需要在值中使用#或;字元,則必須將整個值用單引號括起來。 | |
--使用者 | 用於執行可執行檔的使用者帳戶。它僅用於 StartMode java 或 exe,並允許在沒有 LogonAsService 權限的帳戶下以服務身分執行應用程式。 | |
--密碼 | --User 參數設定的使用者帳戶密碼 | |
--服務使用者 | 指定服務應在其中執行的帳戶名稱。使用格式為網域名稱\使用者名稱 的帳戶名稱。服務程序將以這個使用者身分登入。如果帳戶屬於內建網域,您可以指定.\使用者名稱 。請注意,服務控制管理員不接受標準名稱的在地化形式,因此若要使用它們,您需要視情況指定NT Authority\LocalService 、NT Authority\NetworkService 或LocalSystem 。 |
|
--服務密碼 | --ServiceUser 參數設定的使用者帳戶密碼 | |
--程式庫路徑 | 目錄新增至用於尋找 JVM 的 DLL 的搜尋路徑。此目錄新增至PATH 環境變數之前,並作為SetDLLDirectory 函數的參數。 |
|
--JavaHome | JAVA_HOME | 設定不同於 JAVA_HOME 環境變數所定義的 JAVA_HOME |
--Jvm | 自動 | 使用自動(即從 Windows 登錄檔中尋找 JVM)或指定jvm.dll的完整路徑。您可以在這裡使用環境變數擴充。 |
++JvmOptions | -Xrs | -D或-X形式的選項清單,將傳遞給 JVM。選項使用#或;字元分隔。如果您需要嵌入#或;字元,請將它們放在單引號內。(在exe模式中未使用。) |
++JvmOptions9 | -D或-X形式的選項清單,在 Java 9 或更新版本上執行時將傳遞給 JVM。選項使用#或;字元分隔。如果您需要嵌入#或;字元,請將它們放在單引號內。(在exe模式中未使用。) | |
--Classpath | 設定 Java classpath。(在 exe 模式中未使用) | |
--JvmMs | 初始記憶體池大小 (單位:MiB)。(在 exe 模式中未使用) | |
--JvmMx | 最大記憶體池大小 (單位:MiB)。(在 exe 模式中未使用) | |
--JvmSs | 執行緒堆疊大小 (單位:KiB)。(在 exe 模式中未使用) | |
--StartMode | jvm、Java 或 exe 之一。模式如下:
|
|
--StartImage | 將執行的可執行檔。僅適用於 exe 模式。 | |
--StartPath | 啟動映像可執行檔的工作路徑。 | |
--StartClass | Main | 包含啟動方法的類別。適用於 jvm 和 Java 模式。(在 exe 模式中未使用) |
--StartMethod | main | 如果方法名稱不同於 main |
++StartParams | 傳遞給 StartImage 或 StartClass 的參數清單。參數使用 # 或 ; 字元分隔。 | |
--StopMode | jvm、Java 或 exe 之一。有關詳細資訊,請參閱 --StartMode。 | |
--StopImage | 在停止服務訊號上執行的可執行檔。僅適用於 exe 模式。 | |
--StopPath | 停止映像可執行檔的工作路徑。不適用於 jvm 模式。 | |
--StopClass | Main | 在停止服務訊號上使用的類別。適用於 jvm 和 Java 模式。 |
--StopMethod | main | 如果方法名稱不同於 main |
--StopParams | 傳遞給 StopImage 或 StopClass 的參數清單。參數使用 # 或 ; 字元分隔。 | |
++StopTimeout | 無逾時 | 定義 procrun 等待服務正常結束的逾時時間 (單位:秒)。 |
--LogPath | %SystemRoot%\System32\LogFiles\Apache | 定義記錄路徑。必要時建立目錄。 |
--LogPrefix | commons-daemon | 定義服務記錄檔檔名字首。記錄檔會建立在 LogPath 目錄中,並加上 .YEAR-MONTH-DAY.log 字尾 |
--LogLevel | 資訊 | 定義記錄等級,可以是 錯誤、資訊、警告 或 偵錯。(不分大小寫) |
--LogJniMessages | 0 | 將此值設為非零(例如 1)以在 ProcRun 日誌檔中擷取 JVM jni 偵錯訊息。如果已使用 stdout/stderr 重新導向,則不需要此值。僅適用於 jvm 模式。 |
--StdOutput | 重新導向的 stdout 檔名。如果命名為 auto,則會在 LogPath 內建立檔案,檔名為 service-stdout.YEAR-MONTH-DAY.log。 | |
--StdError | 重新導向的 stderr 檔名。如果命名為 auto,則會在 LogPath 內建立檔案,檔名為 service-stderr.YEAR-MONTH-DAY.log。 | |
--PidFile | 定義用於儲存執行中程序 ID 的檔案名稱。實際檔案會建立在 LogPath 目錄中 |
安裝服務
手動安裝服務最安全的方法是使用提供的 service.bat 指令碼。執行此指令碼需要管理員權限。如有必要,您可以使用 /user
開關指定用於安裝服務的使用者。
注意: 如果啟用使用者帳戶控制 (UAC),則當指令碼啟動 'Tomcat10.exe' 時,系統會要求您提供其他權限。
如果您要將其他選項傳遞給服務安裝程式作為 PR_*
環境變數,您必須在作業系統中設定它們,或啟動程式並使用提升的權限設定它們(例如,右鍵按一下 cmd.exe 並選取「以系統管理員身分執行」;在 Windows 8(或更新版本)或 Windows Server 2012(或更新版本)中,您可以按一下「檔案」功能表列,從檔案總管為目前目錄開啟提升的命令提示字元。請參閱問題 56143 以取得詳細資訊。
Install the service named 'Tomcat10'
C:\> service.bat install
有一個第二個選用參數,讓您可以指定服務的名稱,如 Windows 服務中顯示的名稱。
Install the service named 'MyService'
C:\> service.bat install MyService
當以非預設名稱安裝服務時,tomcat10.exe 和 tomcat10w.exe 可能會重新命名,以符合所選的服務名稱。若要執行此動作,請使用 --rename
選項。
Install the service named 'MyService' with renaming
C:\> service.bat install MyService --rename
如果使用 tomcat10.exe,您需要使用 //IS 參數。
Install the service named 'Tomcat10'
C:\> tomcat10 //IS//Tomcat10 --DisplayName="Apache Tomcat 10" ^
--Install="C:\Program Files\Tomcat\bin\tomcat10.exe" --Jvm=auto ^
--StartMode=jvm --StopMode=jvm ^
--StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start ^
--StopClass=org.apache.catalina.startup.Bootstrap --StopParams=stop
更新服務
若要更新服務參數,您需要使用 //US 參數。
Update the service named 'Tomcat10'
C:\> tomcat10 //US//Tomcat10 --Description="Apache Tomcat Server - https://tomcat.dev.org.tw/ " ^
--Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
如果您已為服務提供選用名稱,您需要像這樣指定它
Update the service named 'MyService'
C:\> tomcat10 //US//MyService --Description="Apache Tomcat Server - https://tomcat.dev.org.tw/ " ^
--Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
移除服務
要移除服務,您需要使用 //DS 參數。
如果服務正在執行,它將會停止然後刪除。
Remove the service named 'Tomcat10'
C:\> tomcat10 //DS//Tomcat10
如果您已為服務提供選用名稱,您需要像這樣指定它
Remove the service named 'MyService'
C:\> tomcat10 //DS//MyService
偵錯服務
要在主控台模式中執行服務,您需要使用 //TS 參數。可以透過按下 CTRL+C 或 CTRL+BREAK 來啟動服務關閉。如果您將 tomcat10.exe 重新命名為 testservice.exe,那麼您可以直接執行 testservice.exe,而這個指令模式將會預設執行。
Run the service named 'Tomcat10' in console mode
C:\> tomcat10 //TS//Tomcat10 [additional arguments]
Or simply execute:
C:\> tomcat10
多個執行個體
Tomcat 支援安裝多個執行個體。您可以安裝單一的 Tomcat,並在不同的 IP/port 組合上執行多個執行個體,或安裝多個 Tomcat 版本,每個版本在不同的 IP/port 上執行一個或多個執行個體。
每個執行個體資料夾需要下列結構
- conf
- logs
- temp
- webapps
- work
至少,conf 應包含下列檔案的副本,這些檔案來自 CATALINA_HOME\conf\。任何未複製和編輯的檔案,將會預設從 CATALINA_HOME\conf 中取得,亦即 CATALINA_BASE\conf 檔案會覆寫 CATALINA_HOME\conf 中的預設值。
- server.xml
- web.xml
您必須編輯 CATALINA_BASE\conf\server.xml 來指定執行個體要監聽的唯一 IP/port。找到包含 <Connector port="8080" ...
的行,並新增一個 address 屬性,或更新 port 號碼,以指定唯一的 IP/port 組合。
要安裝執行個體,首先將 CATALINA_HOME 環境變數設定為 Tomcat 安裝目錄的名稱。然後建立第二個環境變數 CATALINA_BASE,並將其指向執行個體資料夾。然後執行「service.bat install」指令,並指定服務名稱。
set CATALINA_HOME=c:\tomcat_10
set CATALINA_BASE=c:\tomcat_10\instances\instance1
service.bat install instance1
要修改服務設定,您可以執行 tomcat10w //ES//instance1。
對於其他執行個體,建立其他執行個體資料夾,更新 CATALINA_BASE 環境變數,並再次執行「service.bat install」。
set CATALINA_BASE=c:\tomcat_10\instances\instance2
service.bat install instance2