web-dev-qa-db-ja.com

2つの異なるポートでTomcatサーバーを実行する

Tomcatサーバーをデプロイして、2つのポートを同時にリッスンするようにします(両方ともhttpプロトコルの場合)。

この要件correcltyを確実に理解するために、サーバーインスタンスは1つしかありませんが、HTTPプロトコル用に2つのポートでリッスンする必要があります。たとえば、ポート番号7080および8080を使用して、だれでも私のサーバーにデプロイされたアプリケーションにアクセスできます。

それは可能ですか?可能であれば、どうすればこれを達成できますか?

45
Narendra

とても簡単です。必要なのは、conf/server.xml構成ファイルを使用して、必要なポートに新しいコネクタを追加します。たとえば、次のようなコネクタがある場合:

<Connector port="8080" 
           protocol="HTTP/1.1" 
           connectionTimeout="20000" 
           redirectPort="8443" 
           URIEncoding="UTF-8" />

上記と同じ新しいコネクタを構成ファイルに追加するだけですが、ポートパラメータを変更します。それで全部です。再起動すると完了です。

46

はい、可能です。 server.xml(confという名前のフォルダーにある)を次のように編集します。

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />
<Connector port="8081" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8444" />

これにより、Tomcatは両方のポート8080および8081をリッスンするようにセットアップされます。

documenation の状態:

  • port:TCPこのコネクタがサーバーソケットを作成し、着信接続を待機するポート番号。オペレーティングシステム1つのサーバーアプリケーションのみが特定のIPアドレスの特定のポート番号をリッスンできるようにします特別な値0(ゼロ)が使用される場合、Tomcatはこのコネクタに使用する空きポートをランダムに選択します。組み込みおよびテストアプリケーションで役立ちます。

  • redirectPort:このコネクターが非SSL要求をサポートしており、一致する<security-constraint>はSSLトランスポートを必要とします。Catalinaはここで指定されたポート番号にリクエストを自動的にリダイレクトします。

そのため、このようなリダイレクトをどのように機能させるかによって、redirectPortの変更はオプションです。

20
Magnilex

/conf/server.xmlで2つの異なるサービスを定義できます。

例は次のとおりです。

<Service name="Catalina_2">
    <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
    <Engine name="Catalina_2" defaultHost="localhost">
      <Realm className="org.Apache.catalina.realm.LockOutRealm">
        <Realm className="org.Apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps_2" unpackWARs="true" autoDeploy="true">
        <Valve className="org.Apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>


  <Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.Apache.catalina.realm.LockOutRealm">
        <Realm className="org.Apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>
      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.Apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
      </Host>
    </Engine>
  </Service>

:Tomcatヒープサイズを増やす必要がある場合があります。

17
Vinay Thube

server.xmlで次のコードを指定できます

<Service name="sample">

    <Connector port="81" protocol="HTTP/1.1" maxThreads="100" connectionTimeout="2000"/>

    <Engine name="sample" defaultHost="sample">
         <Host name="myhostname" appBase="webapp2">
             <Context docBase="C:\websites\sample\" />
         </Host>
     </Engine>

</Service>
4
sumit sharma

別のポートでTomcatを実行します。 server.xmlファイルのサービスタグ内の4つの項目を変更する必要があります

  1. ポート番号を変更する必要があります。 8080から80など
  2. 8443から8444のようにredirectPortを変更する必要があります
  3. catalinaのようなエンジン名をCatalina_2に変更する必要があります
  4. webappsのようなappBase名をwebapps_1に変更する必要があります
3
Tejpratap

Tomcatを実行しているユーザーを確認してください。特権ポートで使用する場合は、rootユーザーで使用する必要があります。

もう1つできることは、iptablesでポート80を8080にリダイレクトすることです。このようなもの:

iptables -t nat -A PREROUTING -d 192.168.10.16 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

それが役に立てば幸い

3
Cyberzoo