web-dev-qa-db-fra.com

La liaison de Tomcat7 au port 80 échoue dans Ubuntu 14.04LTS

J'ai un problème avec mon installation de Tomcat7 sur un système Ubuntu récemment mis à jour. Depuis la mise à jour vers 14.04 LTS, Tomcat refuse de démarrer sur le port 80 avec une erreur que je ne peux pas résoudre, ni rien trouver sur la façon de le corriger:

    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)

Le fait est que j'ai fait exactement ce que j'ai fait dans Ubuntus précédent (exécutait 12.04 LTS), en bref, j'ai édité le server.xml sur le port 80 et j'ai également changé authbind dans/etc/default/Tomcat7 en oui, donc essentiellement tout ce que vous devez faire pour exécuter Tomcat sur le port 80.

Faire ces étapes sur un 12.04LTS fonctionne très bien, juste sur le 14.04LTS, il lance maintenant cette erreur "fichier ou répertoire introuvable".

De plus, lors de la mise à niveau d'un 12.04LTS (sur lequel Tomcat fonctionne correctement sur le port 80) vers 14.04LTS, il renvoie soudainement l'erreur ci-dessus, tandis que toutes les configurations sont identiques à celles qui fonctionnaient dans 12.04LTS.

J'espère que n'importe qui peut m'aider à résoudre ce problème.

39
JS16

Travaux suivants:

apt-get install authbind

Tout d'abord, définissez AUTHBIND=yes dans /etc/default/Tomcat7 fichier

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

Il y avait une URL de référence ici, mais le site Web a été piraté (marqué comme non sûr dans Edge et Chrome me demande d'installer une extension de navigateur).

117
Chetan

Laissez le port 8080 par défaut dans server.xml

Exécutez: Sudo/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080

FR Cette redirection du trafic du port 80 vers 8080 (par défaut dans Tomcat) dans Ubuntu 14.04, il n'est pas possible de définir le port par défaut sur 80 dans server.xml.

FR (Ceci redirige le trafic du port 80 vers 8080 (Par défaut dans Tomcat) dans Ubuntu 14.04 il n'est pas possible de mettre le port par défaut à 80 dans server.xml.)

Pour rendre cela persistant: Sudo apt-get install iptables-persistent

FR Ce package vous permet d'enregistrer les règles iptables entrées précédemment. Assurez-vous de répondre oui (enregistrez les paramètres actuels). FR Ce paquet permet de sauvegarder les règles iptables entrées précédemment. Il faut répondre ou aux questions, (sauvegarder les paramètres actuels).

13
JEAN

Démarrer les services Tomcat en utilisant authbind cela permettra à l'utilisateur de démarrer des ports inférieurs à 1024, nous n'avons pas besoin de rediriger ou d'iptables.

apt-get install authbind -y

Pour installer le logiciel Authbind

chmod -R 755/etc/authbind

groupe doit être un groupe d'utilisateurs.

chown -Rh root: groupe/etc/authbind

Après cela, exécutez les commandes ci-dessous

cd/etc/authbind/byuid

A titre d'exemple, l'imagne id est 2000, vous pouvez utiliser votre numéro d'identifiant

écho '0.0.0.0/0:1,1023'> 2000

Ce fichier doit appartenir à l'utilisateur et au groupe.

chown: 2000

chmod 700 2000

Ajoutez la ligne ci-dessous dans le fichier de démarrage Tomcat $ CATALINA_BASE/startup.sh

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

Pour démarrer Tomcat à l'aide du service Authbind startup.sh

Commentez la ligne ci-dessous

#$CATALINA_HOME/bin/startup.sh

Ajouter cette fin comme fin de fichier

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

$AUTHBIND_COMMAND $CATALINA_HOME/bin/startup.sh   

vous devriez maintenant pouvoir démarrer les services Tomcat en tant qu'utilisateur avec moins de 1024 ports.

1
PKumar

J'ai eu le même problème. Au final, j'ai utilisé une redirection de port iptables au lieu du mécanisme authpriv

c'est à dire.

1) dans/etc/default/Tomcat7, définissez authpriv = no

2) dans /etc/Tomcat7/server.xml, utilisez

<Port du connecteur = 8080 ...

3) ufw autorise 8080/tcp

4) suivez les instructions ici: https://serverfault.com/questions/238563/can-i-use-ufw-to-setup-a-port-forward

La même chose peut être faite pour le port 443 (SSL) si nécessaire

1
Oliver Kohll