2009-02-24 18 views
9

पर वेब एप्लिकेशन की तैनाती मैं चल रहे टोमकैट पर वेब-एप्लिकेशन की तैनाती पर कुछ सर्वोत्तम अभ्यास एकत्र करना चाहता हूं। बहुत समय पहले मुझे अपने वेब-एप्लिकेशन की तैनाती प्रक्रिया का वर्णन करना पड़ा था और प्रक्रिया बल्कि भ्रमित दिखाई दे रही थी।चल रहे टोमकैट

कहें, हमारे पास एक WAR फ़ाइल (foo.war) में सही तरीके से कॉन्फ़िगर किया गया है और अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है। इस मामले में, तैनाती प्रक्रिया अपेक्षाकृत आसान है:

  • foo.war फ़ाइल को $ CATALINA_HOME/webapps निर्देशिका में कॉपी करें। यदि एप्लिकेशन सही ढंग से शुरू होता है, तो एप्लिकेशन स्वचालित रूप से $ CATALINA_HOME/webapps/foo निर्देशिका पर तैनात होगा।

आवेदन undeploy करने के लिए:

  • $ CATALINA_HOME/webapps से foo.war फ़ाइल निकालें। यदि एप्लिकेशन सही ढंग से अनलोड हो जाता है, तो इसे अनलोड किया जाएगा और $ CATALINA_HOME/webapps/foo हटा दिया जाएगा।

अब मैं अपने चल रहे एप्लिकेशन में कुछ संदर्भ पैरामीटर को ओवरराइड करना चाहता हूं। docs पढ़ा है, सब मैं क्या करने की जरूरत:

  1. एक context.xml foo.xml
  2. कॉपी $ CATALINA_BASE/conf करने के लिए फ़ाइल/[EngineName]/[होस्ट नाम]/निर्देशिका बुलाया फ़ाइल बनाएँ।

दुर्भाग्यवश, यह काम नहीं किया: एप्लिकेशन पुनरारंभ नहीं होगा। अनुभवजन्य रूप से, हमने पाया कि एकमात्र कामकाजी समाधान तब होता है जब युद्ध फ़ाइल $ CATALINA_HOME/webapps के बाहर किसी स्थान पर तैनात की जाती है। इसके अलावा, WAR फ़ाइल में कॉन्फ़िगर करने योग्य संदर्भ मानकों के डिफ़ॉल्ट मानों को web.xml में निर्दिष्ट किया जाना चाहिए, क्योंकि WAR फ़ाइल में context.xml को तब संदर्भित नहीं किया जाता है जब कोई context.xml बाहर होता है।

<?xml version='1.0' encoding='utf-8'?>       
<Context docBase="/path-to-deployment-directory/foo.war"> 
    <Parameter name="myparam" value="newvalue" override="false"/> 
</Context> 

अगर आप 'NEWVALUE' युद्ध के web.xml में निर्दिष्ट मान ओवरराइड करना चाहते पैरामीटर के लिए ओवरराइड = false निर्दिष्ट करना न भूलें:

यहाँ foo.xml का एक आसान उदाहरण है । यह हमारे लिए स्पष्ट नहीं था।

इस प्रकार, एक चल बिलाव को एक आवेदन को तैनात करने की:

  1. एक context.xml foo.xml बुलाया
  2. कॉपी $ CATALINA_BASE/conf करने के लिए फ़ाइल/[EngineName]/[होस्टनाम फ़ाइल बनाएँ ]/ निर्देशिका।
  3. foo.xml के docBase में निर्दिष्ट स्थान पर foo.war की प्रतिलिपि बनाएँ; एप्लिकेशन स्वचालित रूप से तैनात होगा।

लागू करने के लिए नई संदर्भ पैरामीटर:

  • foo.xml लिए पैरामीटर मान जोड़ें और फ़ाइल को सहेजने; एप्लिकेशन स्वचालित रूप से फिर से तैनात होगा।

आवेदन undeploy करने के लिए:

  • $ CATALINA_BASE/conf/[EngineName]/[होस्ट नाम]/निर्देशिका

नोट foo को हटाने से foo.xml निकालें। युद्ध भी काम करेगा, लेकिन foo.xml को भी हटा देगा।


अब तक, मैं है निम्नलिखित प्रश्न:

  1. यह एक सबसे अच्छा अभ्यास बिल्कुल बिल्ला को रोके बिना एक वेब आवेदन को तैनात करने की है? मैंने एक राय सुना है कि चल रहे टोमकैट पर तैनाती की आवश्यकता नहीं होती है क्योंकि लोग प्रत्येक एप्लिकेशन को एक अलग टोमकैट में चलाते हैं।
  2. क्या WAR फ़ाइलों को $ CATALINA_HOME/webapps में कॉपी करना अच्छा विचार है या उन्हें बेहतर स्थान पर रखा जाना चाहिए?
  3. मैं एक आवेदन $ CATALINA_HOME के ​​लिए तैनात/webapps
  4. क्यों एक आवेदन की तैनाती के लिए catalina.out में कोई जानकारी लाइन है कैसे कॉन्फ़िगर कर सकते हैं और वहाँ undeployment के लिए एक है? क्या यह विन्यास योग्य है?

उत्तर

0

एक समाधान प्रबंधक अनुप्रयोग का उपयोग करना होगा। आप तय करते हैं कि इसका इस्तेमाल करने के लिए सुरक्षित है, तो आप आसानी से तैनात कर सकते हैं शुरू करते हैं, बंद करो और undeploy अनुप्रयोगों:

http://localhost:8080/manager/deploy?path=[context_path] http://localhost:8080/manager/start?path=[context_path] http://localhost:8080/manager/stop?path=[context_path] http://localhost:8080/manager/undeploy?path=[context_path]

चींटी कार्य है कि आप इन के साथ मदद कर सकते हैं।

मैं अनुमान लगा रहा हूं, लेकिन यह सुनिश्चित नहीं है कि एक एप्लिकेशन को रोकने और शुरू करने से यह context.xml को फिर से पढ़ेगा।

आपके दूसरे प्रश्न के संबंध में, मेरा मानना ​​है कि यह वेबपैस निर्देशिका में युद्ध फ़ाइलों को रखने के रखरखाव के कारणों के लिए बेहतर है।

1

प्रश्न पर (1), टोमकैट एक चल रहे सर्वर में सर्वलेट को तैनात करने के लिए बहुत अच्छा काम करता है। चिंता हो सकती है w.r.t. सुरक्षा या संभवतः डीओएस या प्रावधान कारणों से आपके पास अलग-अलग सर्वर उदाहरण क्यों होंगे।

आपके पास किसी भी तरह से करने की लचीलापन है, लेकिन यह पहले से चल रहे सर्वर पर तैनाती के लिए अक्सर अधिक सुविधाजनक है। यह सर्वलेट आर्किटेक्चर में एक बिल्ड-इन सुविधा है। :)

के लिए (2), फिर यह आपके विवेकाधिकार पर है जहां आप WAR रखना चाहते हैं। ऐसा लगता है कि आपने पहले से ही एक गैर-मानक (गैर-डिफ़ॉल्ट मुझे कहना चाहिए) कॉन्फ़िगर किया है। अपने सर्वर उदाहरण (ओं) में सेटिंग्स के लिए अपनी server.xml फ़ाइल देखें। unpackWARs और autoDeploy जैसे विशेषताओं की जांच करें।

(3) और (4), प्लस आपके (1,2) प्रश्नों के लिए, टॉमकैट के अपने संस्करण के लिए टॉमकैट दस्तावेज़ों के परामर्श मॉडल पर टॉमकैट दस्तावेज़ों से परामर्श करना एक अच्छा विचार हो सकता है। यह पता लगाने के लिए कि आपके सर्वर को कैसे कॉन्फ़िगर किया गया है, आपको उसी दस्तावेज़ का उपयोग करने में सक्षम होना चाहिए।

टॉमकैट मैनुअल में Tomcat Web Application Deployment देखें, टॉमकैट के आपके संस्करण के लिए समायोजित करें।

संबंधित मुद्दे