IPv4 पते पर बाँधने के लिए किसी को टोमैट कैसे मिलता है?


32

मैंने हाल ही में अपाचे सोल टाइपो 3 समुदाय से एक इंस्टॉलेशन स्क्रिप्ट के माध्यम से टॉमकैट स्थापित किया है और पिछले 3 दिनों को यह पता लगाने की कोशिश में बिताया है कि यह तब तक काम क्यों नहीं करेगा जब तक कि मैं संयोग से तब तक काम नहीं करूं जब मैंने पोर्ट पर सुनने की प्रक्रिया को "lsof -i" के माध्यम से समझा। ", यह ipv6 प्रोटोकॉल के लिए बाध्य था। मैंने हर जगह गुगली की है और सबसे कह रहा हूं कि टॉमकैट कनेक्टर में 0.0.0.0 का पता सेट करना इस मुद्दे को हल करता है, दूसरों का कहना है कि सेटिंग JAVA_OPTS = "- Djava.net.preferIPv4Stack = true" ; मैंने पूर्व की कोशिश की है जो काम नहीं करता है लेकिन बाद में मैं अनिश्चित हूं कि इसे कहां रखा जाए। एक समाधान जो मैंने कहीं पढ़ा, उसे setenv.sh में डालने का सुझाव दियालेकिन मैं इस फाइल को अपने टॉमकैट इंस्टॉलेशन में नहीं ढूंढ सकता। मैं इस समय किसी भी मदद की सराहना करता हूं। टॉमकैट संस्करण 6.x है और ओएस ubuntu 11.10 है। धन्यवाद


1
Lsof -i के माध्यम से यह किस ips / port को सुन रहा है?
becomingwisest

@ कटिंगमेविस्ट 8080.
डार्क

आप सही हैं - setenv.sh फ़ाइल बॉक्स से बाहर मौजूद नहीं है। आपको अपनी CATALINA_BASE या CATALINA_HOME बिन निर्देशिका में setenv.sh फ़ाइल बनानी होगी। स्टार्टअप स्क्रिप्ट की जाँच करें कि क्या आपने फ़ाइल बनाई है, यदि आपने कस्टमाइज़ेशन (setenv.sh) फ़ाइल बनाई है - स्टार्टअप स्क्रिप्ट इसे कॉल करती है, अन्यथा बस अनदेखा करती है, और आगे बढ़ती है।
nevenc

जवाबों:


28

कई लोगों ने catalina.shस्टार्टअप स्क्रिप्ट को अपडेट करने का सुझाव दिया । हां, वह समाधान काम करेगा, लेकिन catalina.shस्क्रिप्ट को अनुकूलित / अद्यतन करने के लिए नहीं है। सभी परिवर्तनों को अनुकूलन स्क्रिप्ट में जाना चाहिए, अर्थात setenv.sh

नोट: TOMCAT_HOME/bin/setenv.shडिफ़ॉल्ट रूप से मौजूद नहीं है, आपको इसे बनाने की आवश्यकता है। catalina.shस्क्रिप्ट की जाँच करें और यदि setenv.shमौजूद है, तो आप स्टार्टअप स्क्रिप्ट की जाँच देखेंगे और यदि ऐसा होता है, तो निष्पादित करता है।

इसलिए, मेरा सुझाव है कि आप TOMCAT_HOME/bin/setenv.shएक ही लाइन के साथ नई स्क्रिप्ट बनाएं :

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

3
मैं JAVA_OPTS के बजाय CATALINA_OPTS का भी उपयोग करूंगा, खासकर अगर आपके पास अन्य JVM विकल्प हैं जो आप Tomcat स्टार्टअप पर JVM में पास करना चाहते हैं। यदि आप JAVA_OPTS का उपयोग करते हैं, तो एक ही विकल्प को टॉमकैट शटडाउन में पारित किया जाएगा, शायद वह नहीं जो आप चाहते / अपेक्षा करेंगे। इसके बजाय CATALINA_OPTS का उपयोग करें :)
nevenc

मैं इसे अब उत्तर के रूप में चुन रहा हूं क्योंकि आज के अधिकांश लोगों के पास इस समस्या का सबसे नया संस्करण होने की संभावना है।
डार्क स्टार

27

ठीक है मैं अंत में इसे हल कर दिया। मुझे यह और हेनक के समाधान की कोशिश करने के लिए निर्देशित किया गया था । जिनमें से कोई भी रिमोट वर्चुअल सर्वर के साथ काम नहीं करता था। मैं इस तथ्य का अनुमान लगा रहा हूं कि क्योंकि मैं एक साझा कर्नेल स्थान पर हूं इसलिए प्रदाता इसे रोकता है। किसी भी मामले में मैंने जोड़ा: JAVA_OPTS= $JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addressescatalina.sh स्टार्टअप स्क्रिप्ट के लिए और जो कि ipc6 को टोमैट को बांधने के मुद्दे को तय किया था।


3
तो आप एक साझा कर्नेल के साथ VPS पर हैं ... D'oh!
हेनक

ऐसा लगता है कि
टॉमकैट

1
टॉमकैट 8 के साथ, यह विकल्प मेरे लिए काम नहीं करता था, लेकिन नेवेन के जवाब ने काम नहीं किया।
20

4

Catalina.sh को संशोधित करने के लिए सही सिंटैक्स होगा:

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

3

यदि आपने इस इंस्टॉलर का उपयोग किया है: " Apache Solr for TYPO3 ", तो आप फ़ाइल में पता बदल सकते हैं server.xml। डिफ़ॉल्ट लोकलहोस्ट को इंगित करता है, इसलिए 127.0.0.1 देखें और इसे अपने इच्छित आईपीवी 4-पते में बदल दें। परिवर्तनों को प्रभावी करने के लिए Tomcat6 को पुनरारंभ करना न भूलें।

UPDATE, 20120521

Ubuntu 11.10 पर IPv6 को अक्षम करने के तरीके के बारे में मेरी टिप्पणी नीचे देखें।

मैंने अपने मैक पर एक वर्चुअलबॉक्स-वीएम पर सफलतापूर्वक इसका परीक्षण किया है। कनेक्टर पोर्ट 8080 के पते को 127.0.0.1 से 0.0.0.0 में बदल दिया गया है server.xml

तब IPv6 को अक्षम करना "tcp6" को दूर जाने के लिए बनाता है, इसलिए यह IPv4-only पते से जुड़ा हुआ है।

पहले / IPv6 सक्षम के साथ:

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

बाद / IPv6 अक्षम किया गया:

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

यह भी कोशिश की और यह काम नहीं किया netstat से पता चलता है कि प्रक्रिया एक ipv4 पते के लिए बाध्य होने के बावजूद यह अभी भी एक ipv6 एक ला यह वापसी की तलाश में है: tcp6 0 0 XXXX: 8080 ::: * LISTEN। जो मुझे लगता है कि अजीब है, लेकिन समस्या को मेरे दोस्त के vm पर भी दोहराया गया है जो कि एक मैक पर होस्ट किया गया है।
डार्क स्टार 1

और जब IPv6 अक्षम है? यहाँ उबंटू 11.10 के लिए एक हाउटो है
हेंक


0

Setenv.sh और CATALINA_OPTS का उपयोग करके अन्य उत्तर के साथ ...

APR के साथ Tomcat SSL का उपयोग करना, जिस तरह से मैं Tomcat को ipv4 से बाँध सकता है, उसे कनेक्टर कॉन्फ़िगरेशन में जोड़ना था:

address="0.0.0.0"

server.xml इस तरह दिखता है:

<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 = "शांत" ** इसके बाद ipv6.disable = 1 जोड़ें , जैसा कि नीचे देखा गया है

GRUB_CMDLINE_LINUX_DEFAULT = "ipv6.disable = 1 शांत"

सुरषित और बहार। उसी निर्देशिका में / etc / default / tomcat8 पर अपने पसंदीदा संपादक का उपयोग करें फिर JAVA_OPTS = के साथ अनुभाग देखें, जिस पर टिप्पणी की जाएगी, उस पंक्ति के नीचे निम्नलिखित जोड़ें। JAVA_OPTS = "$ JAVA_OPTS -Djava.net.preferIPv4Stack = true -Djava.net.preferIPv4Addresses = true"

सुरषित और बहार

कमांड प्रॉम्प्ट पर अपडेट-ग्रब , यदि आपके पास sudo के साथ sudo का उपयोग है, तो tomcat8 सेवा को फिर से शुरू करें tomcat8 पुनरारंभ करें

अब आपको IPv4 पर होना चाहिए

कृपया भविष्य के पोस्ट में पूर्ण पथ और फ़ाइल नाम शामिल करें। धन्यवाद

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.