springboot專案註冊為windows系統服務並設定開機自啟

springboot專案註冊為windows系統服務並設定開機自啟

關於springboot專案的部署與SSM(框架)部署war包到Tomcat下有所不同,比較明顯的是springboot打包為jar包,執行則是執行透過

java -jar xxx.jar

,不再需要放置在Tomcat下面執行。

關於springboot專案部署相對於之前簡化了一些步驟,只需要在伺服器中安裝好jdk環境,然後執行java -jar xxx。jar就可以把專案跑起來,如下所示。

我們透過

傳統--->改進版--->改進版plus--->最終版

演變方式來一步步探討一下。

1、方式一(傳統版)

(1)

假設這是window伺服器,D盤中有一個名為demo-0。0。1-SNAPSHOT。jar專案

springboot專案註冊為windows系統服務並設定開機自啟

(2)

開啟cmd,執行專案。

springboot專案註冊為windows系統服務並設定開機自啟

……

下圖所示:

埠:9527

/:去專案名

springboot專案註冊為windows系統服務並設定開機自啟

(3)

實際測試專案(demo-0。0。1-SNAPSHOT。jar)中的一個介面

springboot專案註冊為windows系統服務並設定開機自啟

(4)

測試訪問

springboot專案註冊為windows系統服務並設定開機自啟

2、改進版

以上方式執行專案還需要手動進入cmd輸入命令,相對來說比較麻煩。

下面我們可以透過一個bat指令碼來實現這個功能。

(1)

指令碼內容,比較簡單。

springboot專案註冊為windows系統服務並設定開機自啟

(2)

執行cmd指令碼

springboot專案註冊為windows系統服務並設定開機自啟

(3)

測試訪問

springboot專案註冊為windows系統服務並設定開機自啟

3、 改進版plus

關於

以上的兩種方式不能滿足開機自啟動需求

假設伺服器宕機,重啟啟動服務還需要人工操作。

所以下面我們利用

windows啟動選單新增快捷方式

來完成

開機自啟

的需求。

(1)

win+R開啟執行視窗,輸入

shell:startup

springboot專案註冊為windows系統服務並設定開機自啟

(2)

將步驟2的指令碼start。cmd新建一個快捷方式,然後

將快捷方式複製到啟動項檔案

中。

springboot專案註冊為windows系統服務並設定開機自啟

(3)

重啟電腦進行測試,自行操作。

4、 最終版

關於以上的3種方式都有一個通病:

一直顯示著一個CMD視窗,而且這個視窗不能關,關了程式就停了。

繼而引出了我們今天的主角:

可以將Windows上的任何一個程式註冊為服務的工具--winsw

關於winsw官方發言:

WinSW is an executable binary, which can be used to wrap and manage a custom process as a Windows service。

WinSW是一個可執行的二進位制檔案,可用於將自定義程序包裝和管理為Windows服務。

下載地址:https://github。com/kohsuke/winsw/releases

原始碼地址:https://github。com/kohsuke/winsw

(1)工具下載

以下兩個版本:

WinSW。NET4。exe:

支援。netframework4。0的版本,如果沒有4。0,請先安裝。net4。0。

如下圖:

springboot專案註冊為windows系統服務並設定開機自啟

這裡以

WinSW.NET2.exe

為例。

springboot專案註冊為windows系統服務並設定開機自啟

下載到桌面WinSW。NET2。exe

springboot專案註冊為windows系統服務並設定開機自啟

(2)

將WinSW。NET2。exe改名成

啟動服務

名字(便於理解、使用)。

如:

將WinSW.NET2.exe改成springbootDemo.exe

(3)

新建一個WinSW的xml配置檔案

注意:

XML檔案要和程式名同名,所以這裡名為

springbootDemo。xml

(4)

將我們的springboot專案(demo-0。0。1-SNAPSHOT。jar)和springbootDemo。xml檔案、springbootDemo。exe工具放置到同一個目錄中。

springboot專案註冊為windows系統服務並設定開機自啟

(5)

編寫springbootDemo。xml配置檔案,如下所示:

<service>

<id>springbootDemo</id>

<name>springbootDemo</name>

<description>This is springbootDemo service.</description>

<env name="JAVA_HOME" value="%JAVA_HOME%"/>

<executable>java</executable>

<arguments>-jar "D:\springboot-service\demo-0.0.1-SNAPSHOT.jar"</arguments>

<startmode>Automatic</startmode>

<logpath>%BASE%\log</logpath>

<logmode>rotate</logmode>

</service>

補充:

實際編寫中請除去以下注釋!!!

springboot專案註冊為windows系統服務並設定開機自啟

補充:

下面是配置檔案用到的標籤的簡單解釋

<!-- 這裡的根元素必須是service節點 -->

<!-- 指定在Windows系統內部使用的識別服務的ID,唯一 -->

springbootDemo

<!-- 服務的簡短名稱,唯一 -->

springbootDemo

<!-- 描述 -->

This is springbootDemo service。

<!-- java環境變數 -->

<!-- 指定要啟動的可執行檔案。 -->

java

<!-- 指定要傳遞給可執行檔案的引數,

即:java -jar "D:\springboot-service\demo-0.0.1-SNAPSHOT.jar" -->

-jar “D:\springboot-service\demo-0。0。1-SNAPSHOT。jar”

<!-- 開機啟動 -->

Automatic

<!-- 日誌配置 -->

%BASE%\log

rotate

(6)

開啟cmd視窗,註冊服務

cd springboot-service

springbootDemo。exe install

springboot專案註冊為windows系統服務並設定開機自啟

安裝成功

(7)

Win+R輸入services。msc

springboot專案註冊為windows系統服務並設定開機自啟

(8)

可以看到我們剛剛的springboot專案已經被註冊成一個window服務了

springboot專案註冊為windows系統服務並設定開機自啟

在這裡我們可以對我們的springbootDemo專案進行啟動、停止、手動開啟、自動開啟等等管理。

springboot專案註冊為windows系統服務並設定開機自啟

測試完成。

補充:

一些常用的命令

winsw install:安裝服務

winsw uninstall:解除安裝服務

winsw start:開啟服務

winsw stop:停止服務

winsw restart:重新啟動服務

winsw status:檢查服務的當前狀態

最後感謝大家支援。