【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ファイルを作成
プロジェクト上で右クリック→実行→mavenbuild(二つあるうちの下を選択)
Goalに「package」と入力し、Run!
しばらくして、targetフォルダ下にjarファイルが作成されている。
2.仮想マシンに設置してみよう
仮想マシンで用意すること
- OpenJDK をインストールして、javaコマンドが実行できるようにする。
- アプリケーションを実行するユーザーを作成する。
- 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
これでアクセスしてみる。
出た~。
おまけに、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でアクセス。とりあえずここまで。
セキュリティの強化、コンフィグファイルの作成など、またやります。