Как загрузить файл 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
свойство с параметром полного пути к создаваемому файлу. При следующем запуске шеф-повар увидит, что файл уже создан, и пропустит его.