如何在Chef上的Tomcat 7 cookbook上上载WAR文件?

时间:2014-01-13 15:03:43

标签: java tomcat tomcat7 chef ubuntu-server

我正在尝试在CHEF上的食谱安装的Tomcat 7上部署War文件。 但是,我无法在任何论坛上找到我的问题的单一答案。我不知道该怎么做!我正在使用Ubuntu服务器12.10。 我正在使用的食谱是https://github.com/solarvm/tomcat7-cookbook

3 个答案:

答案 0 :(得分:2)

简单的方法是使用service资源来停止Tomcat,使用bash资源或文件资源来复制WAR文件,然后使用service资源再次启动Tomcat。

您尝试使用的那本食谱不会部署WAR文件。但是我找到了这个 - https://github.com/poise/application_java - 可以完成这项任务。

对于它的价值,我认为你也可以找到更好的Tomcat安装食谱。首先,Opscode社区食谱site上有一个可以处理Tomcat 7的“tomcat”食谱。

(提示:不要只使用您在Google上找到的第一本食谱。进行Github搜索,并尝试评估食谱的功能和质量)

答案 1 :(得分:2)

您是否已经找到$ tomcat / webapps /文件夹?

执行手动热部署和更新的步骤。为避免可能的冲突,您应该执行临时的 mywebapp.war.zip 文件名技巧。我多年来一直在linux和windows中使用过。

  • 将myapp.war复制到$ tomcat / webapps / myapp.war.zip文件名。 Tomcat忽略了它。
  • 将myapp.war.zip重命名为myapp.war文件名。 Tomcat找到了一个新的Web应用程序。
  • 等几秒钟,你应该找到由tomcat制作的$ tomcat / webapps / myapp / extract文件夹。 war文件已自动提取,现已可用。
  • 浏览到http://localhost:8080/myapp/网址

使用覆盖技巧更新现有的Web应用程序。

  • 将myapp.war复制到$ tomcat / webapps / myapp.war.zip filename
  • 将myapp.war.zip重命名为myapp.war文件名,强制覆盖现有文件。
  • 等几秒钟,你应该看到$ tomcat / webapps / myapp /文件夹时间戳被更新
  • 浏览到http://localhost:8080/myapp/网址

或使用删除复制技巧更新现有的Web应用程序。

  • 将myapp.war复制到$ tomcat / webapps / myapp.war.zip filename
  • 删除现有的myapp.war文件名
  • 等待几秒钟,您应该看到$ tomcat / webapps / myapp /文件夹被删除
  • 将myapp.war.zip重命名为myapp.war filename
  • 等几秒钟,你应该找到由tomcat制作的$ tomcat / webapps / myapp / extract文件夹。 war文件已自动提取,现已可用。
  • 浏览到http://localhost:8080/myapp/网址

临时 war.zip 文件名的原因是确保文件在Tomcat触及之前完全复制到目标文件夹。将大文件直接复制到.war文件名可能会触发Tomcat读取halfsized文件内容。

答案 2 :(得分:0)

在主厨中执行此操作时要记住的一个非常重要的部分是使用警戒条件,以免主厨在每次运行时都继续部署文件。 上面说明的步骤很好,但是当您在Chef中编写代码时,除非有保护条件,否则它将在每次运行和部署时继续复制文件。

以下面的情况为例,厨师将在每次运行中执行此操作。

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

要防止Chef在每次运行时都执行,请使用creates属性,该属性的参数为所创建文件的完整路径。下一次厨师运行将看到该文件已创建,并将跳过该文件。