web-dev-qa-db-ja.com

Ubuntu 14.04LTSでTomcat80がポート80にバインドできない

新しく更新されたUbuntuシステムへのTomcat7のインストールに問題があります。 14.04 LTSへのアップデート以降、Tomcatはポート80での起動を拒否しましたが、エラーは解決できず、修正方法については何も見つかりませんでした。

    Information: Initializing ProtocolHandler ["http-bio-80"]
Apr 24, 2014 4:39:37 PM org.Apache.coyote.AbstractProtocol init
Schwerwiegend: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"]
Java.net.SocketException: Datei oder Verzeichnis nicht gefunden
    at Java.net.PlainSocketImpl.socketBind(Native Method)
    at Java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.Java:376)
    at Java.net.ServerSocket.bind(ServerSocket.Java:376)
    at Java.net.ServerSocket.<init>(ServerSocket.Java:237)
    at Java.net.ServerSocket.<init>(ServerSocket.Java:181)
    at org.Apache.Tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.Java:49)
    at org.Apache.Tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.Java:397)
    at org.Apache.Tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.Java:640)
    at org.Apache.coyote.AbstractProtocol.init(AbstractProtocol.Java:434)
    at org.Apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.Java:119)
    at org.Apache.catalina.connector.Connector.initInternal(Connector.Java:978)
    at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
    at org.Apache.catalina.core.StandardService.initInternal(StandardService.Java:559)
    at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
    at org.Apache.catalina.core.StandardServer.initInternal(StandardServer.Java:813)
    at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
    at org.Apache.catalina.startup.Catalina.load(Catalina.Java:638)
    at org.Apache.catalina.startup.Catalina.load(Catalina.Java:663)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:57)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:606)
    at org.Apache.catalina.startup.Bootstrap.load(Bootstrap.Java:280)
    at org.Apache.catalina.startup.Bootstrap.main(Bootstrap.Java:454)

問題は、以前のUbuntu(12.04 LTSを実行していた)で行ったこととまったく同じことです。つまり、server.xmlをポート80に編集し、/ etc/default/Tomcat7のauthbindをyesに変更しました。基本的に、ポート80でTomcatを実行するために必要なすべてのこと。

12.04LTSでこれらの手順を実行すると正常に動作しますが、14.04LTSではこの「ファイルまたはディレクトリが見つかりません」エラーがスローされます。

また、Tomcatがポート80で正常に動作する12.04LTSを14.04LTSにアップグレードすると、突然上記のエラーがスローされますが、すべての構成は12.04LTSで機能したものと同じです。

誰でもこの問題の解決を手伝ってくれることを願っています。

39
JS16

以下の作品:

apt-get install authbind

まず、AUTHBIND=yes in /etc/default/Tomcat7ファイル

Sudo touch /etc/authbind/byport/80
Sudo chmod 500 /etc/authbind/byport/80
Sudo chown Tomcat7 /etc/authbind/byport/80

ここに参照URLがありましたが、Webサイトがハッキングされました(Edgeで安全でないとマークされ、Chromeブラウザー拡張機能のインストールを求められます)

117
Chetan

Server.xmlでデフォルトでポート8080を使用する

実行:Sudo/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

ENこれは、Ubuntu 14.04でポート80から8080(Tomcatではデフォルト)にトラフィックをリダイレクトします。server.xmlでデフォルトポートを80に設定することはできません。

FR(80番ポートと8080番ポートのトラフィック)

これを永続化するには:Sudo apt-get install iptables-persistent

ENこのパッケージを使用すると、以前に入力したiptablesルールを保存できます。必ずyesと答えてください(現在の設定を保存します)。 FR Ceパケットソープガーデレレグレップiptablesentréesprécédemment。 Il fautrépondreou auxの質問(sauvegarder lesparamètresactuels)。

13
JEAN

Authbindを使用してTomcatサービスを開始すると、ユーザーがリダイレクトまたはiptablesする必要のない1024未満のポートを開始できます。

apt-get install authbind -y

Authbindソフトウェアをインストールするには

chmod -R 755/etc/authbind

グループはユーザーグループでなければなりません。

chown -Rh root:group/etc/authbind

その後、以下のコマンドを実行します

cd/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サービスを開始できるはずです。

1
PKumar

同じ問題がありました。最後に、authprivメカニズムの代わりにiptablesポートリダイレクトを使用しました

つまり.

1)/ etc/default/Tomcat7で、authpriv = noを設定します

2)/etc/Tomcat7/server.xmlで、使用

<コネクタポート= 8080 ...

3)ufwは8080/tcpを許可します

4)こちらの手順に従ってください: https://serverfault.com/questions/238563/can-i-use-ufw-to-setup-a-port-forward

必要に応じて、ポート443(SSL)でも同じことができます。

1
Oliver Kohll