(1)複数ポートで待ち受けるには
confにあるserver.xmlを開き、<service>のタグ部分を増やせばOK。
もともとある8080を参考に、各種ポートが重複しないようにすること。
サービス名やエンジン名も注意する。
各サービス毎に稼動するアプリケーションを変更したい場合(これが目的で分けると思う)
<Host>タグのappBaseを変更すること。
変更した名前のディレクトリを作成して、そこにモジュールを配置すればめでたくポートでアプリを
分けられる。(1つのマネージャで複数Serviceを、みたいなのはできないっぽい。そこまで凝ったことを
したいならWebSphereでどうぞか。)
こんな感じですかね
<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.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
<Service name="Catalina2">
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
<Engine name="Catalina2" 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>
ポート番号を80などのwell known なものにしたときは、実行ユーザーによっては
権限のエラーになる。
この場合、rootで起動させるか、iptablesでポートフォワードさせて、
<Connector>にproxyPort="80"を設定する
(2)不要ポート
ajpが要らない場合は、コメント化しておくとポートの節約になる。
(3)shutdownポート
デフォルトでは8005が停止ポートになっており、
ここに"SHUTDOWN"の文字を送り込むと、tomcatが停止する。
例
echo "SHUTDOWN" | nc localhost 8005
デフォルトではlocalhostのみにバインドされているが、
認証もへったくれもないので、ちょっと気持ち悪い。
対策としては、
(1)ポートを変える -> スキャンされたら意味ない
(2)停止用文字を変更する ->shutdown="SHUTDOWN"をshutdown="ICANFLY"のように推測されないものに変更する
(3)ポート自体を無効化する ->port="-1" ただしshutdown.shが使えなくなる(killするしかなくなる)
どれもこれも一長一短なので、FWやiptableなども組み合わせて守るべきなんでしょうね。
posted by koteitan at 14:44|
Comment(0)
|
TrackBack(0)
|
その他備忘録
|

|