wake-up-neo.com

Tomcat7-Bindung an Port 80 schlägt in Ubuntu 14.04LTS fehl

Ich habe ein Problem mit meiner Tomcat7-Installation auf einem neu aktualisierten Ubuntu-System. Seit dem Update auf 14.04 LTS weigert sich Tomcat, auf Port 80 mit einem Fehler zu starten, den ich nicht beheben kann.

    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)

Die Sache ist, ich habe genau das getan, was ich in früheren Ubuntus-Versionen (mit 12.04 LTS) getan habe. Kurz gesagt, ich habe die Datei server.xml auf Port 80 geändert und die Option authbind in/etc/default/Tomcat7 auf yes geändert Im Grunde alles, was Sie tun müssen, um Tomcat auf Port 80 auszuführen.

Das Ausführen dieser Schritte auf einem 12.04LTS funktioniert einwandfrei. Bei einem 14.04LTS wird jetzt der Fehler "Datei oder Verzeichnis nicht gefunden" ausgegeben.

Auch beim Upgrade eines 12.04LTS (auf dem Tomcat auf Port 80 einwandfrei läuft) auf 14.04LTS wird plötzlich der obige Fehler ausgegeben, während alle Konfigurationen mit denen von 12.04LTS identisch sind.

Ich hoffe, jemand kann mir helfen, dieses Problem zu beheben.

39
JS16

Folgende Arbeiten:

apt-get install authbind

Erstes Set AUTHBIND=yes im /etc/default/Tomcat7 Datei

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

Es gab hier eine Referenz-URL, aber die Website wurde gehackt (in Edge als unsicher markiert und Chrome fordert mich auf, eine Browser-Erweiterung zu installieren).

117
Chetan

Lassen Sie den Port 8080 standardmäßig in server.xml

Führen Sie Folgendes aus: Sudo/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

DE Durch diese Weiterleitung des Datenverkehrs von Port 80 nach 8080 (Standard in Tomcat) in Ubuntu 14.04 ist es nicht möglich, den Standardport in server.xml auf 80 zu setzen.

FR (Umleitung des Trafic du Port 80 in Version 8080 (Par défaut dans Tomcat) in Ubuntu 14.04. Möglicherweise wird ein Port von 80 in server.xml angezeigt.)

So machen Sie dies dauerhaft: Sudo apt-get install iptables-persistent

DE Mit diesem Paket können Sie zuvor eingegebene iptables-Regeln speichern. Stellen Sie sicher, dass Sie mit Ja antworten (speichern Sie die aktuellen Einstellungen). FR Es ist ein Paket mit Sauvegarder-Informationen. Sie haben Fragen (sauvegarder les paramètres actuels).

13
JEAN

Starten Sie Tomcat-Dienste mit authbind. Dadurch können Benutzer Ports mit weniger als 1024 starten, die nicht umgeleitet oder iptables werden müssen.

apt-get install authbind -y

So installieren Sie die Authbind-Software

chmod -R 755/etc/authbind

gruppe sollte Benutzergruppe sein.

chown -Rh root: group/etc/authbind

Danach führen Sie die folgenden Befehle aus

cd/etc/authbind/byuid

Als Beispiel für die imagne-Benutzer-ID 2000 können Sie Ihre Benutzer-ID-Nummer verwenden

echo '0.0.0.0/0:1,1023'> 2000

Diese Datei sollte dem Benutzer und der Gruppe gehören.

chown: 2000

chmod 700 2000

Fügen Sie die folgende Zeile in die Tomcat-Startdatei $ CATALINA_BASE/startup.sh ein

export Java_OPTS="$Java_OPTS -Djava.net.preferIPv4Stack=true"

Zum Starten von Tomcat mit dem Authbind-Dienst startup.sh

Kommentieren Sie die folgende Zeile

#$CATALINA_HOME/bin/startup.sh

Fügen Sie dieses Ende als Ende der Datei hinzu

AUTHBIND_COMMAND="/usr/bin/authbind --deep /bin/bash -c " 

$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh   

jetzt sollten Sie in der Lage sein, Tomcat-Dienste als Benutzer mit weniger als 1024 Ports zu starten.

1
PKumar

Ich hatte das gleiche problem Am Ende habe ich eine iptables-Portumleitung anstelle des authpriv-Mechanismus verwendet

d.h.

1) Setzen Sie in/etc/default/Tomcat7 authpriv = no

2) Verwenden Sie in /etc/Tomcat7/server.xml

<Connector-Port = 8080 ...

3) ufw 8080/tcp erlauben

4) Folgen Sie den Anweisungen hier: https://serverfault.com/questions/238563/can-i-use-ufw-to-setup-a-port-forward

Dies kann bei Bedarf auch für Port 443 (SSL) durchgeführt werden

1
Oliver Kohll