ウェブサイト検索

1 つの Apache Tomcat サーバーで複数の Web アプリケーションを実行する方法


Apache Tomcat は、Java サーブレットJSPWeb ソケットをデプロイして実行できるオープン ソース Web コンテナです。 Java コードを利用した Web サーバー。また、クロスプラットフォームのサーブレット コンテナまたは Web コンテナとして識別することもできます。

簡単に言えば、Tomcat は、市場にある他の Web コンテナに比べて多くの利点があるため、多くの業界関係者の間で非常に人気があります。 Java プロジェクトから Web アーカイブを作成し、それを Tomcat コンテナ内にデプロイして、Java でコード化された HTTP Web サーバーをホストできます。業界では、次の利点により、他のコンテナではなく Apache Tomcat が選択されます。

  1. 軽量。
  2. 広く使われています。
  3. 他のコンテナよりもはるかに高速です。
  4. 設定が簡単。
  5. 非常に柔軟です。

通常、Apache Tomcat は、最小限の構成変更でエンジニアにWAR 成果物 (Web アーカイブ) を展開するスペースを提供するユーザーフレンドリーな製品です。

この投稿は、すでに Tomcat を使用していて、Apache Tomcat エンジンの起動方法と使用方法を知っている読者を対象としています。

Apache Tomcat では、WAR を、コンテナがデフォルトでデプロイする webapps ディレクトリに配置する必要があります。簡単に言えば、webapps ディレクトリは、Tomcat を Web サーバーとしてデプロイするための Java コードのメイン コンテナとして機能します。

単一の Tomcat コンテナーから複数の Web サーバーをホストする必要があるシナリオでは、この投稿をガイドとして使用してそれを実現できます。この記事では、1 つの Tomcat 内に複数の Web アプリケーションまたは 2 つの Web サーバーをデプロイする方法を説明します。

前提条件: Java がサーバーにインストールされている必要があります。できれば1.7.x 以降。このチュートリアルでは、Tomcat バージョン 8.0.37 を使用しているため、Java 1.7 をインストールしています。

次に示すように、yumapt などのパッケージ マネージャーを使用して Java をインストールできます。

yum install java              [On CentOS based Systems]
apt-get install default-jre   [On Debian based Systems]

ステップ 1: Apache Tomcat サーバーをインストールする

1. まず、root アカウントを使用して別の tomcat ユーザーを作成します。

useradd tomcat
passwd tomcat

ここでtomcat ユーザーとしてログインし、公式サイト (https://tomcat.apache.org/) から最新の Apache Tomcat バンドルをダウンロードします。または、次の wget コマンドを使用してターミナルに直接ダウンロードすることもできます。 。

この場合、現在リリースされている最新の安定バージョンの 1 つである Apache Tomcat、8.5.5 をダウンロードします。

wget http://redrockdigimark.com/apachemirror/tomcat/tomcat-8/v8.5.5/bin/apache-tomcat-8.5.5.tar.gz

2. ファイルがダウンロードされたら、tar コマンドを使用してコンテンツを解凍し、次のようなディレクトリ構造を表示します。

tar -xvf apache-tomcat-8.5.5.tar.gz
cd apache-tomcat-8.5.5/
ls -l
total 112
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 bin
drwx------. 2 tomcat tomcat  4096 Sep  1 01:23 conf
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 lib
-rw-r-----. 1 tomcat tomcat 57092 Sep  1 01:23 LICENSE
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 logs
-rw-r-----. 1 tomcat tomcat  1723 Sep  1 01:23 NOTICE
-rw-r-----. 1 tomcat tomcat  7063 Sep  1 01:23 RELEASE-NOTES
-rw-r-----. 1 tomcat tomcat 15946 Sep  1 01:23 RUNNING.txt
drwxr-x---. 2 tomcat tomcat  4096 Sep 29 11:26 temp
drwxr-x---. 7 tomcat tomcat  4096 Sep  1 01:22 webapps
drwxr-x---. 2 tomcat tomcat  4096 Sep  1 01:21 work

ステップ 2: Apache Tomcat サーバーを構成する

3. 探している設定変更は conf ディレクトリ内にあり、Tomcat の起動に役立つすべての設定ファイルを配置するために使用されます。

conf ディレクトリの内容は次のようになります。

cd conf/
ls -l
total 224
-rw-------. 1 tomcat tomcat  12502 Sep  1 01:23 catalina.policy
-rw-------. 1 tomcat tomcat   7203 Sep  1 01:23 catalina.properties
-rw-------. 1 tomcat tomcat   1338 Sep  1 01:23 context.xml
-rw-------. 1 tomcat tomcat   1149 Sep  1 01:23 jaspic-providers.xml
-rw-------. 1 tomcat tomcat   2358 Sep  1 01:23 jaspic-providers.xsd
-rw-------. 1 tomcat tomcat   3622 Sep  1 01:23 logging.properties
-rw-------. 1 tomcat tomcat   7283 Sep  1 01:23 server.xml
-rw-------. 1 tomcat tomcat   2164 Sep  1 01:23 tomcat-users.xml
-rw-------. 1 tomcat tomcat   2633 Sep  1 01:23 tomcat-users.xsd
-rw-------. 1 tomcat tomcat 168133 Sep  1 01:23 web.xml

4. この場合、私にとって重要なのは server.xml ファイルです。したがって、他のファイルやディレクトリについては詳しく説明しません。

server.xml は、tomcat に、どのポートで起動するか、どのディレクトリのコンテンツをデプロイするか、その他多くの主要な基本設定を指示する設定ファイルです。

ファイルを開くと基本的には以下のようになります。

vim server.xml

ステップ 3: Apache Tomcat での Web アプリのデプロイ

5. ここで、Apache tomcat に新しい Web アプリケーションをデプロイします。まず、サービス タグが閉じられている場所 を見つけて、最初の閉じられたタグの後に以下の行を挿入します。サービスタグ。

<Service name="webapps2">
    <Connector port="7070" maxHttpHeaderSize="7192"
        maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
        enableLookups="false" redirectPort="7443" acceptCount="100"
        connectionTimeout="20000" disableUploadTimeout="true" />
        <Connector port="7072" 
        enableLookups="false" redirectPort="7043" protocol="AJP/1.3" />

    <Engine name="webapps2" defaultHost="localhost">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase"/>
            <Host name="localhost" appBase="webapps2"
                unpackWARs="true" autoDeploy="true"
                 xmlValidation="false" xmlNamespaceAware="false">
            </Host>
    </Engine>
</Service>

ご覧のとおり、デフォルトの Tomcat はポート 8080 で始まるため、新しく挿入したエントリでコネクタ ポートを 7070 に変更しました。これを完全に設定すると、2 つの Web サーバーがポート 80807070 で実行されるようになります。

6. server.xml に加えた変更を保存した後、Apache のメイン内に webapps2 というディレクトリを Apache に作成します。

cd /home/tomcat/apache-tomcat-8.5.5/
mkdir webapps2

私が提供した server.xml の新しいエントリを観察すると、サービス名、アプリ ベース、およびエンジンの名前が webapps2 であることがわかります。それが、webapps2 という名前のディレクトリを作成した理由です。必要に応じて作成できますが、必要に応じてエントリを必ず変更してください。

7. 2 番目の Web サーバーが稼働していることを確認するために、webapps ディレクトリの内容を webapps2 ディレクトリにコピーしました。

cp -r webapps/* webapps2/

8. ここからがエキサイティングな部分です。サーバーを起動して、動作しているかどうかを確認します。 bin ディレクトリに移動し、startup.sh スクリプトを実行します。ログ ディレクトリにある catalina.out ファイル内のログを表示できます。

cd bin/
./startup.sh
Using CATALINA_BASE:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_HOME:   /home/tomcat/apache-tomcat-8.5.5
Using CATALINA_TMPDIR: /home/tomcat/apache-tomcat-8.5.5/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /home/tomcat/apache-tomcat-8.5.5/bin/bootstrap.jar:/home/tomcat/apache-tomcat-8.5.5/bin/tomcat-juli.jar
Tomcat started.

9. ログを参照すると、webappswebapps2 の両方がデプロイされ、アプリが問題なく起動していることがわかります。 。

cd logs/
tail -25f catalina.out 
29-Sep-2016 12:13:51.210 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples
29-Sep-2016 12:13:51.661 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/examples has finished in 452 ms
29-Sep-2016 12:13:51.664 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs
29-Sep-2016 12:13:51.703 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/docs has finished in 39 ms
29-Sep-2016 12:13:51.704 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager
29-Sep-2016 12:13:51.744 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps/host-manager has finished in 39 ms
29-Sep-2016 12:13:51.748 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-8080]
29-Sep-2016 12:13:51.767 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service webapps2
29-Sep-2016 12:13:51.768 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.5
29-Sep-2016 12:13:51.777 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/manager has finished in 102 ms
29-Sep-2016 12:13:51.879 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT
29-Sep-2016 12:13:51.915 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/ROOT has finished in 35 ms
29-Sep-2016 12:13:51.927 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples
29-Sep-2016 12:13:52.323 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
29-Sep-2016 12:13:52.337 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/examples has finished in 414 ms
29-Sep-2016 12:13:52.341 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/docs has finished in 29 ms
29-Sep-2016 12:13:52.371 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager
29-Sep-2016 12:13:52.417 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory /home/tomcat/apache-tomcat-8.5.5/webapps2/host-manager has finished in 46 ms
...

10. このシナリオでは、使用したサーバーの IP は 172.16.1.39 で、単一の Tomcat コンテナ内で 2 つの Web サーバーを起動できることがわかります。

http://172.16.1.39:8080   [1st Web App]
http://172.16.1.39:7070   [2nd Web App]

この記事が皆さんにとって有益で楽しいものであることを願っています。 TecMint と常に連絡を取り合い、この記事に関するご質問がございましたら、お気軽にお問い合わせください。