將Spring Boot應用程序註冊成為系統服務

在之前的文章中,我們提到了很多Spring Boot的技巧,那麼當我們創建好了Spring Boot應用程序之後,怎麼在生成環境中運行呢?如果只是以原始的java -jar 的方式來運行的話,不能保證程序的健壯性和穩定性,最好的辦法是將程序註冊成為服務來使用。

本文將會講解如何將Spring Boot應用程序註冊成為Linux和windows的服務。

前期準備

首先我們需要將應用程序打包成為一個可執行的jar包,我們需要添加如下依賴:

<code>

<

packaging

>

jar

packaging

>

<

parent

>

<

groupId

>

org.springframework.boot

groupId

>

<

artifactId

>

spring-boot-starter-parent

artifactId

>

parent

>

<

dependencies

>

....

dependencies

>

<

build

>

<

plugins

>

<

plugin

>

<

groupId

>

org.springframework.boot

groupId

>

<

artifactId

>

spring-boot-maven-plugin

artifactId

>

<

configuration

>

<

executable

>

true

executable

>

configuration

>

plugin

>

plugins

>

build

>

/<code>

這裡的packaging我們需要選擇jar。添加spring-boot-maven-plugin是為了將app打包成為可執行的jar包。

打包成可執行jar包

寫好了應用程序,我們可以執行:

<code>mvn clean 

package

/<code>

來打包應用程序,這裡我們打包之後的jar包名字為:springboot-run-as-service-0.0.1-SNAPSHOT.jar。

註冊成為liunx服務

在linux中,我們可以選擇System V init>

為了安全起見,我們需要創建一個運行用戶,並給jar包賦予相應的權限:

<code>$ sudo useradd flydean
$ sudo passwd flydean
$ sudo chown 

flydean:

flydean your-app.jar $ sudo chmod

500

your-app.jar /<code>

System V Init

創建一個文件鏈接到init.d目錄,如下:

<code>sudo ln -s /path/to/your-app.jar /etc/

init

.d/your-app /<code>

接下來我們就可以啟動應用程序了:

<code>

sudo

service your-app start /<code>

service命令支持start, stop, restart 和 status。同時它還提供瞭如下的功能:

  • your-app 將會以flydean用戶啟動
  • 程序運行的pid存儲在/var/run/your-app/your-app.pid
  • 應用程序的日誌在/var/log/your-app.log

Systemd

使用Systemd,我們需要在 /etc/systemd/system 創建一個your-app.service文件:

<code>

[Unit]

Description

=A Spring Boot application

After

=syslog.target

[Service]

User

=flydean

ExecStart

=/path/to/your-app.jar SuccessExitStatus=

100

[Install]

WantedBy

=multi-user.target /<code>

接下來我們可以使用systemctl start|stop|restart|status your-app來管理你的服務了。

Upstart

Upstart是一個事件驅動的服務管理器,如果你使用Ubuntu,將會被默認安裝。

我們來創建一個your-app.conf :

<code> 

description 

"Some Spring Boot application"

respawn

exec

java -jar /path/to/your-app.jar /<code>

在Windows中安裝

在windows中,我們也有很多方式,如下:

Windows Service Wrapper

Windows Service Wrapper 又叫 winsw是一個開源軟件,winsw需要和一個配置文件your-app.xml配合使用:

<code>

<

service

>

<

id

>

MyApp

id

>

<

name

>

MyApp

name

>

<

description

>

This runs Spring Boot as a Service.

description

>

<

env

name

=

"MYAPP_HOME"

value

=

"%BASE%"

/>

<

executable

>

java

executable

>

<

arguments

>

-Xmx256m -jar "%BASE%\your-app.jar"

arguments

>

<

logmode

>

rotate

logmode

>

service

>

/<code>

注意,你需要修改winsw.exe成為your-app.exe來和your-app.xml配合使用。

Java Service Wrapper

Java Service Wrapper 提供了非常強大的配置,他可以讓你的應用程序在windows和Linux下面使用。有興趣的同學可以自行去學習。

歡迎關注我的公眾號:程序那些事,更多精彩等著您!

更多內容請訪問:flydean的博客 flydean.com

將Spring Boot應用程序註冊成為系統服務


分享到:


相關文章: