Как загрузить файл WAR на поваренную книгу Tomcat 7 от Chef?

Я пытаюсь развернуть файл War на моем Tomcat 7, установленном поваренной книгой на CHEF. Но я не могу найти ни одного ответа на мой вопрос ни на одном форуме. Я понятия не имею, как это сделать! Я использую сервер Ubuntu 12.10. Я использую рецепт https://github.com/solarvm/tomcat7-cookbook

2 ответа

Решение

Самый простой способ сделать это - использовать service ресурс, чтобы остановить Tomcat, используйте bash ресурс или файловый ресурс, чтобы скопировать файл WAR, а затем использовать service ресурс, чтобы запустить Tomcat снова.

Эта поваренная книга, которую вы пытаетесь использовать, не выполняет развертывание WAR-файла. Но я нашел этот - https://github.com/poise/application_java - который может сделать эту работу.

И что бы это ни стоило, я думаю, вы могли бы найти и лучшую поваренную книгу по установке Tomcat. Для начала, на сайте Opscode Cookbooks есть рецепт "tomcat", который может работать с Tomcat 7.

(Подсказка: не используйте только первую поваренную книгу, которую вы найдете в Google. Выполните поиск в Github и попробуйте оценить функциональность и качество поваренных книг).

Вы уже нашли папку $tomcat/webapps/?

Шаги, выполняющие ручное горячее развертывание и обновление. Чтобы избежать возможного конфликта, вы должны сделать временный трюк с именем файла mywebapp.war.zip. Трюк, который я использовал в Linux и Windows в течение многих лет.

  • скопируйте myapp.war в имя файла $tomcat/webapps/myapp.war.zip. Tomcat игнорирует это.
  • переименуйте myapp.war.zip в имя файла myapp.war. Tomcat находит новое веб-приложение.
  • подождите несколько секунд, вы должны найти папку $tomcat/webapps/myapp/ extract, созданную tomcat. Военный файл был автоматически извлечен и теперь доступен.
  • перейдите к http://localhost:8080/myapp/ URL-адрес

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

  • скопируйте myapp.war в имя файла $tomcat/webapps/myapp.war.zip
  • переименуйте myapp.war.zip в имя файла myapp.war, принудительно перезапишите существующее.
  • подождите несколько секунд, вы должны увидеть, что временная метка папки $tomcat/webapps/myapp/ будет обновлена
  • перейдите к http://localhost:8080/myapp/ URL-адрес

Или обновите существующее веб-приложение, используя трюк удаления-копирования.

  • скопируйте myapp.war в имя файла $tomcat/webapps/myapp.war.zip
  • удалить существующее имя файла myapp.war
  • подождите несколько секунд, вы должны увидеть удаление папки $tomcat/webapps/myapp/
  • переименуйте myapp.war.zip в имя файла myapp.war
  • подождите несколько секунд, вы должны найти папку $tomcat/webapps/myapp/ extract, созданную tomcat. Военный файл был автоматически извлечен и теперь доступен.
  • перейдите к http://localhost:8080/myapp/ URL-адрес

Причина временного имени файла war.zip заключается в том, что файл полностью скопирован в папку назначения, прежде чем Tomcat коснется его. Копирование больших файлов непосредственно в.war имя файла может привести к тому, что Tomcat прочитает содержимое файла половинного размера.

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

Возьмем, например, пример ниже, повар будет выполнять это при каждом запуске.

# Extract
execute "tar" do
    user "#{tc7user}"
    group "#{tc7group}"
    installation_dir = "#{tc7target}"
    cwd installation_dir
    command "tar zxf /tmp/#{tc7tarball}"
    action :run
end

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

Другие вопросы по тегам