2010-07-02 20 views
6

मेरे पास एक Django ऐप है जिसे हम टॉमकैट सर्वर पर तैनात करने का प्रयास कर रहे हैं, django-jython का उपयोग कर।Django-Jython, और टोमकैट के साथ तैनाती?

बस चीजों का परीक्षण करने के लिए, मैंने एक खाली Django ऐप के लिए सफलतापूर्वक WAR संग्रह फ़ाइल बनाई है। परीक्षण Django आवेदन "कुर्सी" कहा जाता है।

हमारे टोमकैट सर्वर को स्पष्ट रूप से WAR अभिलेखागार फ़ाइलों को पसंद नहीं है, इसलिए मैंने विस्फोट (इसे अनजिप किया), और इन फ़ाइलों को सर्वर पर कॉपी किया।

वेबसर्वर व्यवस्थापक ने मेरे लिए एक संदर्भ बनाया है, और उस संदर्भ के लिए एक निर्देशिका (mediatracking) बनाया है।

मैंने उस निर्देशिका में WAR संग्रह से फ़ाइलों की प्रतिलिपि बनाई है, और मुझे पूरा यकीन नहीं है कि उस परीक्षण ऐप को "रन" करने के लिए कैसे प्राप्त करें?

\mediatracking 
- application.py 
- application$py.class 
\WEB-INF 
    web.xml 
    \lib 
    - jruby-extras-fileservlet.jar 
    - jython.jar 
    \lib-python 
    - Lib.pth 
    - README 
    \chair 
    \django 
    \doj 
    \Lib 

आदि (मैं कुर्सी/Django/DOJ/लिब निर्देशिका में से कम उतरा नहीं किया है।)

वहाँ स्पष्ट कुछ भी ऊपर निर्देशिका संरचना से लापता है?

और वास्तव में मैं इस ऐप को "चलाने" के लिए टॉमकैट सर्वर कैसे प्राप्त करूं? यदि आप संदर्भ निर्देशिका पर जाते हैं तो यह स्वचालित रूप से नहीं चलता है (और वहां केवल एक application.py और एप्लिकेशन $ py.class फ़ाइल है, इसलिए मुझे यकीन नहीं है कि यह कैसा होगा)।

क्या मुझे web.xml फ़ाइल के साथ कुछ करने के लिए अपने वेबसर्वर व्यवस्थापक से पूछने की ज़रूरत है? मैं जाँच की है कि, और वहाँ वहाँ में कुछ भी है कि इस एप्लिकेशन को या तो चलाने में मदद मिलेगी हो प्रतीत नहीं होता: =

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE web-app 
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
"http://java.sun.com/dtd/web-app_2_3.dtd"> 
<web-app> 
    <display-name>chair</display-name> 
    <description> 
    chair through WSGI with modjy 
    </description> 
    <context-param> 
    <param-name>files.prefix</param-name> <!-- Needed by fileservlet --> 
    <param-value></param-value> 
    </context-param> 
    <servlet> 
    <servlet-name>modjy</servlet-name> 
    <servlet-class>com.xhaus.modjy.ModjyJServlet</servlet-class> 
    <init-param> 
     <param-name>reload_on_mod</param-name> 
     <param-value>1</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet> 
    <servlet-name>fileservlet</servlet-name> 
    <servlet-class>org.jruby.webapp.FileServlet</servlet-class> 
    </servlet> 


    <servlet-mapping> 
    <servlet-name>fileservlet</servlet-name> 
    <url-pattern>/media/*</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
    <servlet-name>modjy</servlet-name> 
    <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

बिल्कुल किसी भी सलाह बहुत सराहना की जाएगी)।

चीयर्स, विक्टर

उत्तर

2

यह एक देर से जवाब है, लेकिन मैं इस सवाल का अब तक नहीं देखा था। उम्मीद है कि यह अभी भी मदद करता है। यहां दिए गए चरणों का मैं हमेशा अनुसरण करता हूं (सफलतापूर्वक)।

1) युद्ध फ़ाइल बनाएँ:

manage war --include-java-libs "...your external jars here..." --context-root=chair 

context-root का नाम महत्वपूर्ण है क्योंकि Django-ऑन-Jython अपने settings.py फ़ाइल में हेरफेर और इस संदर्भ जोड़ने के लिए अपने MEDIA_URL और ADMINMEDIA_URL को संशोधित करेगा (जैसे MEDIA_URL = '/chair/media/'), और यह वही संदर्भ होना चाहिए जिसे आप टोमकैट में तैनात करते हैं। यह जेनरेट की गई युद्ध फ़ाइल का एक ही नाम होगा (इस मामले में chair.war)। बाहरी जारों में कम से कम आपके जेडीबीसी ड्राइवर शामिल हैं।

2) टॉमकैट को युद्ध तैनात करें (मैंने कभी भी टॉमकैट में इस्तेमाल नहीं किया है, संस्करण 5 और 5.5)। मैं इसे मैन्युअल रूप से यूआरएल http://server:8080/manager/html पर एचटीएमएल मैनेजर ऐप के माध्यम से करता हूं - इसे प्रमाणीकरण की आवश्यकता होगी, उपयोगकर्ता नाम/पासवर्ड का उपयोग करें जिसमें टॉमकैट के conf/users.xml में प्रबंधक विशेषाधिकार हैं, मुझे लगता है (मैं स्मृति से लिख रहा हूं)। चींटी, मेवेन या अन्य उपकरणों के साथ इसे स्वचालित करने के कई तरीके हैं, लेकिन मैन्युअल ठीक है।

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

3) यूआरएल http://server:8080/chair/ से यूआरएल में परिभाषित कोई अतिरिक्त यूआरएल पथ से अपने तैनात ऐप तक पहुंचें।

<servlet-mapping> 
    <servlet-name>modjy</servlet-name> 
    <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

तुम क्या आप HTML प्रबंधक में http://server:8080/chair/ जांच पर उम्मीद एप्लिकेशन वास्तव में शुरू किया गया था कि क्या दिखाई नहीं देता है: py)

Modjy सर्वलेट एक अपने यूआरएल की सेवा चल रहा है, के रूप में में परिभाषित किया गया है , और त्रुटियों के लिए अपने टॉमकैट लॉग की जांच करें (आमतौर पर टॉमकैट इंस्टॉलेशन डीआईआर पर लॉग/catalina.out)।

आधिकारिक दस्तावेज़ में अधिक जानकारी: http://packages.python.org/django-jython/war-deployment.html

0

मैं अपने web.xml कि वास्तव में एक WSGI प्रतिदेय वस्तु को निर्दिष्ट में किसी भी विन्यास नहीं दिख रहा है: पहले एक आवेदन चलाया जा एक आवश्यकता है।

Modjy को कॉलबेल निर्दिष्ट करने के तरीके के लिए यहां देखें।

http://opensource.xhaus.com/projects/modjy/wiki/ModjyLocateCallables

वैकल्पिक रूप से, modjy डेमो वेब अनुप्रयोग में web.xml के साथ अपने web.xml की तुलना करें।

https://fisheye3.atlassian.com/browse/jython/trunk/jython/Demo/modjy_webapp/WEB-INF/web.xml

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