Spring Bootで作成したWebアプリケーションを外部のTomcatサーバーへデプロイするための手順

Java
前提知識と条件

・ビルドツールはMavenを利用

・pom.xmlにspring-boot-starter-web依存関係を追加すると、自動的にspring-boot-starter-tomcat(組み込みTomcat)が追加される

・外部用のTomcat(今回はバージョン:9.0.94)がインストールされていること

・ここで用いる外部用のTomcatとはローカルに独自でインストールしたTomcatを指す

・WebサーバーとしてのApacheを経由しない構成

・アプリケーション名は「QRcode_Demo」とする(適宜、読み替えてください)


外部TomcatにSpring Bootで作成したWebアプリケーションをデプロイする手順は以下の通りです。


1. pom.xmlにプロジェクトのパッケージング形式をwarファイルとして設定

<groupId>com.example</groupId>
<artifactId>QRcode_Demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>QRcode_Demo</name>
<description>Project Demo for Spring Boot</description>

ビルド後に生成されるファイルをwarファイルとして指定しておく。

2. 外部Tomcatを利用するための依存関係を設定しておく

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

こちらの設定で外部Tomcat(アプリケーションサーバー)を使用できるようになる。

3. SpringBootServletInitializerの継承

プロジェクトのメインクラスをSpringBootServletInitializerから継承し、configureメソッドをオーバーライドします。

@SpringBootApplication
public class QRcodeDemoApplication extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(QRcodeDemoApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication.run(QRcodeDemoApplication.class, args);
    }
}



4. application.propertiesの設定

(設定があれば)application.propertiesのコンテキストパス設定をコメントアウトします。
外部Tomcatでは不要な設定となります。

# server.servlet.context-path=/

Spring Bootの組み込みTomcatを使用する場合は、上記の設定を有効にしておくと良いでしょう。これにより、URLでアプリケーション名を指定せずにアクセスできるようになります。

例)http://localhost:8080/QRcode_Demoではなく、http://localhost:8080でアクセス可能



5. warファイルの作成

Mavenを実行できる階層(通常はプロジェクトのルートディレクトリ)で以下のコマンドを実行し、warファイルを作成します。

mvn clean package

これでプロジェクト内にあるtargetディレクトリ内にwarファイルが作成されます。

6. 外部Tomcatのwebappsディレクトリにwarファイルを配置

作成したwarファイル(今回であればQRcode_Demo.war)をTomcatのwebappsに配置します。



7. server.xmlの修正

外部Tomcatのconf/server.xmlを変更します。<Host></Host>タグ内に<Context/>を追加します。
これによりURLをルート(/)から指定することができます。

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="QRcode_Demo" reloadable="true" />
</Host>


※EC2上にTomcatを構築した場合、name=”localhost”の部分をname=”EC2のIP”に変更する必要がある。またその部分より、少し上に記述されている<Engine name=”Catalina” defaultHost=”localhost”>の部分もEC2のIPに変更する必要があるかもしれません。

8. 外部Tomcatの操作(起動・停止)

外部Tomcatを起動します。Tomcatをインストールしたディレクトリ内のbinディレクトリにある起動・停止用のスクリプトを使用します。

Windows:
・起動:startup.bat または catalina.bat start
・停止:shutdown.bat または Ctrl + C

macOS・Linux:
・起動:./startup.sh
・停止:./shutdown.sh

以上で、Spring Bootアプリケーションを外部Tomcatにデプロイするための設定と手順が完了します。

コメント

タイトルとURLをコピーしました