TomcatにWARファイルを展開する方法
1. 概要
Apache Tomcatは、Javaコミュニティで最も人気のあるWebサーバーの1つです。 WAR拡張機能を備えたWebアーカイブを提供できるservlet containerとして出荷されます。
It provides a management dashboardから、新しいWebアプリケーションをデプロイしたり、コンテナーを再起動せずに既存のWebアプリケーションをデプロイ解除したりできます。 これは、実稼働環境で特に役立ちます。
この記事では、Tomcatの概要を簡単に説明してから、WARファイルをデプロイするためのさまざまなアプローチについて説明します。
参考文献:
2. Tomcatの構造
開始する前に、いくつかの用語と環境変数に慣れる必要があります。
2.1. 環境変数
Tomcatを以前に使用したことがある場合、これらは非常によく知られています。
$CATALINA_HOME
この変数は、サーバーがインストールされているディレクトリを指します。
$CATALINA_BASE
この変数はTomcatの特定のインスタンスのディレクトリを指します。複数のインスタンスがインストールされている場合があります。 この変数が明示的に設定されていない場合、$CATALINA_HOMEと同じ値が割り当てられます。
Webアプリケーションは、$CATALINA_HOME\webappsディレクトリの下に展開されます。
2.2. 用語
Document root。 すべてのアプリケーションリソースがJSPファイル、HTMLページ、Javaクラス、画像などの場所にあるWebアプリケーションの最上位ディレクトリを指します。
Context path。 サーバーのアドレスに関連する場所を指し、Webアプリケーションの名前を表します。
たとえば、Webアプリケーションが$CATALINA_HOME\webapps\myappディレクトリに配置されている場合、URLhttp://localhost/myappによってアクセスされ、そのコンテキストパスは/myappになります。
WAR。 ZIP形式のWebアプリケーションディレクトリ階層をパッケージ化するファイルの拡張子であり、Web Archiveの略です。 Java Webアプリケーションは通常、展開用のWARファイルとしてパッケージ化されます。 これらのファイルは、コマンドラインまたはEclipseなどのIDEで作成できます。
WARファイルをデプロイした後、Tomcatはそれを解凍し、すべてのプロジェクトファイルをプロジェクトにちなんで名付けられた新しいディレクトリのwebappsディレクトリに保存します。
3. Tomcatセットアップ
Tomcat Apache Webサーバーは、downloaded from their websiteになる可能性のあるフリーソフトウェアです。 ユーザーのマシンで使用可能なJDKがあり、JAVA_HOME環境変数が正しく設定されている必要があります。
3.1. Tomcatを起動する
$CATALINA_HOMEin\startupにあるstartupスクリプトを実行するだけで、Tomcatサーバーを起動できます。 すべてのインストールには.batと.shがあります。
WindowsまたはUnixベースのオペレーティングシステムを使用しているかどうかに応じて、適切なオプションを選択します。
3.2. 役割の構成
展開フェーズでは、Tomcatの管理ダッシュボードを使用するオプションがいくつかあります。 このダッシュボードにアクセスするには、適切なロールで構成された管理ユーザーが必要です。
ダッシュボードにアクセスするには、管理者ユーザーにmanager-guiロールが必要です。 後で、Mavenを使用してWARファイルをデプロイする必要があります。このためには、manager-scriptロールも必要です。
$CATALINA_HOME\conf omcat-usersで次の変更を加えましょう。
さまざまなTomcatロールの詳細については、this official linkをフォローしてください。
3.3. ディレクトリのアクセス許可を設定する
最後に、Tomcatインストールディレクトリに読み取り/書き込み権限があることを確認します。
3.4. テストインストール
Tomcatが正しくセットアップされていることをテストするには、起動スクリプト(startup.bat /startup.sh)を実行します。コンソールにエラーが表示されない場合は、http://localhost:8080にアクセスして再確認できます。
Tomcatのランディングページが表示された場合は、サーバーが正しくインストールされています。
3.5. ポートの競合を解決する
デフォルトでは、Tomcatはポート8080で接続をリッスンするように設定されています。 このポートに既にバインドされている別のアプリケーションがある場合、起動コンソールから通知されます。
ポートを変更するには、$CATALINA_HOME\conf\server.xml.にあるサーバー構成ファイルserver.xmlを編集できます。デフォルトでは、コネクタ構成は次のとおりです。
たとえば、ポートを8081に変更する場合は、次のようにコネクタのポート属性を変更する必要があります。
選択したポートがデフォルトで開いていない場合があります。この場合、Unixカーネルで適切なコマンドを使用してこのポートを開くか、Windowsで適切なファイアウォールルールを作成する必要があります。この記事。
4. Mavenからデプロイ
Mavenを使用してWebアーカイブをデプロイする場合は、TomcatをMavenのsettings.xmlファイルでサーバーとして構成する必要があります。
settings.xmlファイルが見つかる可能性のある場所は2つあります。
-
Mavenのインストール:$\{maven.home}/conf/settings.xml
-
ユーザーのインストール:$\{user.home}/.m2/settings.xml
見つかったら、次のようにTomcatを追加します。
TomcatServer
admin
password
次に、Mavenから基本的なWebアプリケーションを作成して、デプロイメントをテストする必要があります。 アプリケーションを作成したい場所に移動しましょう。
コンソールで次のコマンドを実行して、新しいJava Webアプリケーションを作成します。
mvn archetype:generate -DgroupId=com.example -DartifactId=tomcat-war-deployment
-DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
これにより、ディレクトリtomcat-war-deploymentに完全なWebアプリケーションが作成され、ここでデプロイしてブラウザ経由でアクセスすると、hello world!が出力されます。
ただし、その前に、Mavenの展開を有効にするために1つの変更を行う必要があります。 したがって、pom.xmlに移動して、このプラグインを追加します。
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
http://localhost:8080/manager/text
TomcatServer
/myapp
Tomcat 7プラグインは特別な変更なしでバージョン7と8の両方で機能するため、Tomcat 7プラグインを使用していることに注意してください。
構成urlは、デプロイメントの送信先のURLであり、Tomcatはそれをどう処理するかを認識します。 server要素は、Mavenが認識するサーバーインスタンスの名前です。 最後に、path要素はデプロイメントのcontext pathを定義します。
これは、デプロイが成功した場合、http://localhost:8080/myappを押してWebアプリケーションにアクセスすることを意味します。
これで、Mavenから次のコマンドを実行できます。
Webアプリをデプロイするには:
mvn tomcat7:deploy
アンデプロイするには:
mvn tomcat7:undeploy
変更後に再デプロイするには:
mvn tomcat7:redeploy
5. Cargoプラグインを使用してデプロイ
Cargoは、さまざまなタイプのアプリケーションコンテナを標準的な方法で操作できるようにする多用途のライブラリです。
5.1. 貨物展開のセットアップ
このセクションでは、CargoのMavenプラグインを使用してWARをTomcatにデプロイする方法を確認します。この場合は、バージョン7のインスタンスにデプロイします。
プロセス全体をしっかり把握するために、コマンドラインから新しいJava Webアプリケーションを作成することから始めます。
mvn archetype:generate -DgroupId=com.example -DartifactId=cargo-deploy
-DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
これにより、cargo-deployディレクトリに完全なJavaWebアプリケーションが作成されます。 このアプリケーションをそのままビルド、デプロイ、ロードすると、ブラウザにHello World!が出力されます。
Tomcat7 Mavenプラグインとは異なり、Cargo Mavenプラグインではこのファイルが存在する必要があります。
Webアプリケーションにはサーブレットが含まれていないため、web.xmlファイルは非常に基本的なものになります。 したがって、新しく作成したプロジェクトのWEB-INFフォルダーに移動し、次の内容のweb.xmlファイルを作成します。
cargo-deploy
index.jsp
完全修飾名を入力せずにMavenがCargoのコマンドを認識できるようにするには、Cargo MavenプラグインをMavenのsettings.xml.のプラグイングループに追加する必要があります。
ルート<settings></settings>要素の直接の子として、次を追加します。
org.codehaus.cargo
5.2. ローカルデプロイ
このサブセクションでは、新しいデプロイメント要件に合うようにpom.xmlを編集します。
次のようにプラグインを追加します。
org.codehaus.cargo
cargo-maven2-plugin
1.5.0
tomcat7x
installed
Insert absolute path to tomcat 7 installation
existing
Insert absolute path to tomcat 7 installation
執筆時点での最新バージョンは1.5.0です。 ただし、最新バージョンは常にhereで見つけることができます。
パッケージ化を明示的にWARとして定義していることに注意してください。これがないと、ビルドは失敗します。 プラグインセクションで、cargo maven2プラグインを追加します。 さらに、we add a configuration section where we tell Maven that we are using a Tomcat container and also an existing installation.
コンテナータイプをinstalledに設定することにより、マシンにインスタンスがインストールされていることをMavenに通知し、このインストールへの絶対URLを提供します。
構成タイプをexistingに設定することにより、使用している既存のセットアップがあり、それ以上の構成は不要であることをTomcatに通知します。
別の方法は、URLを提供することで指定されたバージョンをダウンロードしてセットアップするように貨物に指示することです。 ただし、私たちの焦点はWAR展開です。
Maven2.xとMaven3.xのどちらを使用していても、cargomaven2プラグインは両方で機能することに注意してください。
次を実行して、アプリケーションをインストールできます。
mvn install
そして、以下を実行して展開します。
mvn cargo:deploy
すべてがうまくいけば、http://localhost:8080/cargo-deploy.をロードすることでWebアプリケーションを実行できるはずです。
5.3. リモートデプロイ
リモートデプロイを行うには、pom.xmlの構成セクションを変更するだけで済みます。 リモートデプロイとは、Tomcatのローカルインストールがなくても、リモートサーバー上のマネージャーダッシュボードにアクセスできることを意味します。
それでは、構成セクションが次のようになるようにpom.xmlを変更しましょう。
tomcat8x
remote
runtime
admin
admin
http://localhost:8080/manager/text
今回は、コンテナタイプをinstalledからremoteに変更し、構成タイプをexistingからruntimeに変更します。 最後に、認証とリモートURLプロパティを構成に追加します。
前と同じように、ロールとユーザーが$CATALINA_HOME/conf/tomcat-users.xmlにすでに存在していることを確認します。
remoteデプロイメント用に同じプロジェクトを編集している場合は、最初に既存のWARをアンデプロイします。
mvn cargo:undeploy
プロジェクトをきれいにします:
mvn clean
インストールしてください:
mvn install
最後に、それを展開します:
mvn cargo:deploy
それでおしまい。
6. Eclipseからデプロイする
Eclipseを使用すると、サーバーを埋め込み、IDEから離れることなく通常のワークフローにWebプロジェクトの展開を追加できます。
6.1. TomcatをEclipseに埋め込む
タスクバーからwindowメニュー項目を選択し、次にドロップダウンからpreferencesを選択することにより、インストールをEclipseに埋め込むことができます。
表示されるウィンドウの左パネルに設定項目のツリーグリッドがあります。 次に、eclipse → serversに移動するか、検索バーにserversと入力します。
次に、インストールディレクトリを選択します(まだ開いていない場合)。ダウンロードしたTomcatバージョンを選択します。
パネルの右側に構成ページが表示されます。このページで[有効化]オプションを選択して、このサーバーバージョンをアクティブにし、インストールフォルダーを参照します。
変更を適用すると、次にEclipseのwindows → show viewサブメニューからサーバービューを開くと、新しく構成されたサーバーが表示され、アプリケーションを起動、停止、およびデプロイできます。
6.2. 組み込みTomcatにWebアプリケーションをデプロイする
WebアプリケーションをTomcatにデプロイするには、ワークスペースに存在する必要があります。
window → show viewからserversビューを開き、サーバーを探します。 開いたら、構成したサーバーを右クリックして、表示されるコンテキストメニューからadd deploymentを選択できます。
表示されるNew Deploymentダイアログボックスから、projectドロップダウンを開き、Webプロジェクトを選択します。
Exploded Archive(development mode)、our changes in the application will be synced live without having to redeployを選択すると、Projectコンボボックスの下にDeploy Typeセクションがあります。これは非常に効率的であるため、開発中の最良のオプションです。
Packaged Archive(production mode)を選択すると、変更を加えてブラウザに表示するたびに再デプロイする必要があります。 これは本番環境でのみ最適ですが、Eclipseでも同様に簡単です。
6.3. Webアプリケーションを外部の場所にデプロイする
通常、デバッグを容易にするためにEclipseを介してWARをデプロイすることを選択します。 Eclipseの組み込みサーバーで使用されている場所以外の場所にデプロイしたい場合があります。 最も一般的な例は、運用サーバーがオンラインであり、Webアプリケーションを更新する場合です。
実稼働モードで展開し、New DeploymentダイアログボックスでDeploy Locationに注目し、そこからWARを選択することで、この手順をバイパスできます。
展開中に、組み込みサーバーを選択する代わりに、組み込みサーバーのリストの横にあるserversビューから<Externally Launched>オプションを選択できます。 外部Tomcatインストールのwebappsディレクトリに移動します。
7. IntelliJIDEAからデプロイ
WebアプリケーションをTomcatにデプロイするには、Webアプリケーションが存在し、すでにダウンロードおよびインストールされている必要があります。
7.1. ローカル構成
Runメニューを開き、Edit Configurationsオプションをクリックします。
左側のパネルでTomcat Serverを検索します。存在しない場合は、メニューの+記号をクリックし、Tomcatを検索して、Localを選択します。 名前フィールドにTomcat 7/8を入力します(バージョンによって異なります)。
Configure…ボタンをクリックし、Tomcat Homeフィールドで、インストールのホームロケーションに移動して選択します。
必要に応じて、Startupページをhttp://localhost:8080/およびHTTP port: 8080に設定し、必要に応じてポートを変更します。
Deploymentタブに移動し、+記号をクリックして、サーバーに追加するアーティファクトを選択し、[OK]をクリックします。
7.2. リモート構成
ローカルTomcat構成と同じ手順に従いますが、[サーバー]タブで、インストールのリモートの場所を入力する必要があります。
8. アーカイブをコピーしてデプロイする
EclipseからWARをエクスポートする方法を見てきました。 私たちができることの1つは、Tomcatインスタンスの$CATALINA_HOME\webappsディレクトリにドロップするだけでデプロイすることです。 インスタンスが実行されている場合、Tomcatがアーカイブを展開し、そのコンテキストパスを構成すると、デプロイメントが即座に開始されます。
インスタンスが実行されていない場合、サーバーは次回起動時にプロジェクトをデプロイします。
9. Tomcatマネージャーからデプロイ
既にWARファイルが手元にあり、管理ダッシュボードを使用して展開したいとします。 http://localhost:8080/managerにアクセスすると、マネージャーダッシュボードにアクセスできます。
ダッシュボードには、Manager、Applications、Deploy、Diagnostics、およびServer Information.の5つの異なるセクションがあります。Deployセクションに移動すると、 2つのサブセクションがあります。
9.1. サーバー上にあるディレクトリまたはWARファイルをデプロイする
WARファイルがTomcatインスタンスが実行されているサーバーにある場合は、必要なContext Pathフィールドの前にスラッシュ「/」を入力できます。
ブラウザからURLhttp://localhost:8080/myappを使用してWebアプリケーションにアクセスしたい場合、コンテキストパスフィールドには/myapp.が含まれます。
XML Configuration file URLフィールドをスキップして、WAR or Directory URLフィールドに移動します。 ここでは、サーバーに表示されるWeb ARchiveファイルへの絶対URLを入力します。 ファイルの場所がC:/apps/myapp.warであるとすると、この場所を入力します。 WAR拡張機能を忘れないでください。
その後、deployボタンをクリックできます。 ページがリロードされ、次のメッセージが表示されるはずです。
OK - Deployed application at context path /myapp
ページ上部にあります。
さらに、アプリケーションはページのApplicationsセクションにも表示されます。
9.2. デプロイするWARファイル
choose fileボタンをクリックし、WARファイルの場所に移動して選択し、deployボタンをクリックするだけです。
どちらの状況でも、すべてがうまくいけば、Tomcatコンソールは次のようなメッセージでデプロイメントが成功したことを知らせます:
INFO: Deployment of web application archive \path\to\deployed_war has finished in 4,833 ms
10. 結論
この記事では、WARをTomcatサーバーにデプロイすることに焦点を合わせました。