Grails 2.0 - развертывание WAR на удаленном сервере (Tomcat), без подключения - PullRequest
1 голос
/ 08 февраля 2012

Обычно я запускаю Grails 2.0 из своей IDE, но пытаюсь развернуть приложение на удаленном виртуальном частном сервере (linux), где я установил Tomcat и Mysql.Я создаю производственный WAR-файл и копирую его в каталог веб-приложений Tomcat, где я вижу перезапуск Tomcat и после некоторого «исправления» вижу, как приложение запускается, добавляя минимальные записи начальной загрузки в базу данных MySql.

Однако я не могу подключиться к приложению Grails (удаленно).Если я укажу www.mydomain.com, я (наконец) смогу добраться до «страницы приветствия» главного сервера Tomcat.Я также обращаюсь к Tomcat, если в конце добавляю «/», а не мое приложение grails.

Поэтому я попытался указать полные пути контроллеров, которые, как я знаю, работают на моей машине разработчика, и затем получить к ним доступ.на удаленном компьютере (обратите внимание, что grails.serverURL настроен как http://www.mydomain.com).. При этом я получаю

 HTTP Status 404 -- The requested resource (/BareBones/bare/create) is not available.

Эта ошибка происходит из приложения BareBones , которое я создал, так как яУ меня были некоторые проблемы с доступной памятью VPS. В любом случае, на моем компьютере разработчика я могу получить URL этого приложения BareBones

   http://localhost:8080/BareBones/bare/create

, как и ожидалось. При развертывании я получаю ту же ошибку HTTP Status 404 (ресурс недоступен), когда я делаю:

   http://www.mydomain.com/bare/create

В Config.groovy, в этом приложении BareBones, я получил минимальное изменение:

  environments {
     development {
        grails.logging.jul.usebridge = true
     }
    production {
       grails.logging.jul.usebridge = false

       grails.serverURL = "http://www.mydomain.com"
    }
 }

В моем файле Tomcat server.xmlЯ перешел с портов 8080/8443 по умолчанию на порт 80/443, но использование любого из этих двух наборов приводит к той же проблеме.

Возможно, мне не хватает простого шага, просто не знаю, что это такое.


PS При развертывании файла sample.war, которыйОн поставляется с Tomcat (не Grails, просто сервлет hello-world), он работает.Я могу получить к нему доступ в

  www.mydomain.com/sample

Поскольку я FTP сэмплировал sample.war с моего компьютера на сервер, это может указывать на то, что мои FTP работают хорошо, а маршрутизация на сервер правильная., сужая это до Grails & Tomcat.

1 Ответ

1 голос
/ 08 февраля 2012

Обычно в режиме разработки Grails монтирует, как вы указали, контекст appName, то есть http://localhost:8080/BareBones/ здесь.

Но путь, который он монтирует на tomcat, зависит не от самого Grails, этополностью зависит от конфигурации Tomcat и, в первую очередь, от имени файла WAR.

Даже если у вас в качестве appName BareBones и вы развернули его как ROOT.war, он будет монтировать корневой контекст "/".Если вы развернете его как BareBones.war, то он должен смонтировать тот же каталог, что и в режиме разработки.

Поскольку сайты обычно монтируются как ROOT.war "/", я могу порекомендовать установить

grails.app.context = "/"

в вашем файле Config.groovy, который сделает так, что вы будете использовать корневой путь контекста также в dev, то есть http://localhost:8080/

Это упрощает, так как dev и productionтеперь будут иметь идентичные относительные пути к везде и только имя хоста: порт изменится.

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