Linux で Spring Boot プロジェクトを正常に開始および停止する
この記事では、Linux システムで Spring Boot プロジェクトを正常に開始および停止する方法を紹介します。nohup
、screen
およびメソッドを使用しますsystemd
。各方法には利点があり、どの方法を選択するかは、特定のニーズと使用シナリオによって異なります。
1. nohup を使用して Spring Boot プロジェクトをバックグラウンドで実行します
まず、Spring Boot プロジェクトを JAR ファイルにパッケージ化します。使用しているビルド ツールに応じて、次のコマンドを実行します。
Maven プロジェクト:
mvn clean package
グラドルプロジェクト:
gradle clean build
次に、 nohup コマンドを使用してプロジェクトを開始し、出力をログ ファイルにリダイレクトします。
nohup java -jar /path/to/your-spring-boot-app.jar > /path/to/your-log-file.log 2>&1 &
/path/to/your-spring-boot-app.jar
は、Spring Boot プロジェクトによって生成された JAR ファイルへのパスであり、/path/to/your-log-file.log
ログ ファイルを保存する場所のパスです。
これで、Spring Boot プロジェクトはバックグラウンド プロセスとして実行され、ターミナルを閉じても影響を受けなくなります。
優雅に立ち止まる
Spring Boot プロジェクトのプロセス ID を確認するには、次のコマンドを使用します。
ps -ef | grep your-spring-boot-app.jar
プロセス ID (通常は 2 番目の列) を見つけます。
次のコマンドで SIGTERM シグナル (シグナル 15) を送信し、Spring Boot プロジェクトを正常に停止します。
kill -15 <process-id>
これは、<process-id>
最初のステップで見つけたプロセス ID です。
SIGTERM シグナルを送信すると、Spring Boot プロジェクトでデータベース接続の終了、リソースの解放などのクリーンアップ操作を実行できるようになります。これにより、Spring Boot プロジェクトが正常に停止します。
2. screen を使用して Spring Boot プロジェクトをバックグラウンドで実行する
screen は、複数のプロセスを切り替えるための端末マルチプレクサです。まず、システムにスクリーンがインストールされていることを確認してください。そうでない場合は、次のコマンドを使用してインストールできます。
Debian ベースのシステム (Ubuntu など) の場合:
sudo apt-get install screen
RHEL ベースのシステム (CentOS など) の場合:
sudo yum install screen
インストールしたら、画面を使用して新しいセッションを作成します。
screen -S your-session-name
新しく作成したセッションで、Spring Boot プロジェクトを開始します。次に、Ctrl+A を押してから D を押して、現在の端末からセッションを切断します。こうすることでターミナルを閉じることができ、Spring Boot プロジェクトはバックグラウンドで引き続き実行されます。
以前のセッションに再接続したい場合は、次のコマンドを使用できます。
screen -r your-session-name
3. systemd を使用して Spring Boot プロジェクトをバックグラウンドで実行します
systemd
最新の Linux システムのデフォルトの init システムです。サービスを作成するとsystemd
、Spring Boot プロジェクトをバックグラウンド プロセスとして実行し、簡単に管理できるようになります。
まず、新しいsystemd
構成ファイル (例: )を作成し/etc/systemd/system/your-spring-boot-app.service
、次のテンプレートを使用してコンテンツを入力します。
[Unit]
Description=Your Spring Boot Application
After=syslog.target network.target
[Service]
User=your-user
ExecStart=/usr/bin/java -jar /path/to/your-spring-boot-app.jar
SuccessExitStatus=143
Restart=always
[Install]
WantedBy=multi-user.target
置換およびサービスの説明に注意してyour-user
ください/path/to/your-spring-boot-app.jar
。
次に、次のコマンドを実行して、systemd
新しいサービスを認識させます。
sudo systemctl daemon-reload
次に、Spring Boot プロジェクトを開始します。
sudo systemctl start your-spring-boot-app.service
自動起動をオンにするには、次を実行します。
sudo systemctl enable your-spring-boot-app.service
Spring Boot プロジェクトのステータスとログを表示するには、次を実行します。
sudo systemctl status your-spring-boot-app.service
sudo journalctl -u your-spring-boot-app.service -f
優雅に立ち止まる
次のコマンドを使用して、Spring Boot プロジェクトを正常に停止します。
sudo systemctl stop your-spring-boot-app.service
ここで、your-spring-boot-app.service
は Spring Boot プロジェクト用に作成したサービス ファイルの名前ですsystemd
。
systemctl stop
このコマンドを使用すると、 systemd
SIGTERM シグナルが Spring Boot プロジェクトに送信されます。これにより、Spring Boot プロジェクトは、データベース接続の終了、リソースの解放などのクリーンアップ操作を実行できるようになります。これにより、Spring Boot プロジェクトが正常に停止します。
Spring Boot プロジェクトのステータスを確認するには、次を実行します。
sudo systemctl status your-spring-boot-app.service
これにより、サービスが停止しているかどうかを含む、サービスの現在のステータスが表示されます。
要約する
nohup
この記事では、を使用しscreen
てsystemd
バックグラウンドで実行し、Linux システム上で Spring Boot プロジェクトを正常に停止する方法について説明します。各方法には利点があり、どの方法を選択するかは、特定のニーズと使用シナリオによって異なります。この記事が実際のプロジェクトで Spring Boot プロジェクトをデプロイおよび管理するのに役立つことを願っています。ご質問がございましたら、コメントをお待ちしております。