vic*_*ooi 7 django tomcat jython
我有一个Django应用程序,我们正在尝试使用django-jython部署到Tomcat服务器.
为了测试一下,我已成功为一个空的Django应用程序创建了WAR存档文件.测试Django应用程序称为"主席".
我们的Tomcat服务器显然不喜欢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
Run Code Online (Sandbox Code Playgroud)
(我没有低于chair/django/doj/Lib目录中的那个.)
上面的目录结构中是否有任何明显的缺失?
我究竟如何让Tomcat服务器真正"运行"这个应用程序?如果你去上下文目录它不会自动运行(并且那里只有一个application.py和application $ 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>
Run Code Online (Sandbox Code Playgroud)
任何建议都将非常感激=).
干杯,维克多
这是一个迟到的答案,但到目前为止我还没有看到这个问题。希望它仍然有帮助。以下是我始终遵循的步骤(成功)。
1)创建war文件:
manage war --include-java-libs "...your external jars here..." --context-root=chair
Run Code Online (Sandbox Code Playgroud)
的名称context-root
很重要,因为 Django-on-Jython 将操作您的settings.py
文件并修改您的 MEDIA_URL 和 ADMINMEDIA_URL 以添加该上下文(例如MEDIA_URL = '/chair/media/'
),并且它必须与您在 Tomcat 中部署到的上下文相同。它将与生成的 war 文件同名(在本例中为chair.war
)。在外部 JAR 中至少包含 JDBC 驱动程序。
2)将战争部署到Tomcat(在我使用的任何Tomcat,版本5和5.5中从来没有出现过问题)。我通过 URL http://server:8080/manager/html上的 HTML 管理器应用程序手动执行此操作- 它将需要身份验证,使用conf/users.xml
我认为在 Tomcat 中具有管理器权限的用户名/密码(我是凭记忆写的)。有很多方法可以使用 Ant、Maven 或其他工具来自动化此操作,但手动也可以。
如果您绝对必须手动取消war文件,请使用与war文件(以及上下文根)完全相同的文件夹名称,在本例中是Tomcat安装文件夹中的webapps/chair。
3) 从 URL http://server:8080/chair/访问您部署的应用程序(加上 urls.py 中定义的任何其他 url 路径)
Modjy servlet 是为您的 url 提供服务的运行程序,定义如下:
<servlet-mapping>
<servlet-name>modjy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
如果您在http://server:8080/chair/上没有看到您所期望的内容,请在 HTML 管理器中检查该应用程序是否真正启动,并检查您的 Tomcat 日志是否有错误(通常是 tomcat 安装时的 logs/catalina.out目录)。
官方文档中的更多信息:http ://packages.python.org/django-jython/war-deployment.html
归档时间: |
|
查看次数: |
6172 次 |
最近记录: |