tomcat - CATALINA_BASE और CATALINA_HOME चर


97

मेरे पास एक ही सर्वर (लिनक्स) पर चलने वाले tomcat 6 के कई उदाहरण हैं और यह उम्मीद के मुताबिक काम करता है। मैं यह पता लगाने की कोशिश कर रहा हूं कि चर CATALINA_HOMEऔर CATALINA_BASEचर सेट करने के संबंध में मानक अभ्यास क्या है ।

मेरे टॉमकैट इंस्टॉलेशन में, मेरे पास CATALINA_HOME"कॉमन" फ़ोल्डर (कहने /tomcat6) के लिए इंगित करने के लिए सेटअप है और CATALINA_BASEचर उदाहरण के नाम (कहते हैं /tomcat_instance1, /tomcat_instance2) के आधार पर भिन्न होता है

मेरा सवाल यह है:

  • क्या मुझे वास्तव में दो चर की आवश्यकता है?
  • कर सकते हैं या मैं सिर्फ एक है CATALINA_HOMEऔर के साथ भाग कर CATALINA_BASE(या इसके विपरीत)?

3
प्रश्न ही वास्तव में एक उत्तर है।
कोरे तुगे

4
ऐसा करने के लिए आपको टॉमकैट सॉफ़्टवेयर के रखरखाव (जो कि में रहता है $CATALINA_HOME) को टॉमकैट इंस्टेंस कॉन्फ़िगरेशन और सामग्री (जो लाइव में हैं $CATALINA_BASE) के रखरखाव से अलग करने की आवश्यकता है ।
रिस्टोरियरपोस्ट

जवाबों:


106

यदि आप एक ही होस्ट पर टॉमकैट के कई उदाहरण चला रहे हैं, तो आपको प्रत्येक उदाहरण के लिए उपयुक्त या निर्देशिका के CATALINA_BASEबराबर होना चाहिए और पर्यावरण चर को आम टॉमकैट इंस्टॉलेशन के लिए सेट किया जाना चाहिए, जिनकी फाइलें दो उदाहरणों के बीच साझा की जाएंगी।.../tomcat_instance1.../tomcat_instance2CATALINA_HOME

CATALINA_BASEपर्यावरण वैकल्पिक आप मेजबान पर एक भी बिलाव उदाहरण चल रहे हैं और लागू हो जाएगी अगर है CATALINA_HOMEकि मामले में। यदि आप कई उदाहरण चला रहे हैं जैसा कि आप इसे प्रदान किया जाना चाहिए।

उन्नत कॉन्फ़िगरेशन केRUNNING.txt तहत Apache Tomcat वितरण की जड़ में फ़ाइल में इस सेटअप का बहुत अच्छा वर्णन है - कई Tomcat उदाहरण


1
उबंटू पर पैक टॉमकट का उपयोग करते समय आपका दूसरा पैराग्राफ गलत है। यह Tomcat उदाहरण ($ CATALINA_BASE में) से Tomcat सॉफ़्टवेयर ($ CATALINA_HOME में) को ठीक से अलग करता है।
रीइनरईयरपोस्ट

84

CATALINA_HOME बनाम CATALINA_BASE

यदि आप कई उदाहरण चला रहे हैं, तो आपको दोनों चर की आवश्यकता है, अन्यथा केवल CATALINA_HOME

दूसरे शब्दों में: CATALINA_HOMEआवश्यक है और CATALINA_BASEवैकल्पिक है।

CATALINA_HOME अपने Tomcat स्थापना की जड़ का प्रतिनिधित्व करता है।

वैकल्पिक रूप से, टॉमकैट को $CATALINA_BASEप्रत्येक उदाहरण के लिए परिभाषित करके कई उदाहरणों के लिए कॉन्फ़िगर किया जा सकता है । यदि कई उदाहरण कॉन्फ़िगर नहीं हैं, तो $CATALINA_BASEजैसा है वैसा ही है $CATALINA_HOME

देखें: अपाचे टॉमकट 7 - परिचय

अलग से चल रहा है CATALINA_HOMEऔर CATALINA_BASERUNNING.txt में प्रलेखित है जो कहता है:

CATALINA_HOMEऔर CATALINA_BASEवातावरण चर अपाचे बिलाव के स्थान और अपनी सक्रिय विन्यास के स्थान क्रमश: निर्दिष्ट करने के लिए उपयोग किया जाता है।

आप स्क्रिप्ट में कॉन्फ़िगर CATALINA_HOMEऔर CATALINA_BASEचर नहीं कर सकते setenv, क्योंकि वे उस फ़ाइल को खोजने के लिए उपयोग किए जाते हैं।

उदाहरण के लिए:

(४.१) टॉमकैट को निम्नलिखित आदेशों में से एक को निष्पादित करके शुरू किया जा सकता है:

  %CATALINA_HOME%\bin\startup.bat         (Windows)

  $CATALINA_HOME/bin/startup.sh           (Unix)

या

  %CATALINA_HOME%\bin\catalina.bat start  (Windows)

  $CATALINA_HOME/bin/catalina.sh start    (Unix)

मल्टीपल टोमैट इंस्टैंस

कई परिस्थितियों में, एक ही सर्वर पर एक से अधिक उपयोगकर्ताओं के बीच साझा किए गए एक टोमाटेक बाइनरी वितरण की एक प्रति रखना वांछनीय है। इसे संभव बनाने के लिए, आप CATALINA_BASE पर्यावरण चर को उस निर्देशिका में सेट कर सकते हैं जिसमें आपके 'व्यक्तिगत' टोमैट उदाहरण के लिए फाइलें हैं।

जब एक अलग CATALINA_HOMEऔर के साथ चल रहा है CATALINA_BASE, फ़ाइलों और निर्देशिकाओं को निम्नलिखित के रूप में विभाजित किया गया है:

इन CATALINA_BASE:

  • bin - केवल: setenv.sh (* nix) या setenv.bat (विंडोज), tomcat-juli.jar
  • conf - सर्वर कॉन्फ़िगरेशन फ़ाइलें (server.xml सहित)
  • lib - पुस्तकालय और कक्षाएं, जैसा कि नीचे बताया गया है
  • logs - लॉग और आउटपुट फाइल
  • webapps - स्वचालित रूप से भरी हुई वेब अनुप्रयोग
  • work - वेब अनुप्रयोगों के लिए अस्थायी कामकाजी निर्देशिका
  • temp - अस्थायी फ़ाइलों के लिए JVM द्वारा उपयोग की जाने वाली निर्देशिका>

इन CATALINA_HOME:

  • bin - स्टार्टअप और शटडाउन स्क्रिप्ट
  • lib - पुस्तकालय और कक्षाएं, जैसा कि नीचे बताया गया है
  • endorsed- मानक "समर्थन मानकों" को ओवरराइड करने वाले पुस्तकालय। डिफ़ॉल्ट रूप से यह अनुपस्थित है।

किस प्रकार जांच करें

उदाहरण के लिए, आपके पास क्या है CATALINA_BASEऔर CATALINA_HOMEचल रहा है startup.sh, यह जांचने का सबसे आसान तरीका :

$ /usr/share/tomcat7/bin/startup.sh
Using CATALINA_BASE:   /usr/share/tomcat7
Using CATALINA_HOME:   /usr/share/tomcat7

आप यह भी जाँच कर सकते हैं कि टॉमकैट फाइलें कहाँ स्थापित हैं, dpkgनीचे दिए गए उपकरण (डेबियन / उबंटू) द्वारा:

dpkg -L tomcat7-common

8
यह स्वीकार किए जाते हैं एक बेहतर जवाब है। बहुत अच्छी तरह से समझाया गया।
dkanejs

कृपया बताएं कि मल्टीपल टोमैट इंस्टेंसेस कैसे शुरू करें विभिन्न CATALINA_BASE?
मार्क

CATALINA_BASE और CATALINA_HOME को सिस्टम चर के रूप में सेट किया जाना चाहिए: Windows: सेट CATALINA_BASE = पथ
मार्क

11

मैं नहीं कह सकता कि मैं सबसे अच्छा अभ्यास जानता हूं, लेकिन यहां मेरा दृष्टिकोण है।

क्या आप किसी भी चीज़ के लिए इन चरों का उपयोग कर रहे हैं ?

व्यक्तिगत रूप से, मुझे न तो लिनक्स पर और न ही विंडोज पर बदलने की जरूरत है, वातावरण में विकास से उत्पादन तक भिन्न है। जब तक आप कुछ ऐसा नहीं कर रहे हैं जो उन पर निर्भर करता है, संभावना है कि आप उन्हें अकेला छोड़ सकते हैं।

catalina.shटॉम्केट बॉक्स से बाहर काम करने की जरूरत है कि चर सेट करता है। यह भी कहता है कि CATALINA_BASEवैकल्पिक है:

#   CATALINA_HOME   May point at your Catalina "build" directory.
#
#   CATALINA_BASE   (Optional) Base directory for resolving dynamic portions
#                   of a Catalina installation.  If not present, resolves to
#                   the same directory that CATALINA_HOME points to.

मुझे पूरा यकीन है कि जब आप अपना सर्वर शुरू करेंगे तो आपको पता चल जाएगा कि आपका सेटअप काम करता है या नहीं।


आप दोनों उदाहरणों के लिए फ़ाइल catalina_homeमें पथ सेट कर सकते हैं \bin\catalina.sh??
गिरि

8

CATALINA_BASEएक अलग निर्देशिका से इंगित करने से CATALINA_HOMEआप बायनेरी निर्देशिका से कॉन्फ़िगरेशन निर्देशिका को अलग कर सकते हैं।

डिफ़ॉल्ट रूप से, CATALINA_BASE(कॉन्फ़िगरेशन) और CATALINA_HOME(बायनेरिज़) एक ही फ़ोल्डर को इंगित करते हैं, लेकिन बायनेरिज़ से कॉन्फ़िगरेशन को अलग करने से आपको बायनेरिज़ को डुप्लिकेट किए बिना टॉमकैट के कई उदाहरणों को साइड में चलाने में मदद मिल सकती है।

यह तब भी उपयोगी है जब आप बिनरी को अपडेट करना चाहते हैं, संशोधित किए बिना, या टॉमकैट के लिए अपनी कॉन्फ़िगरेशन फ़ाइलों को बैकअप / पुनर्स्थापित करने की आवश्यकता है।

अपडेट 2018

अब makebaseउपयोगिता के साथ CATALINA_BASE सेट करने का एक आसान तरीका है । मैंने एक ट्यूटोरियल पोस्ट किया है जो इस विषय को http://blog.rasia.io/blog/how-to-easily-setup-lucee-in-tomcat.html https://youtu.be पर एक वीडियो ट्यूटोरियल के साथ कवर करता है। / nuugoG5c-7M

मूल उत्तर नीचे जारी रहा

इस सुविधा का लाभ उठाने के लिए, बस विन्यास निर्देशिका बनाएं और इसे CATALINA_BASEपर्यावरण चर के साथ इंगित करें । आपको उस निर्देशिका में कुछ फाइलें रखनी होंगी:

  • confअपनी सामग्री सहित, मूल टॉमकैट संस्थापन निर्देशिका से निर्देशिका की प्रतिलिपि बनाएँ , और सुनिश्चित करें कि टॉमकैट ने इसके लिए अनुमतियाँ पढ़ ली हैं। अपनी आवश्यकताओं के अनुसार कॉन्फ़िगरेशन फ़ाइलों को संपादित करें।
  • एक logsनिर्देशिका बनाएं यदि conf/logging.propertiesइंगित करता है ${catalina.base}/logs, और यह सुनिश्चित करें कि टॉमकैट ने इसे पढ़ने / लिखने की अनुमति दी है।
  • एक tempनिर्देशिका बनाएं यदि आप डिफ़ॉल्ट को ओवरराइड नहीं कर रहे हैं $CATALINA_TMPDIRजो इंगित करता है ${CATALINA_BASE}/temp, और यह सुनिश्चित करें कि टॉमकैट ने इसे लिखने की अनुमति दी है।
  • एक workनिर्देशिका बनाएं जो कि चूक करता है ${CATALINA_BASE}/work, और यह सुनिश्चित करें कि टॉमकैट ने इसे लिखने की अनुमति दी है।

1

CATALINA_BASE वैकल्पिक है।

हालाँकि, निम्न परिदृश्यों में यह CATALINA_BASE सेटअप करने में मदद करता है जो CATALINA_HOME से अलग है।

  1. जब एक ही मेज़बान पर 1 से अधिक टामकैट चल रहे हों

    • यह अलग-अलग बंदरगाहों पर चल रहे कई CATALINA_BASE सर्वर कॉन्फ़िगरेशन के साथ केवल 1 रनटाइम टोमकाट इंस्टॉलेशन में मदद करता है।
    • यदि कोई पैचिंग, या संस्करण अपग्रेड की आवश्यकता है, तो केवल 1 इंस्टॉलेशन परिवर्तन की आवश्यकता है, या परीक्षण / सत्यापित / हस्ताक्षरित-बंद करने की आवश्यकता है।
  2. चिंता का अलग होना (एकल जिम्मेदारी)

    • टॉमकैट रनटाइम मानक है और हर रिलीज प्रक्रिया के दौरान नहीं बदलता है। यानी टॉमकैट बायनेरिज़
    • रिलीज की प्रक्रिया में वेबएप्लीकेशन (वेबैप्स फोल्डर), एनवायरमेंट कॉन्फिगरेशन (कॉन्फिडेंस डायरेक्टरी), लॉग्स / टेम्प / वर्क डायरेक्टरी के रूप में अधिक सामान हो सकता है।

-5

यह बिन का मूल फ़ोल्डर है जिसमें tomcat.exe फ़ाइल है:

CATALINA_HOME='C:\Program Files\Apache Software Foundation\Tomcat 6.0'

CATALINA_BASEके रूप में ही है CATALINA_HOME


2
आपका उत्तर भ्रामक है ... सही उत्तर में राज्य होना चाहिए यदि कई उदाहरण कॉन्फ़िगर नहीं किए गए हैं , तो $ CATALINA_BASE $ CATALINA_HOME.` के प्रलेखन के
एडी बी

1
जब आप रूट उदाहरण चलाते हैं तो CATALINA_BASE केवल CATALINA_HOME के ​​बराबर होता है। जब आपके पास कई उदाहरण हैं तो यह अलग होगा।
splatch

1
मैं कहूंगा कि CATALINA_BASE और CATALINA HOME अलग-अलग होने चाहिए भले ही आपके पास एक ही उदाहरण हो। इस तरह आपकी सामग्री आपकी स्थापना से अलग है। उदाहरण के लिए, CATALINA_HOME / usr / share / tomcat और CATALINA_BASE में / var / lib / tomcat
user1725779

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