Tomcat7 Lier au port 80 échoue dans Ubuntu 14.04LTS

J’ai un problème avec mon installation tomcat7 sur un système Ubuntu récemment mis à jour. Depuis la mise à jour à 14.04 LTS, tomcat refuse de démarrer sur le port 80 avec une erreur que je ne peux pas résoudre, ni de trouver quoi que ce soit sur la façon de le réparer:

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.(ServerSocket.java:237) at java.net.ServerSocket.(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) 

La chose est, j’ai fait exactement ce que j’ai fait dans Ubuntus précédent (exécutait 12.04 LTS), en bref, édité le server.xml au port 80 et aussi changé authbind dans / etc / default / tomcat7 à 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 bien, juste sur le 14.04LTS, il jette maintenant cette erreur “fichier ou répertoire introuvable”.

De même, lors de la mise à niveau de 12.04LTS (sur laquelle Tomcat fonctionne correctement sur les ports 80) à 14.04LTS, l’erreur ci-dessus apparaît soudainement, alors que toutes les configurations sont identiques à celles de 12.04LTS.

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

Travaux suivants:

apt-get install authbind

Tout d’abord, définissez AUTHBIND=yes dans le fichier /etc/default/tomcat7

 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 étant dangereux dans Edge, et Chrome me demande d’installer une extension de navigateur).

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

Exécuter: sudo / sbin / iptables -t nat -I PREROUTING -p tcp –port 80 -j REDIRECT –à -port 8080

FR Ceci redirige le trafic du port 80 vers le 8080 (par défaut dans tomcat) dans Ubuntu 14.04, il est impossible de définir le port par défaut sur 80 dans server.xml.

FR (Ceci est le nouveau 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 paquet vous permet de sauvegarder les règles iptables précédemment entrées. Assurez-vous de répondre oui (enregistrer les parameters 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 parameters actuels).

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

  

plutôt que 80

3) ufw permet 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

Démarrez les services tomcat à l’aide de authbind. Cela permettra à l’utilisateur de démarrer des ports inférieurs à 1024 pour lesquels nous n’avons pas besoin de redirect ou d’iptables.

apt-get install authbind -y

Pour installer le logiciel Authbind

chmod -R 755 / etc / authbind

groupe devrait être un groupe d’utilisateurs.

chown -Rh root: groupe / etc / authbind

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

cd / etc / authbind / byuid

À titre d’exemple, imagne user id est 2000, vous pouvez utiliser votre numéro d’utilisateur

echo ‘0.0.0.0/0:1,1023’> 2000

Ce fichier doit être propre à 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

Commenter la ligne ci-dessous

 #$CATALINA_HOME/bin/startup.sh 

Ajouter cette fin à la fin du 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.