Windows + systemctl
Windows 服務用 WinSW (Windows Service Wrapper)
下載 WinSW
https://github.com/winsw/winsw/releases 下載 WinSW-x64.exe 將 WinSW-x64.exe 重命名為 MyService.exe
目錄結構
Spring Boot 應用專用配置
<service>
<!-- 服務的唯一識別符 (不要有空格) -->
<id>MyApp</id>
<!-- 在 Windows 服務列表中顯示的名稱 -->
<name>MyApp</name>
<!-- 服務的描述 -->
<description>MyApp</description>
<!-- Java 執行檔的完整路徑 -->
<executable>C:\Program Files\Java\jdk-21\bin\java.exe</executable>
<!-- Java 啟動參數 -->
<arguments>
-Xmx1024m
-Xms512m
-Dserver.port=8081
-jar "D:\MyApp\MyApp.jar"
</arguments>
<!-- 工作目錄:JAR 檔所在的目錄 -->
<workingdirectory>D:\MyApp</workingdirectory>
<!-- 日誌設定 -->
<logpath>D:\MyApp\logs\</logpath>
<log mode="roll-by-size">
<sizeThreshold>10240</sizeThreshold> <!-- 10MB -->
<keepFiles>8</keepFiles>
</log>
<!-- 服務啟動模式 -->
<startmode>Automatic</startmode>
<!-- 失敗後自動重啟 -->
<onfailure action="restart" delay="15 sec"/>
<delayedAutoStart>true</delayedAutoStart>
<!-- 重置失敗計數器 -->
<resetfailure>1 day</resetfailure>
</service>