はじめに
SpringBootのアプリケーションをWindowsサーバーでサービス化します。 LinuxサーバーのサービスとしてSpringbootのJARファイルを指定することは可能ですが、 Windowsの場合、nssmというツールを利用しない限り、サービス化することができません。
サービス化するこのメリット
サービス化することでWindowsサーバーが起動した際に自動でアプリケーションが起動します。 アプリケーションを停止する場合はシャットダウンもしくはサービスの停止で停止が可能です。 起動用のバッチファイルを直接実行してもよいですが、バックグラウンドで起動しているプロセスを 停止する術がコマンドもしくはタスクマネージャしかないのは正直運用に耐えられません。 それではさっそくWindowsサーバーでのサービス化を試してみましょう。
nssmダウンロード
フリーソフトの「NSSM」(http://nssm.cc/download) をダウンロードします。 ダウンロードしたNSSMを所定のフォルダに格納します。 今回は64bit端末のため、「nssm-2.24\win64\nssm.exe」を使用します。
JAR実行用バッチ作成
以下を参考にバッチファイルを作成します。 jarファイル名を置換しておきます。
@echo on setlocal set JAVA_HOME=C:\java set PATH=%JAVA_HOME%\bin;%PATH% set WEBAPP_HOME=C:\apl set WEBAPP_JAR=test.jar set LANG=ja_JP.UTF8 set JAVA_OPTS=-Xms2048M -Xmx2048M set RUN_ARGS=--spring.profiles.active=hon cd /d %WEBAPP_HOME% java -server -jar lib\%WEBAPP_JAR%
サーバーにフォルダを作成する
以下フォルダを作成します。 C:\apl\bat ※バッチファイルを格納します。 C:\apl\java ※実行用Javaを格納します。ここではeclipse同梱のJavaを使用。 C:\apl\lib ※jarファイルを格納します。 C:\apl\logs ※アプリケーションで出力するログフォルダです。logback.xml等で指定が必要。 C:\apl\nssm ※nssmのexeファイルを格納します。
NSSMを実行する
NSSMを実行し、Springbootアプリケーションをサービス化します。 コマンドプロンプトを起動し、以下コマンドを実行します。
cd /d C:\apl\nssm nssm install apl Administrator access is needed to install a service.
以下の画面を起動されるので、起動バッチのパスとディレクトリ、サービス名を指定する。
Successの文字が出力されれば成功です。
* サービス起動
サービスを開くと登録したサービス名が一覧に表示されていますので、試しに起動します。
無事に起動できれば終了です。
失敗した時はバッチファイルのパスの指定やlibフォルダへのJavaファイルの格納ミス等が考えられます。