![tomcat6 がポート 80 にバインドしないのはなぜですか?](https://rvso.com/image/959228/tomcat6%20%E3%81%8C%E3%83%9D%E3%83%BC%E3%83%88%2080%20%E3%81%AB%E3%83%90%E3%82%A4%E3%83%B3%E3%83%89%E3%81%97%E3%81%AA%E3%81%84%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
ポート80でTomcatを実行することの影響は承知していますが、迅速な解決策を探しています。私はこれに従おうとしていますチュートリアルチュートリアルに従って、2 つの変更を加えました。
- tomcat6はtomcatが実行されるユーザー名です
- tomcat conf ファイルの場所:
/usr/share/tomcat6/bin/catalina.sh
しかし、まだ権限エラーが出ています。Java はポート 80 にバインドできないと言っています。他に何をすべきでしょうか? デバッグのために他にどのような情報を提供すべきでしょうか? 念のため確認しますが、ポート 80 で実行されているものは他にはありません
答え1
次のようにして、AUTOBIND プロパティを/etc/default/tomcat6
「yes」に変更できます。
AUTHBIND=yes
Tomcat を再起動すると、使用可能な特権ポート (1 ~ 1023) を使用できるようになります。
答え2
実際に Tomcat の設定に触れることなくこれを行うには、2 つの方法があります。
ポート 80 からポート 8080 にトラフィックをリダイレクトする iptables スクリプトを作成できます (そうすれば、Tomcat の設定をいじる必要はありません)
iptables用
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j REDIRECT --to-port 80
これでうまくいくでしょう! (uppstartで自動的に実行されるようにスクリプトを作成してください
または、Apache リバース プロキシを作成して、実際に Tomcat サーバーへの接続をプロキシすることもできます (これは、リクエストをキャッシュして接続を高速化できるため便利です)。
答え3
Tomcat HTTPコネクタでは、ポート80のコネクタが127.1だけではなくすべてのインターフェース、つまり0.0.0.0にバインドされていることを確認してください。これが、次のようなURLで接続できない理由かもしれません。 http://10.0.0.2:80 しかし、 http://127.1:80
答え4
authbind を使用して tomcat サービスを開始します。これにより、ユーザーは 1024 未満のポートを開始できるようになり、リダイレクトや iptables は必要ありません。
apt-get install authbind -y
Authbindソフトウェアをインストールするには
chmod -R 755 /etc/authbind
グループはユーザー グループである必要があります。
chown -Rh ルート:グループ /etc/authbind
その後、以下のコマンドを実行します
/etc/authbind/byuid をコピーします
例えば、ユーザーIDが2000だとすると、ユーザーID番号を使用できます。
エコー '0.0.0.0/0:1,1023' > 2000
そのファイルはユーザーとグループが所有する必要があります。
チョーン:2000
chmod 700 2000
Tomcatの起動ファイル$CATALINA_BASE/startup.shに以下の行を追加します。
export JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true"
Authbindサービスstartup.shを使用してtomcatを起動する場合
以下の行にコメントしてください
#$CATALINA_HOME/bin/startup.sh
ファイルの末尾にThis Endを追加します
AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c "
$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh
これで、1024 個未満のポートを持つユーザーとして Tomcat サービスを開始できるはずです。