web-dev-qa-db-ja.com

複数のTomcatインスタンスをセットアップする方法は?

Ubuntuサーバーで複数のTomcatインスタンスを実行する適切な方法はありますか?

いくつかの検索を行ったところ、2つのオプションが見つかりました。

  1. 圧縮されたTomcatをダウンロードして、手動で展開します。明らかな欠点は、apt-getを使用してアップグレードされないことです。
  2. 高度なスクリプト を使用します。これは、運用サーバーでは危険です。

別のインスタンスをきれいに実行する他のアイデアはありますか?

前もって感謝します、

アダム

5
Adam Matan

Ubuntu 14.04.3 LTSでこれを設定しています。 Tomcat7パッケージで提供されるTomcat 7を使用しています。

標準のinitスクリプトを提供することにより、Tomcatをシステムサービスとしてインストールします。

/etc/init.d/Tomcat7

および構成ファイル:

/etc/default/Tomcat7

Tomcatは、同じサーバーソフトウェアで複数のインスタンスを実行することをサポートしています。サーバーソフトウェアは$CATALINA_HOMEにあり、インスタンスのファイルは$CATALINA_BASEにあります。それらは/etc/init.d/Tomcat7で次のように定義されています:

NAME=Tomcat7
CATALINA_HOME=/usr/share/$NAME
CATALINA_BASE=/var/lib/$NAME

(注意:後者のファイルを編集するときは、前者へのシンボリックリンクがあることに注意してください。)

Tomcat7-userパッケージは、追加のTomcatインスタンスのディレクトリツリーを作成するために使用できるユーティリティTomcat7-instance-createを提供します。これには、インスタンスを手動で開始および停止するスクリプトを含むbin/ディレクトリが含まれます。

私が見つけていないのは、このような追加のインスタンスをシステムサービスに変換するためのサポートです。したがって、手動で行う必要があります。次のように:

  1. サービス名の値を選択します。新しいinitスクリプトでは$NAMEになります。
  2. Tomcatインスタンスのファイルを所有し、Tomcatを実行する名前の新しいユーザーを作成します。システムユーザーにすることもできます。そのプロパティはTomcat7ユーザーと同じである必要があります。
  3. そのユーザーとしてTomcat7-instance-createを実行して、Tomcatインスタンスを作成します。
  4. それを設定し、それとともに実行したいWebアプリケーションをインストールします。 bin/startup.shおよびbin/shutdown.shスクリプトを使用してテストします。
  5. ログを/var/log/$NAMEに移動し、シンボリックリンクして新しいTomcatインスタンスのlogs/に戻します。
  6. /etc/init.d/$NAME、たとえば/etc/init.d/Tomcat7をコピーおよび変更し、$NAMEへの割り当てを変更します。 (スクリプト全体をコピーする必要はなく、スクリプトへのリンクを作成することができればより良いでしょう。)
  7. Tomcatインスタンスとユーザーを指すように/etc/default/$NAMEと記述します。
  8. upstart-rc.dを使用して、新しいサービスをインストールします。

Kodjo-Kuma Djomedaの詳細 の一部を収集しました。

3
Reinier Post

複数のTomcatインスタンスを実行する代わりに、いくつかのwebappsディレクトリを構成することを検討しましたか?

もちろん、本当に複数のインスタンスが必要な場合もありますが、同じアプリケーションを複数のホストに個別に提供する場合は、server.xmlに複数の宣言を追加することでそれを行うことができます。

  <Host name="Host1.example.com" appBase="Host1"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

  <Host name="Host2.example.com" appBase="Host2"
    unpackWARs="true" autoDeploy="true" 
    xmlValidation="false" xmlNamespaceAware="false" />

これで、「/ var/lib/Tomcat6/Host1」および「/ var/lib/Tomcat6/Host2」ディレクトリを作成し、それらにWARファイルをデプロイできます。

私は次のことをしました:

tomcatを作成するディレクトリで次のコマンドを実行します。

Tomcat8-instance-create staging

ポートをユニークなものに変更しました(他のTomcat8を実行している場合:

nano conf/server.xml

元のTomcat8と同じユーザーを使用するため、すべてのファイルがTomcat8によって所有されていることを確認します

chown -R Tomcat8:Tomcat8 * 

/etc/init.d/にあるTomcat8スクリプトをコピーしました

cp /etc/init.d/Tomcat8 /etc/init.d/Tomcat8_staging

スクリプトを編集して、新しいステージング環境で動作するようにしました。

nano /etc/init.d/Tomcat8_staging

私は次の行を編集する必要がありました:

NAME=Tomcat8_staging
DEFAULT=/etc/default/Tomcat8
CATALINA_BASE=/app/Tomcat8/staging
CATALINA_HOME=/usr/share/Tomcat8

そして最後に、このようにサーバーを有効にしました:

systemctl enable Tomcat8_staging

起動するとき:

service Tomcat8_staging start

ポリシーファイルが見つからないというエラーが発生したため、confディレクトリにそのリンクを作成しました。

ln -s /etc/Tomcat8/policy.d policy.d
0
tibi