6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SpringBootアプリをService(デーモン)として起動する方法

Posted at

はじめに

SpringBootアプリは「java -jar」コマンドで実行できますが、ログアウトするとアプリが停止します。
起動し続けるためにはサービスとして起動させる必要があります。
今回はSpringBootアプリケーションをService(デーモン)として起動する手順を記載します。
※デーモンとは常駐プログラムのUNIX系OSにおける呼び名です。

環境

OS:CentOS7

手順

  1. Fully Executable Jarの作成
  2. confファイルの作成
  3. Service(デーモン)の登録
  4. Service(デーモン)の自動起動設定

1. Fully Executable Jarの作成

SpringBootアプリを常駐させるために通常のjarファイルは起動スクリプトを書く必要があるが、
Fully Executable Jarは起動スクリプトが組み込まれています。

作成方法は、pom.xmlに次のようなのタグを追加します。

pom.xml
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <executable>true</executable>
            </configuration>
        </plugin>
    </plugins>
</build>

2. confファイルの作成

起動するjarファイルと同名で拡張子を.confに変えたファイルを作成します。
confファイル作成.png
.confファイルに環境変数の定義、javaオプション、jarの実行時引数を記載します。
環境変数はexport、JavaオプションはJAVA_OPTS、jarの実行時引数はRUN_ARGSで定義します。

.conf
export LANG="ja_JP.UTF8"
JAVA_OPTS="-Xms1024M -Xmx1024M"
RUN_ARGS="--spring.profiles.active=production"

3. Service(デーモン)の登録

Service(デーモン)の登録は/etc/systemd/system/にserviceファイルを作成します。
任意のファイル名でオッケーです。

/etc/systemd/system/hoge.service
[Unit]
Description = サービスの説明

[Service]
ExecStart = /opt/bin/hoge.jar  // 起動jarのファイルパス
Restart = always
Type = simple
User = root
Group = root
SuccessExitStatus = 143

[Install]
WantedBy = multi-user.target

Service(デーモン)を再読み込みします。

Service(デーモン)再読み
$ sudo systemctl daemon-reload

Service(デーモン)を起動します。

起動
$ sudo systemctl start hoge

起動を確認します。
「Active: active (running)」になっていればオッケーです。

起動確認
$ sudo systemctl status hoge

hoge.service - hoge
   Loaded: loaded (/etc/systemd/system/hoge.service; disabled)
   Active: active (running) since Mi 2021-08-18 15:20:57 CEST; 4min 18s ago

Service(デーモン)を停止する場合は次のコマンドを実行します。

停止
$ sudo systemctl stop hoge

4. Service(デーモン)の自動起動設定

サーバー起動時にService(デーモン)を自動起動したい場合は以下の設定をします。

自動起動を有効にする場合は次のコマンドを実行します。

自動起動の有効
$ sudo systemctl enable hoge.service

自動起動設定を確認します。

自動起動設定の確認
$ sudo systemctl list-unit-files -t service

自動起動を無効にする場合は次のコマンドを実行します。

自動起動の無効
$ sudo systemctl disable hoge.service
6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?