Spring Bootアプリケーションをシステムサービスに登録する


Spring Bootアプリケーションをシステムサービスに登録する
以前の記事では、Spring Bootのテクニックについて多く言及しましたが、Spring Bootアプリケーションを作成した後、どのように生成環境で実行しますか?元のjava-jarのみで実行すると、プログラムの頑丈性と安定性が保証されず、プログラムをサービスとして登録して使用するのが最善の方法です.
Spring BootアプリケーションをLinuxとwindowsのサービスに登録する方法について説明します.
前期準備
まず、アプリケーションを実行可能なjarパッケージにパッケージ化する必要があります.次の依存性を追加する必要があります.
jar
 

    org.springframework.boot
    spring-boot-starter-parent

 

    ....

 

    
        
            org.springframework.boot
            spring-boot-maven-plugin
            
                true
            
        
    

ここのpackagingはjarを選択する必要があります.spring-boot-maven-pluginを追加するのは、appを実行可能なjarパッケージにパッケージするためです.
実行可能jarパッケージにパッケージ化
アプリケーションを作成したら、次のことを実行できます.
mvn clean package

アプリケーションをパッケージ化します.ここでパッケージ化したjarパッケージの名前はspringboot-run-as-service-0.0.1-SNAPSHOT.jarです.
liunxサービスに登録
linuxでは、System V init scriptまたはSystemdプロファイルを選択できます.前者は徐々に後者に置き換えられます.
セキュリティのために、実行ユーザーを作成し、jarパッケージに対応する権限を付与する必要があります.
$ sudo useradd flydean
$ sudo passwd flydean
$ sudo chown flydean:flydean your-app.jar
$ sudo chmod 500 your-app.jar

System V Init
ファイルリンクをinit.dディレクトリに作成します.次のようにします.
sudo ln -s /path/to/your-app.jar /etc/init.d/your-app

次に、アプリケーションを起動します.
sudo service your-app start

サービスコマンドはstart,stop,restart,statusをサポートします.また、以下の機能も提供されています.
  • your-appはflydeanユーザーで
  • を起動します.
  • プログラムが実行するpidは/var/run/your-app/your-app.pid
  • に格納される
  • アプリケーションのログは/var/log/your-app.log
  • Systemd
    Systemdを使用するには、/etc/systemd/systemmにyour-app.serviceファイルを作成する必要があります.
    [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

    次にsystemctl start|stop|restart|status your-appを使用してサービスを管理できます.
    Upstart
    Upstartはイベント駆動のサービスマネージャで、Ubuntuを使用するとデフォルトでインストールされます.
    your-app.confを作成します.
    # Place in /home/{user}/.config/upstart
     
    description "Some Spring Boot application"
     
    respawn # attempt service restart if stops abruptly
     
    exec java -jar /path/to/your-app.jar

    Windowsでのインストール
    Windowsでは、次のように多くの方法があります.
    Windows Service Wrapper
    Windows Service Wrapperはwinswとも呼ばれ、オープンソースソフトウェアです.winswはプロファイルyour-app.xmlと組み合わせて使用する必要があります.
    
        MyApp
        MyApp
        This runs Spring Boot as a Service.
        
        java
        -Xmx256m -jar "%BASE%\your-app.jar"
        rotate
    

    winsw.exeをyour-app.exeに変更してyour-app.xmlと組み合わせて使用する必要があります.
    Java Service Wrapper
    Java Service Wrapperは非常に強力な構成を提供し、WindowsとLinuxの下でアプリケーションを使用することができます.興味のある学生は自分で勉強することができます.
    チュートリアルの詳細については、flydeanのブログを参照してください.