SEワンタンの独学備忘録

独学した内容や資格試験に対する取り組みの備忘録

【Linux】Mavenプロジェクトのwarファイルを生成しTomcatにデプロイする@VirtualBox

いろいろなやり方があったり、少しの違いで正しいやり方が違ってきたりしそうですが探り探りやっていきます。


前提

環境など

私の全く同じ環境になっている人もそうそういないでしょうから前提条件を確認です。
同じようなことをやろうとしている方の助けにというよりは私がやってみたいだけです。

・ホストOS:Windows10
・IDE:Eclipse
・プロジェクトタイプ:Mavenプロジェクト
・フレームワーク:TERASOLUNA(Spring)
・サーバ(ゲストOS):Linux(CentOS7)@VirtualBox
・Tomcat:Tomcat9
・JDK:OpenJDK11

過去記事で作成したものを再利用する形になっています。
開発プロジェクト関連は以下。
www.wantanblog.com
www.wantanblog.com


Linuxサーバ関連は以下。
www.wantanblog.com

やること

Eclipse上で作成したJavaのサンプルプロジェクトをwarファイル化。
warファイルをVirtualBox上のTomcatにデプロイし、ホストマシンのブラウザからサンプルプロジェクトを参照できるようにします。

Mavenプロジェクトのwarファイル生成

やり方はいろいろあるのでしょうが以下の方法で実施しました。

事前確認

対象プロジェクトの「pom.xml」の設定を確認します。
Eclipseからじゃなくてもよいですが、パッケージタグがwarになっていることを確認します。なっていない場合は修正する必要があるはず。
※私の場合は最初からwarになっていました。

    <packaging>war</packaging>


コマンドプロンプトを開き、対象プロジェクトに移動する。
私の場合は以下の通り。

cd C:\todo


パッケージングコマンドを実行する。

mvn package

少し時間がかかりましたが「BUILD SUCCESS」が表示されるまで待ちます。
warファイル自体は実行結果に示されているようにtarget直下に生成されるようです。

f:id:wantanBlog:20190908184242p:plain


一旦生成完了???あっさりだな。

warファイルをTomcatにデプロイ

warファイルの配置

Linuxサーバ上のTomcatがインストールされている場所にwarファイルを配置する。


私の場合は以下の通りで、実際に配置するのはwebapps直下。

/usr/libexec/tomcat9/webapps

方法はお任せ。私はteratermのcp機能でファイルを受け渡した。
なおteratermのscp機能はroot等にスイッチしても、権限は最初にログインしたユーザの権限に依存するため置きたい場所に置けなかったりする。
まぁログインユーザのホームディレクトリに配置して移動すれば問題ないです。


追記:後から見直すとwarファイルを配置した時点でtodoディレクトリが作成されているようなので以下は実行しなくても大丈夫っぽいです。

所有者の変更

上記の方法でファイルを配置した場合、所有者がログインユーザになっているはずなのでTomcatユーザに所有者を変更しておいた。
たぶん必要だよね??

chown -R tomcat. /usr/libexec/tomcat9/webapps/todo.war

パーミッションの変更

他のディレクトリとパーミッションが異なるのが気になったので一応。必要なのかは正直分からない。やらなくても大丈夫かも??

chmod 750 /usr/libexec/tomcat9/webapps/todo.war


Tomcatの再起動

停止

systemctl stop tomcat9

起動

systemctl start tomcat9

一発の再起動コマンドってあったよね?

動作確認

ホストマシンからVirtualBoxのサーバに接続して確認してみます。

以前の環境構築にて、ループバックアドレスのポート50001でポートフォワードされるようになっていますのでまずはtomcatのデフォルト画面表示。

http://localhost:50001/

f:id:wantanBlog:20190908210009j:plain


再起動は成功しているようだ。

次にデフォルト画面

http://localhost:50001/todo/

f:id:wantanBlog:20190908210443j:plain


最後にサンプルアプリの画面

http://localhost:50001/todo/todo/list/

f:id:wantanBlog:20190908210515j:plain

おおお!Eclipseで表示してた通りの画面が表示されました。



インメモリの設定とか特にしなくて大丈夫なのかなぁ?と思っていましたが大丈夫なようですね。
知識が大してなくてもなんとかなるのはフレームワーク様様なのでしょうか。

次はDB連携のアプリかなぁ