2010-07-02 167 views
6

我有一個Django應用程序,我們正嘗試使用django-jython將其部署到Tomcat服務器。使用Django-Jython和Tomcat進行部署?

只是爲了測試,我已經成功創建了一個空的Django應用程序的WAR存檔文件。測試Django應用程序被稱爲「主席」。

我們的Tomcat服務器顯然不喜歡WAR檔案文件,所以我將其解壓(解壓縮),並將這些文件複製到服務器。

Web服務器管理員爲我創建了一個上下文,併爲該上下文創建了一個目錄(中介)。

我已經將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/lib目錄下降低於)

有什麼明顯的從上面的目錄結構中缺少什麼?

我該如何獲得Tomcat服務器才能真正「運行」這個應用程序?它不會自動運行,如果你去上下文目錄(並且那裏只有一個application.py和應用程序$ py.class文件,所以我不知道它會如何)。

我是否需要問我的web服務器管理員使用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)創建WAR文件:

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

因爲Django的上的Jython會操縱你的settings.py文件,並修改您的MEDIA_URL和ADMINMEDIA_URL增加這方面的context-root的名字是很重要的(如MEDIA_URL = '/chair/media/')並且它必須與您在Tomcat中部署的上下文相同。它將與生成的war文件的名稱相同(在本例中爲chair.war)。在外部JAR中至少包含您的JDBC驅動程序。

2)將戰爭部署到Tomcat(在我使用的任何Tomcat,版本5和5.5中從來都不是問題)。我通過HTML管理器應用程序手動通過URL http://server:8080/manager/html手動執行 - 它需要進行身份驗證,使用在Tomcat的conf/users.xml(我從內存中寫入)中擁有管理員權限的用戶名/密碼。有很多方法可以通過Ant,Maven或其他工具自動執行此操作,但手動就好了。

如果您絕對不得不手動取消該文件,請使用與war文件(以及上下文根目錄)完全相同的文件夾名稱,在本例中爲Tomcat安裝文件夾中的webapps/chair。

3)從URL http://server:8080/chair/(加上URL中定義的任何額外的URL路徑)訪問您部署的應用程序。PY)

的Modjy的servlet是一個運行服務您的網址,如定義:

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

如果你沒有看到你在HTML經理http://server:8080/chair/檢查所期望的應用程序是否已真正開始,並檢查Tomcat日誌中是否有錯誤(通常在tomcat安裝目錄中爲logs/catalina.out)。

在官方文檔更多信息:http://packages.python.org/django-jython/war-deployment.html