Развернуть войну для кота - PullRequest
14 голосов
/ 31 марта 2012

За последние 10 лет у меня была возможность развертывать веб-приложения в tomcat бесчисленное количество раз. Я также написал несколько сценариев, пытаясь сделать это автоматически, но никогда удалось полностью автоматизировать его.

Вот проблема. Я пытаюсь развернуть новую войну под тем же названием, что и существующая война в веб-приложениях моего кота.

Вариант 1: Наивный подход - просто скопируйте войну и подождите, пока она обновит разобранный каталог. Это иногда работает. Много раз - разобранный каталог не обновляется в разумные сроки.
Вариант 2: сквозной подход - остановите кота, удалите все войны и временные файлы. Скопируйте войну и начните кот. Обычно это включает в себя остановку кота, некоторое время ожидания, а затем проверку того, что процесс еще жив, и его уничтожение.
Вариант 3. Ручной подход - это может быть удивительно, но я обнаружил, что оно работает много раз - скопируйте войну, дождитесь обновления разорванного каталога и, как только это произойдет, - перезапустите кота. если это не так - вы можете попытаться удалить временные рабочие файлы, и это иногда помогает.

Я также перепробовал много вариантов - с другим порядком и подмножеством действий - перезапустить, остановить, удалить войну, удалить взорванный, удалить контекст localhost, удалить рабочий каталог localhost, скопировать войну, сон, сравнить даты, вежливо попросить tomcat: перезагрузка и т. д. Казалось, ничего не работает.

Это может быть что-то, что я делаю неправильно, но я слышал то же самое от многих людей, поэтому я здесь, чтобы получить совет - что вы скажете? Как лучше всего развернуть новую войну для кота?

Спасибо!

Ответы [ 6 ]

11 голосов
/ 13 ноября 2013

Вы можете легко автоматизировать это в сценарии оболочки с помощью curl

на коте 6:

curl --upload-file deployme.war "http://tomcat:s3cret@localhost:8088/manager/deploy?path=/deployme&update=true"

на кота 7

curl -T "deployme.war" "http://tomcat:s3cret@localhost:8080/manager/text/deploy?path=/deployme&update=true"

или почти на любом языке программирования. Я разместил решение на основе Java здесь

9 голосов
/ 31 марта 2012

Я склоняюсь к варианту 2. Если есть проект, над которым я работаю в Ide, особенно с подключенным отладчиком, я нахожу, что вещи со временем начинают путаться. Может быть, час в погоне за красной сельдью, прежде чем я обнаружу, что все убирается и проблема исчезает. Тогда хорошо иметь на стороне скрипт, который я иногда запускаю, чтобы все прояснить:

  • сила отключения с тайм-аутом 60 с
  • очистить журнал, временные каталоги, рабочие каталоги
  • очистить папку webapp
  • скопировать в новый файл войны из местоположения сборки
  • взорвать новый военный файл
  • при необходимости, запустить скрипт awk, чтобы настроить специфичные для машины значения в файлах свойств (отсюда и предыдущий разнесение)
  • запуск с установленной переменной среды CATALINA_PID (для включения принудительного отключения)

Обычно все хорошо выключается. Если нет, то обычно существует фоновый поток, который был запущен, но отсутствует хук завершения работы (скажем, клиент memecached), и его необходимо найти. Обычно, просто бросить в новой войне, кажется, работает. Но если в среде разработчиков хорошо подойдет скрипт для полного перезапуска.

4 голосов
/ 31 марта 2012

Cargo - http://cargo.codehaus.org/ - может использоваться для удаленного развертывания WAR-файлов на нескольких веб-контейнерах, включая Tomcat.

См. http://cargo.codehaus.org/Quick+start для примеров на Java.Также доступна поддержка Ant и Maven.

2 голосов
/ 31 марта 2012

Я загружаю WAR в мой домашний каталог, перейдите в / usr / local / tomcat, затем запускаю следующие команды:

bin/shutdown.sh
rm webapps/ROOT.war
rm -rf webapps/ROOT
cp ~/ROOT.war webapps
bin/startup.sh

Достаточно легко автоматизировать, но я слишком ленив (илине достаточно ленив, чтобы сделать это до сих пор.

0 голосов
/ 31 марта 2012

См. Раздел «Развертывание с использованием пакета Client Deployer»

Это в основном готовый ant-скрипт для выполнения обычных операций развертывания tomcat.

http://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html#Deploying_on_a_running_Tomcat_server

0 голосов
/ 31 марта 2012

Я просто использую инструмент управления Tomcat, чтобы остановить процесс, удалить его и установить новую WAR. Легкий горох.

...