Развертывание с Django-Jython и Tomcat?
у меня есть приложение Django, которое мы пытаемся развернуть на сервере Tomcat, используя django-jython.
просто чтобы проверить вещи, я создал файл архива войны для пустого приложения Django успешно. Тестовое приложение Django называется "стул".
наш сервер Tomcat, по-видимому, не любит файлы военных архивов, поэтому я взорвал (распаковал это) и скопировал эти файлы на сервер.
администратор веб-сервера создал для меня контекст и каталог для этого контекст (mediatracking).
Я скопировал файлы из военного архива в этот каталог, и я не совсем уверен, как заставить это тестовое приложение "запустить" сейчас?
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
etc. (Я не опускался ниже этого в каталоге chair/django/doj/Lib.)
есть ли что-нибудь очевидное, отсутствующее в вышеуказанной структуре каталогов?
и как именно я могу заставить сервер Tomcat фактически "запустить" это приложение? Он не запускается автоматически, если вы идете в контекстный каталог (и есть только application.py и приложение$py.файл класса там, поэтому я не уверен, как это будет).
мне нужно попросить моего администратора веб-сервера что-то сделать с интернетом.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>
любой совет вообще был бы очень признателен =).
Ура, Виктор!--3-->
2 ответов
это поздний ответ, но я до сих пор не видел этого вопроса. Надеюсь, это все еще помогает. Вот шаги, которые я всегда выполняю (успешно).
1) Создать war-файл:
manage war --include-java-libs "...your external jars here..." --context-root=chair
имя context-root
важно, потому что Django-on-Jython будет манипулировать вашим settings.py
file и измените MEDIA_URL и ADMINMEDIA_URL, чтобы добавить этот контекст (например,MEDIA_URL = '/chair/media/'
), и это должен быть тот же контекст, который вы развертываете в Tomcat. Это будет то же самое название сгенерированной войны файл (в этом случае chair.war
). Во внешних банках включают, по крайней мере, ваши драйверы JDBC.
2) развернуть войну на Tomcat (никогда не было проблемой в любом Tomcat, который я использовал, версии 5 и 5.5). Я делаю это вручную через приложение HTML manager по адресу URL http://server:8080/manager/html - для этого потребуется аутентификация, используйте имя пользователя / пароль, который имеет права менеджера в Tomcat conf/users.xml
думаю (пишу по памяти). Есть много способов автоматизировать это с помощью Ant, Maven или другие инструменты, но руководство просто отлично.
Если вам абсолютно необходимо размотать файл вручную, используйте имя папки, которое точно совпадает с именем файла war (и, следовательно, с контекстным корнем), в этом случае webapps/chair в папке установки Tomcat.
3) доступ к развернутому приложению из URL http://server:8080/chair/ (плюс любой дополнительный url-адрес, определенный в urls.py)
в Modjy сервлет выполняет обслуживающая Ваш URL-адресов, как определено в:
<servlet-mapping>
<servlet-name>modjy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
если вы не видите, что вы ожидаете в http://server:8080/chair/ проверьте в диспетчере HTML, действительно ли приложение было запущено, и проверьте журналы Tomcat на наличие ошибок (обычно logs/catalina.out at the tomcat installation dir).
дополнительная информация в официальном документе:http://packages.python.org/django-jython/war-deployment.html
Я не вижу никакой конфигурации в вашем интернете.xml, который фактически указывает вызываемый объект WSGI: один требуется перед запуском приложения.
см. здесь, Как указать вызываемые объекты в modjy.
http://opensource.xhaus.com/projects/modjy/wiki/ModjyLocateCallables
кроме того, сравните свой веб.xml с помощью интернета.xml в демонстрационной сети modjy приложение.
https://fisheye3.atlassian.com/browse/jython/trunk/jython/Demo/modjy_webapp/WEB-INF/web.xml