gpt4 book ai didi

django - 使用 Django-Jython 和 Tomcat 进行部署?

转载 作者:行者123 更新时间:2023-11-28 21:46:45 26 4
gpt4 key购买 nike

我有一个 Django 应用程序,我们正尝试使用 django-jython 将其部署到 Tomcat 服务器。

为了测试,我已经成功地为一个空的 Django 应用程序创建了 WAR 存档文件。测试 Django 应用程序称为“椅子”。

我们的 Tomcat 服务器显然不喜欢 WAR 归档文件,所以我爆炸(解压缩了这个),并将这些文件复制到服务器。

网络服务器管理员为我创建了一个上下文,并为该上下文创建了一个目录(媒体跟踪)。

我已经将 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

等(我还没有降到 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>

任何建议都将不胜感激=)。

干杯,维克多

最佳答案

这是一个迟到的答案,但到目前为止我还没有看到这个问题。希望它仍然有帮助。以下是我一直(成功)遵循的步骤。

1) 创建war文件:

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

context-root 的名称很重要,因为 Django-on-Jython 将操作您的 settings.py 文件并修改您的 MEDIA_URL 和 ADMINMEDIA_URL 以添加该上下文(例如MEDIA_URL = '/chair/media/'),并且它必须与您在 Tomcat 中部署到的上下文相同。它将与生成的 war 文件同名(在本例中为 chair.war)。在外部 JAR 中至少包含您的 JDBC 驱动程序。

2) 将 war 部署到 Tomcat(在我使用的任何 Tomcat 版本 5 和 5.5 中从来都不是问题)。我通过网址为 http://server:8080/manager/html 的 HTML 管理器应用程序手动执行此操作- 它将需要身份验证,使用在 Tomcat 的 conf/users.xml 中具有管理员权限的用户名/密码我认为(我是凭内存写的)。有很多方法可以使用 Ant、Maven 或其他工具来自动执行此操作,但手动操作就可以了。

如果您绝对必须手动解开该文件,请使用与 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>

如果您在 http://server:8080/chair/ 上没有看到您期望的内容在 HTML 管理器中检查该应用程序是否真正启动,并检查您的 Tomcat 日志是否有错误(通常是 tomcat 安装目录中的 logs/catalina.out)。

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

关于django - 使用 Django-Jython 和 Tomcat 进行部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3162764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com