Tomcat nasıl IPv4 adresine bağlanacak?


32

Yakın zamanda tomcat'i apache solr typo3 topluluğundan bir yükleme betiği aracılığıyla yükledim ve son 3 günü, neden tesadüfen "lsof -i" üzerinden dinlerken işlemi sorguladığımda, neden tesadüf eseri işe yaramayacağını anlamaya çalışarak geçirdim. ", ipv6 protokolüne bağlıydı. Her yerde googledim ve çoğu , tomcat konektöründe 0.0.0.0 olarak ayarlanan adresin bu sorunu çözdüğünü söylüyor, diğerleri ayarının JAVA_OPTS = "- Djava.net.preferIPv4Stack = true" ; İşe yaramayan birisini denedim ama ikincisi nereye koyacağımı bilemiyorum. Bir yerde okudum bir çözüm setenv.sh koymak önerdiancak bu dosyayı tomcat kurulumumda bulamıyorum. Bu konuda şu anda herhangi bir yardım için minnettar olurum. Tomcat sürümü 6.x, işletim sistemi ise 11.10. Teşekkürler


1
Lsof -i üzerinden hangi ips / portları dinliyor?
olma

@becomingwisest 8080.
Dark

Haklısın - setenv.sh dosyası kutuda yok. CATALINA_BASE veya CATALINA_HOME bin dizininizde setenv.sh dosyası oluşturmanız gerekir. Başlangıç ​​komut dosyaları dosyayı oluşturup oluşturmadığınızı, özelleştirme (setenv.sh) dosyası oluşturduysanız denetler - başlatma komut dosyası onu çağırır, aksi halde yalnızca yok sayar ve devam eder.
nevenc,

Yanıtlar:


28

Birçok önerilen güncelleme catalina.shbaşlangıç ​​komut dosyası. Evet, bu çözüm işe yarayacak, ancak catalina.shkomut dosyası özelleştirilmek / güncellenmek için tasarlanmamıştır. Tüm değişiklikler bunun yerine kişiselleştirme betiğine girmelidir setenv.sh.

NOT: TOMCAT_HOME/bin/setenv.shvarsayılan olarak mevcut değildir, oluşturmanız gerekir. Kontrol catalina.shkomut dosyası ve eğer başlangıç komut dosyası çekleri göreceksiniz setenv.shvar ve bu olursa yürütür.

Bu nedenle, TOMCAT_HOME/bin/setenv.shtek satırlı yeni bir komut dosyası oluşturmanızı öneriyorum :

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

3
Ayrıca JAVA_OPTS yerine CATALINA_OPTS kullanırdım, özellikle Tomcat açılışında JVM'ye geçmek istediğiniz başka JVM seçenekleriniz varsa. JAVA_OPTS kullanıyorsanız, aynı seçenekler Tomcat kapatmasına geçecektir, muhtemelen ne istediğiniz / ne beklediğinizden değil. Bunun yerine CATALINA_OPTS kullanın :)
nevenc

Bunu şimdi cevap olarak seçiyorum çünkü bugün bu sorunu yaşayan çoğu insan büyük olasılıkla daha yeni bir Tomcat sürümü kullanıyor olacak.
Karanlık Yıldız1

27

Tamam sonunda çözdüm. Bunu ve Henk'in çözümünü denemek için yönlendirildim . Hiçbiri uzak sanal sunucuyla çalışmıyor gibiydi. Tahmin ediyorum ki, ortak bir çekirdek alandayım çünkü sağlayıcı bunu engelliyor. Her durumda ekledim: JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addressescatalina.sh başlangıç ​​betiğine ve bu, tomcat'ı ipv6'ya bağlama sorununu çözdü.


3
Öyleyse paylaşılan bir çekirdeğe sahip bir VPS'desiniz ... D'oh!
Henk,

Bu artık tomcat 8 ile çalışmıyor gibi görünüyor.
Ortomala Lokni

1
Tomcat 8 ile bu seçenek benim için işe yaramadı, ama Nevenc'in cevabı işe yaradı.
Edenshaw

4

Catalina.sh dosyasını değiştirmek için doğru sözdizimi:

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

3

Bu yükleyiciyi kullandıysanız: " TYPO3 için Apache Solr ", dosyadaki adresi değiştirebilirsiniz server.xml. Varsayılan ayar localhost'a işaret eder, bu nedenle 127.0.0.1'i arayın ve istediğiniz IPv4-adresini değiştirin. Değişikliklerin geçerli olması için Tomcat6'yı yeniden başlatmayı unutmayın.

GÜNCELLEME, 20120521

Ubuntu 11.10'da IPv6'nın nasıl devre dışı bırakılacağı konusundaki yorumuma bakınız.

Bunu Mac'imdeki bir Virtualbox-VM'de başarıyla test ettim. 8080 nolu bağlantı noktasının adresi 127.0.0.1'den 0.0.0.0 inç'e değiştirilmiştir server.xml.

Daha sonra IPv6'nın devre dışı bırakılması "tcp6" nın kaybolmasını sağlar, bu nedenle yalnızca IPv4'e bağlı bir adrese bağlanır.

IPv6 etkin / etkin olmadan:

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

Sonra / IPv6 devre dışı bırakıldı:

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

Bunu da denedim ve işe yaramadı netstat, bir ipv4 adresine bağlı olmasına rağmen hala bu ipv6'yı aradığını gösteriyor: tcp6 0 0 XXXX: 8080 ::: * LISTEN. ki bu garip ama sorun aynı zamanda arkadaşımın bir mac üzerinde barındırdığı vm'inde de çoğaltılmış.
Karanlık Yıldız1

Ve IPv6 ne zaman devre dışı bırakılır? İşte Ubuntu 11.10 için bir nasıl yapılır: pario.no/2011/12/09/disable-ipv6-on-ubuntu-11-10
Henk


0

Setenv.sh ve CATALINA_OPTS kullanarak diğer cevap ile birlikte ...

APR ile Tomcat SSL kullanarak, Tomcat'in ipv4'e bağlamasını sağlayabilmemin tek yolu, bunu config config dosyasına eklemekti:

address="0.0.0.0"

server.xml şöyle görünür:

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

-2

Debian 8, / etc / default / grub ; GRUB_CMDLINE_LINUX_DEFAULT = "quiet" ** bölümüne bakın , sonra aşağıda gösterildiği gibi ipv6.disable = 1 ekleyin

GRUB_CMDLINE_LINUX_DEFAULT = "ipv6.disable = 1 sessiz"

Kaydet ve çık. Aynı dizinde / etc / default / tomcat8 üzerinde favori editörünüzü kullanın, daha sonra yorumlanacak olan JAVA_OPTS = olan bölümü arayın , aşağıdaki satırın altına ekleyin. JAVA_OPTS = "$ JAVA_OPTS -Djava.net.preferIPv4Stack = true -Djava.net.preferIPv4Addresses = true"

Kaydet ve çık

Komut istemine update-grub yazın , sudo ile sudo kullandıysanız, tomcat8 hizmetini yeniden başlatın tomcat8 yeniden başlatma

Şimdi IPv4'te olmalısınız.

Lütfen gelecek gönderilerde eksiksiz yollar ve dosya adları bulunur. Teşekkür ederim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.