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.
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).
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).
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.
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