Frage Wie bekommt man Tomcat an die IPv4-Adresse zu binden?


Ich habe Tomcat kürzlich über ein Installationsskript aus der apache solr typo3-Community installiert und die letzten 3 Tage damit verbracht, herauszufinden, warum es nicht funktioniert, bis ich zufällig bemerkte, dass ich den Prozess über "lsof -i ", es war an das IPv6-Protokoll gebunden. Ich habe überall gegoogelt und die meisten sagen, dass ich die Adresse anspreche 0.0.0.0 im Tomcat-Connector löst dieses Problem, andere sagen Einstellung JAVA_OPTS = "- Djava.net.preferIPv4Stack = true"; Ich habe das erste versucht, was nicht funktioniert, aber das letztere bin mir nicht sicher, wo ich es hinstellen soll. Eine Lösung, die ich irgendwo gelesen habe, schlug vor, sie einzutragen setenv.sh aber ich kann diese Datei nicht in meiner Tomcat-Installation finden. Ich würde im Moment jede Hilfe diesbezüglich schätzen. Die Tomcat-Version ist 6.x und das Betriebssystem ist Ubuntu 11.10. Vielen Dank


29
2018-05-20 18:57


Ursprung


Welche ips / Ports hört es über lsof -i? - becomingwisest
@comingwiseest 8080. - Dark Star1
Sie haben Recht - die Datei setenv.sh existiert nicht in der Box. Sie müssen die Datei setenv.sh in Ihrem CATALINA_BASE- oder CATALINA_HOME-Verzeichnis bin erstellen. Die Startskripte überprüfen, ob Sie die Datei erstellt haben, wenn Sie eine Anpassungsdatei (setenv.sh) erstellt haben - das Startscript ruft sie auf, ignoriert sie sonst einfach und geht weiter. - nevenc


Antworten:


Viele haben eine Aktualisierung vorgeschlagen catalina.sh Startskript. Ja, diese Lösung würde funktionieren, aber catalina.sh Skript ist nicht dazu gedacht, angepasst / aktualisiert zu werden. Alle Änderungen sollten stattdessen in das Anpassungsskript übernommen werden, d. H. setenv.sh.

HINWEIS: TOMCAT_HOME/bin/setenv.sh existiert standardmäßig nicht, Sie müssen es erstellen. Überprüf den catalina.sh Skript und Sie sehen, dass das Startskript prüft, ob setenv.sh existiert und wird ausgeführt, wenn dies der Fall ist.

Also, ich schlage vor, Sie erstellen neue TOMCAT_HOME/bin/setenv.sh Skript mit einer einzelnen Zeile:

JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "

21
2018-02-01 02:49



Ich würde auch CATALINA_OPTS anstelle von JAVA_OPTS verwenden, besonders wenn Sie andere JVM-Optionen haben, die Sie beim Start von Tomcat an JVM übergeben möchten. Wenn Sie JAVA_OPTS verwenden, werden die gleichen Optionen in Tomcat Shutdown übergeben, wahrscheinlich nicht das, was Sie wollen / erwarten. Benutze stattdessen CATALINA_OPTS :) - nevenc
Ich wähle dies als Antwort, da die meisten Leute, die dieses Problem heute haben, höchstwahrscheinlich eine neuere Version von Tomcat verwenden würden. - Dark Star1


Ok, ich habe es endlich gelöst. Ich wurde angewiesen auf Versuche dies und Henks Lösung. Keiner von beiden schien mit dem virtuellen Remote-Server zu arbeiten. Ich vermute die Tatsache, dass, weil ich auf einem freigegebenen Kernel bin, der Provider dies verhindert. Jedenfalls habe ich hinzugefügt: JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses zum catalina.sh Startskript und das schien das Problem der Bindung von Tomcat an IPv6 behoben zu haben.


26
2018-05-21 12:34



Du bist also auf einem VPS mit einem gemeinsamen Kernel ... D'oh! - Henk
Mit Tomcat 8 scheint das nicht mehr zu funktionieren. - Ortomala Lokni
Mit Tomcat 8 funktionierte diese Option nicht für mich, aber die Antwort von nvenc hat funktioniert. - Edenshaw


Die korrekte Syntax zum Ändern von catalina.sh wäre:

JAVA_OPTS=" $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true "

4
2018-01-01 22:15





Wenn Sie dieses Installationsprogramm verwendet haben: "Apache Solr für TYPO3"können Sie die Adresse in der Datei ändern server.xml. Der Standardwert verweist auf localhost. Achten Sie daher auf 127.0.0.1 und ändern Sie ihn in die gewünschte IPv4-Adresse. Vergessen Sie nicht, Tomcat6 neu zu starten, damit die Änderungen wirksam werden.

UPDATE, 20120521

Siehe meinen Kommentar unten, wie man IPv6 unter Ubuntu 11.10 deaktiviert.

Ich habe dies erfolgreich auf einer Virtualbox-VM auf meinem Mac getestet. Die Adresse für den Anschluss 8080 wurde von 127.0.0.1 auf 0.0.0.0 Zoll geändert server.xml.

Wenn IPv6 deaktiviert wird, wird "tcp6" deaktiviert und an eine IPv4-Adresse gebunden.

Vor / mit IPv6 aktiviert:

# netstat -anp | grep 8080   
tcp6       0      0 :::8080                 :::*                    LISTEN      1972/java

Nach / IPv6 deaktiviert:

# netstat -anp | grep 8080   
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      2045/java

3
2018-05-20 19:25



Versucht dies auch und das hat nicht funktioniert Netstat zeigt, dass trotz der Prozess an eine IPV4-Adresse gebunden ist es immer noch auf der Suche nach einem ipv6 a la diese Rückkehr: tcp6 0 0 X.X.X.X: 8080 ::: * LISTEN. was ich denke, ist seltsam, aber das Problem wurde auch auf meinem Freund vm, die auf einem Mac gehostet wird repliziert. - Dark Star1
Und wenn IPv6 deaktiviert ist? Hier ist ein Howto für Ubuntu 11.10: pario.no/2011/12/09/disable-ipv6-on-ubuntu-11-10 - Henk


Obwohl wahrscheinlich nicht die bevorzugte Methode, habe ich das beobachtet Deaktivieren von IPv6 auf Kernel-Ebene wird Tomcat davon überzeugen, eine IPv4-Bindung zu öffnen.


0
2017-07-14 17:25





Zusammen mit der anderen Antwort mit setenv.sh und CATALINA_OPTS ...

Bei der Verwendung von Tomcat SSL mit APR konnte ich Tomcat nur dann zur Bindung an ipv4 bringen, wenn ich dies der Connector-Konfiguration hinzufügte:

address="0.0.0.0"

server.xml sieht folgendermaßen aus:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150"
               SSLEnabled="true"
               scheme="https"
               compression="off"
               connectionTimeout="1190"
               address="0.0.0.0"
               >

0
2018-04-05 08:13





Debian 8 navigieren Sie zu Ihrem Lieblings-Editor auf / etc / default / grub ; Suchen Sie nach dem Abschnitt GRUB_CMDLINE_LINUX_DEFAULT= "leise" ** mit dann hinzufügen ipv6.disable = 1, wie unten zu sehen

GRUB_CMDLINE_LINUX_DEFAULT = "ipv6.disable = 1 ruhig"

Speichern und schließen. Im selben Verzeichnis benutzen Sie Ihren Lieblings-Editor / etc / default / tomcat8 dann schaue nach dem Abschnitt mit JAVA_OPTS = welche auskommentiert werden, füge folgendes unter dieser Zeile hinzu. JAVA_OPTS = "$ JAVA_OPTS -Djava.net.preferIPv4Stack = true -Djava.net.preferIPv4Addresses = true"

Speichern und schließen

Geben Sie an der Eingabeaufforderung ein Update-grub Wenn du sudo mit sudo benutzt hast, starte tomcat8 neu Service tomcat8 Neustart

Sie sollten jetzt auf IPv4 sein.

Bitte geben Sie in zukünftigen Posts vollständige Pfade und Dateinamen an. Danke dir


-2
2018-02-26 21:02