Как разместить определенные файлы в корневом каталоге сервера Grails? - PullRequest
0 голосов
/ 08 мая 2009

Я использую приложение Grails в качестве бэкэнда для Flex-интерфейса. Чтобы можно было легко разрабатывать и отлаживать мои приложения, мне нужно было бы поместить файл crossdomain.xml в корень сервера, то есть он должен быть доступен через http://localhost:8080/crossdomain.xml. Подобные варианты использования могут быть при развертывании favicon. ico или robots.txt, однако это можно сделать в производственной среде через сервер Tomcat с корневым веб-приложением по умолчанию.

В моем случае, однако, мне нужно, чтобы crossdomain.xml был доступен после запуска grails run-app. Я знаю, что могу переместить все приложение в корень (http://ca.rroll.net/2009/03/27/configuring-the-grails-root-application-context/), однако это тоже не то, что мне нужно, поскольку приложение grails должно по-прежнему находиться ниже контекста приложения по умолчанию.

Кто-нибудь знает, как я могу это сделать? Придется ли мне каким-то образом перенастроить контейнер с сервлетом от пристани моей установки Грааля?

Ответы [ 2 ]

1 голос
/ 12 мая 2009

Я думаю, что нашел ответ. Я еще не пробовал, так что YMMV.

В этой статье Колин Харрингтон обсуждает, как сделать файл crossdomain.xml доступным в корне сервера, путем развертывания дополнительного контекста Jetty.

Его техника впервые была предложена в этом блоге entry , где автор также обсуждает использование Static Resources Plugin в качестве другой альтернативы

0 голосов
/ 19 мая 2011

Я нашел способ решить эту проблему с помощью Apache и mod_proxy. Это позволяет вашей установке Grails и проекту Grails оставаться нетронутыми. Не нужно взламывать внутренности Grails, не добавлять плагинов, которые вам могут не понадобиться в работе.

1. Установите Apache httpd 2.2

Делать это, однако, лучше всего подходит для вашей операционной системы. Важно, чтобы вы установили Apache 2.2. Я сделал это в системе Ubuntu, поэтому любые конкретные команды и расположение файлов будут для Ubuntu. Внесите необходимые изменения в вашу систему.

После установки Apache запустите httpd.

sudo /sbin/service httpd start

Проверьте, правильно ли он установлен с помощью веб-браузера.

2. Создать корневой каталог

Выберите место на вашем диске, где вы будете хранить ваши статические файлы. Это будет корень документа для httpd. Я буду использовать /var/grails_root.

mkdir /var/grails_root
touch /var/grails_root/crossdomain.xml

3. Создайте VirtualHost в httpd.conf

Откройте httpd.conf в вашем любимом текстовом редакторе.

vim /etc/httpd/conf/httpd.conf

Выберите ваш любимый порт и создайте виртуальный хост на этом порту. Я буду использовать 9090, но подойдет любой порт.

Добавьте эти строки в httpd.conf

Listen 9090
<VirtualHost *:9090>
    DocumentRoot "/var/grails_root"
    <Directory "/var/grails_root">
        Allow from all
    </Directory>
</VirtualHost>

Перезапустите httpd

sudo /sbin/service httpd restart

Проверьте, что вы теперь можете получить доступ к статическим файлам в корневом каталоге вашего документа. Если нет, вам нужно будет это исправить, прежде чем переходить к следующему шагу.

4. Включить mod_proxy и mod_proxy_http

Вам необходимо загрузить оба этих модуля. mod_proxy имеет базовую функциональность для прокси, а модули mod_proxy_xxx имеют информацию, специфичную для протокола. Они поставляются стандартно с httpd 2.2, поэтому вам не нужно устанавливать ничего лишнего.

Добавьте эти строки в httpd.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Теперь измените виртуальный хост, который вы установили на предыдущем шаге. (Вы можете опустить комментарии)

<VirtualHost *:9090>
    DocumentRoot "/var/grails_root"
    <Directory "/var/grails_root">
        Allow from all
    </Directory>
# New lines start here
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass /grailsApp http://your.grails.server:8080/grailsApp
# New lines end here
</VirtualHost>

Перезапустите httpd

sudo /sbin/service httpd restart

Теперь вы должны иметь доступ к статическим файлам и приложению Grails через порт 9090.

Все это основано на информации, найденной здесь: http://docs.codehaus.org/display/JETTY/Configuring+mod_proxy

Информация для этого с другими версиями Apache доступна на том же сайте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...