jettyのインストールごときで はまったり 困ったり した
ホスト名がtaritariだったのがいかん。
Ubuntu 12.04 LTS であれば、普通はjettyのインストールは簡単。
netstat偉大であった。むしろ私がばかであった
ためしにlocalhostから wget 127.0.0.1:8080 とかやったら正しいwelcomeページが出た。ひでぇ
(ssh したterminalでnmap localhostするだけではなく手元からもnmapをするべきなのを忘れてた。iptablesとか操ってる時は気づくのにねぇ)
○ jetty.host が 127.0.0.1 にマッピングされる
/etc/jetty/jetty.xml に以下のような部分があるのを発見
Ubuntu 12.04 LTS であれば、普通はjettyのインストールは簡単。
- apt-get install jetty とかやる
- /etc/default/jetty で NO_START を 0、JAVA_HOMEを設定する
これだけ。
ところがどっこいそのあと http://(host):8080/ で外からつないでも404が出るのだ……
おかしい。nmap localhostと打ったら 8080 に誰かいるのが間違いないし、lsofによれば一応それはjettyさんなのだ!
○ ヒントからわかる
netstat -antp8080ポートが127.0.0.1向けにしか開いてない (上記の「外から」に注目)
netstat偉大であった。むしろ私がばかであった
ためしにlocalhostから wget 127.0.0.1:8080 とかやったら正しいwelcomeページが出た。ひでぇ
(ssh したterminalでnmap localhostするだけではなく手元からもnmapをするべきなのを忘れてた。iptablesとか操ってる時は気づくのにねぇ)
○ jetty.host が 127.0.0.1 にマッピングされる
/etc/jetty/jetty.xml に以下のような部分があるのを発見
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
<Set name="host"><SystemProperty name="jetty.host" /></Set>
<Set name="port"><SystemProperty name="jetty.port" default="8080"/></Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">8443</Set>
<Set name="lowResourcesConnections">5000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
つまり、jetty.hostがおかしいと何か起こるわけだ。しかもこれ、多分hostnameから何らかの形で引いたIPアドレスを参照するんだねぇと。
しかしDNSにその名前はないんだ。だって実験用で全部静的IPアドレス (192.168.0.Xみたいな) を割り当ててるから。
というわけで当該行をコメントアウトする。具体的には上記の "host" 関係の一行。
そして netstat さんは比較的意図通りの結果を返してきたんである
そして netstat さんは比較的意図通りの結果を返してきたんである
tcp6 0 0 :::8080 :::* LISTEN 14036/jsvc.exec
つながった。
しかしTomcatとJettyのどちらでも良いっていう状況で試しに使ってみたら大変な目にあった。さすがたりたり。詳しい人はコメントアウト以外、出来れば /etc/hosts とかそういうレベルでの解決方法を教えてくれると助かります。
追記:
コメントアウトするよりは /etc/default/jetty で JETTY_HOST=0.0.0.0 とする方が正当のようだ。
# おまけ: 実は上の話はもっと込み入ったことをやろうとしている最中に「そもそもjettyさんが息してない!」と気づいて一旦全部uninstall後にクリーンインストールして気づいた。多分その過程が今回の話に影響を与えているはずはないのだけど、一応。
しかしTomcatとJettyのどちらでも良いっていう状況で試しに使ってみたら大変な目にあった。さすがたりたり。詳しい人はコメントアウト以外、出来れば /etc/hosts とかそういうレベルでの解決方法を教えてくれると助かります。
追記:
コメントアウトするよりは /etc/default/jetty で JETTY_HOST=0.0.0.0 とする方が正当のようだ。
# Listen to connections from this network host
# Use 0.0.0.0 as host to accept all connections.
# Uncomment to restrict access to localhost
# JETTY_HOST=$(uname -n)
JETTY_HOST=0.0.0.0
# おまけ: 実は上の話はもっと込み入ったことをやろうとしている最中に「そもそもjettyさんが息してない!」と気づいて一旦全部uninstall後にクリーンインストールして気づいた。多分その過程が今回の話に影響を与えているはずはないのだけど、一応。