たぬき君、廊下に立っとれ

忘れることなかれ。学んだことと感謝とあれこれ

【java】SpringBootアプリケーションをjarでデプロイする備忘録

SpringBootアプリケーションを仮想マシン(EC2)にjarでデプロイしてみます。

 

SpringBootはサーブレットコンテナ(tomcatなど)の構築が不要らしい。組み込まれているらしい。便利らしい。

 

1.STSでjarファイルを作成

まずはpom.xmlの記述追加

1.<packaging>jar</packaging>を追加。Mavanでビルドするときにゴールに指定するため。

 

2.実行可能なjarを生成するためにspring-boot-maven-pluginに

<plugin>

 <groupId>org.springframework.boot</groupId>

 <artifactId>spring-boot-maven-plugin</artifactId>

 <configuration> 

  <executable>true</executable> 

 </configuration>

</plugin>

を追加。

 jarファイルを作成

f:id:asagao13a:20191124231811p:plain

プロジェクト上で右クリック→実行→mavenbuild(二つあるうちの下を選択)

f:id:asagao13a:20191124232046p:plain

Goalに「package」と入力し、Run!

しばらくして、targetフォルダ下にjarファイルが作成されている。

2.仮想マシンに設置してみよう

仮想マシンで用意すること

  1. OpenJDK をインストールして、javaコマンドが実行できるようにする。
  2. アプリケーションを実行するユーザーを作成する。
  3. SpringBootアプリケーションを実行するサービスを作成する。

WinSCPなどでローカルで生成したjarファイルを仮想マシンに転送しておく

 

※途中でmyapp.jarにリネームしてます。

   
openjdkをインストール
# sudo yum install java-1.8.0-openjdk
アプリ起動ユーザーを作成
# useradd myappuser
アプリ用に任意のディレクトリを作成する。
# mkdir /usr/local/bin/myapp
ファイルの所有者を変更
# chown myappusr.myappusr /usr/local/bin/myapp
アプリ用ディレクトリにjarファイルを移動
# mv /tmp/myapp.jar /usr/local/bin/myapp/
権限を変更(ここがよくわからなかった)
# chmod 500 /usr/local/bin/myapp/myapp.jar
deamon起動のため/etc/init.d/に登録
# ln -s /usr/local/bin/myapp/myapp.jar /etc/init.d/myapp
自動起動のためchkconfigに登録
# chkconfig --add myapp
起動
# service myapp start

ここまできたら、とりあえず一回画面にアクセスしてみる。いろいろなサイトを参考にさせてもらって非常にありがたいが、画面アクセスまで画像で解説してくれているトコがあまりないような気がする....ワガママですな。

http://仮想マシンのパブリックIP:8080 

これでアクセスしてみる。

f:id:asagao13a:20191124231128p:plain

出た~。

おまけに、javaコマンドでも起動してみよう。

    jarファイルのあるディレクトリで下記コマンド
    #java -jar myapp.jar
     .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.8.RELEASE)

2019-11-24 13:38:54.968  INFO 6104 --- [           main] com.example.demo.DemoAp                                                                                                             plication         : Starting DemoApplication v0.0.1-SNAPSHOT on ip-172-31-10-233                                                                                                             .us-east-2.compute.internal with PID 6104 (/usr/local/bin/myapp/myapp.jar starte                                                                                                             d by myappusr in /usr/local/bin/myapp)
2019-11-24 13:38:54.977  INFO 6104 --- [           main] com.example.demo.DemoAp                                                                                                             plication         : No active profile set, falling back to default profiles: def                                                                                                             ault
2019-11-24 13:38:58.177  INFO 6104 --- [           main] o.s.b.w.embedded.tomcat                                                                                                             .TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2019-11-24 13:38:58.253  INFO 6104 --- [           main] o.apache.catalina.core.                                                                                                             StandardService   : Starting service [Tomcat]
2019-11-24 13:38:58.261  INFO 6104 --- [           main] org.apache.catalina.cor                                                                                                             e.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.24]
2019-11-24 13:38:58.562  INFO 6104 --- [           main] o.a.c.c.C.[Tomcat].[loc                                                                                                             alhost].[/]       : Initializing Spring embedded WebApplicationContext
2019-11-24 13:38:58.562  INFO 6104 --- [           main] o.s.web.context.Context                                                                                                             Loader            : Root WebApplicationContext: initialization completed in 3403                                                                                                              ms
2019-11-24 13:38:59.133  INFO 6104 --- [           main] o.s.s.concurrent.Thread                                                                                                             PoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'
2019-11-24 13:38:59.306  INFO 6104 --- [           main] o.s.b.a.w.s.WelcomePage                                                                                                             HandlerMapping    : Adding welcome page template: index
2019-11-24 13:38:59.701  INFO 6104 --- [           main] o.s.b.w.embedded.tomcat                                                                                                             .TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2019-11-24 13:38:59.705  INFO 6104 --- [           main] com.example.demo.DemoAp                                                                                                             plication         : Started DemoApplication in 5.899 seconds (JVM running for 6.                                                                                                             735)

Springおなじみの画面!...のあとに上記URLでアクセス。とりあえずここまで。

セキュリティの強化、コンフィグファイルの作成など、またやります。