向雄猫发动战争

2022-09-04 00:36:49

在过去的10年左右的时间里,我有机会无数次将Web应用程序部署到tomcat中。我还编写了几个脚本,试图自动执行此操作,但从未设法完全自动化它。

这就是问题所在。我正在尝试部署一场新的战争,与我的tomcat的Web应用程序中的现有战争同名。

选项1:幼稚的方法 - 只需复制战争并等待它更新分解的目录。这有时有效。很多时候 - 分解的目录没有在合理的时间内更新。
选项2:直通方法 - 停止雄猫,删除所有战争和临时文件。复制战争并开始雄猫。这通常涉及停止雄猫,等待一段时间 - 然后检查该过程是否仍然活着并杀死它。
选项3:手动方法 - 这可能令人惊讶,但我发现它多次工作 - 复制战争,等待爆炸目录更新,一旦更新 - 重新启动tomcat。如果没有 - 您可以尝试删除临时工作文件,这有时会有所帮助。

我还尝试了许多选项 - 具有不同的顺序和操作子集 - 重新启动,停止,删除战争,删除爆炸,删除本地主机上下文,删除本地主机工作目录,复制战争,睡眠,比较日期,礼貌地要求tomcat重新加载等。似乎没有什么是有效的。

这可能是我做错了什么,但我从许多人那里听到了同样的经历,所以我在这里得到一些建议 - 你怎么说?将新战争部署到雄猫身上的最佳方式是什么?

谢谢!


答案 1

您可以使用 curl 在 shell 脚本中轻松实现自动化

在雄猫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的解决方案


答案 2

我倾向于选择选项2。如果有一个项目我正在ide中工作,特别是附加了调试器,我发现事情最终会开始变得混乱。可能要追一条红鲱鱼一个小时,然后我发现清除所有东西会让问题消失。然后,在侧面有一个脚本是很好的,我可以偶尔启动它来清除所有内容:

  • 具有 60 秒超时的关机强制
  • 清除日志、临时、工作目录
  • 清除 Web 应用文件夹
  • 从构建位置复制到新的 war 文件中
  • 爆炸新的战争档案
  • 如有必要,请运行 awk 脚本以自定义属性文件中的计算机特定值(因此是上一个分解)
  • 在设置CATALINA_PID环境变量的情况下启动(以启用关机力)

通常,事情会很好地关闭。如果不是,那么通常有一个后台线程已启动,但缺少一个关闭钩子(例如一个memecached客户端),需要被追捕。通常,只是在新的战争中放弃似乎有效。但是,如果在开发环境中,用于执行完全重启的脚本是很好的。


推荐