・ビルドツールは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にデプロイするための設定と手順が完了します。
コメント