我维护了许多RedHat Enterprise Linux(7个和8个)服务器(〉100个)和不同的应用程序。为了保持我的理智,我当然会使用Ansible等工具,更重要的是,我会使用公共RPM库的本地镜像副本(使用Satellite Server)。
系统会定期从这些存储库应用更新,以确保服务器的安全。
这些服务器中有一些需要安装ApacheTomcat。它必须从一个tarball手动安装。更新也是手动的(由一个Ansible角色辅助,但我仍然要意识到新版本并手动更改它)。
有没有什么策略可以让Tomcat保持最新,而不需要经常关注?
更新日期:
我找到了问题的一半解决方案。默认情况下,Tomcat将安装和示例配置混合在一个目录树中,该目录树由 Catalina _HOME标识。这使得在不破坏配置的情况下更新Tomcat变得复杂。
要解决这个问题,可以将示例特定的文件放在一个单独的目录树中,用 Catalina _BASE变量标识。
- 下载新的压缩包。
- 将其解压缩到新位置
- 查看自述文件和更改日志,了解是否有任何重大更改。
- 更新 Catalina _HOME变量以指向新位置,同时保持CATALINA_BASE变量不变。
- 使用新 Catalina _HOME bin目录中的脚本重新启动Tomcat。
我在这里不提供代码,因为设置 Catalina _HOME和CATALINA_BASE的位置和方式会有所不同。我在启动Tomcat的服务单元文件中设置了这两个变量。
仍然开放:寻找一种方法来自动发现何时发布Tomcat的新版本。
3条答案
按热度按时间iqjalb3h1#
经过大量的挖掘,我找到了我需要的答案。我的问题基本上有两个部分:
如何在不破坏现有站点配置的情况下更新Tomcat
答案在于只对实际的Tomcat二进制文件使用 Catalina _HOME目录,并将配置放在由CATALINA_BASE指定的单独目录中。
Catalina _HOME目录应该只包含Tomcat tarball的内容而不做任何修改。您可以根据Tomcat文档删除某些文件,也可以添加某些共享文件,如tomcat本地库。
Catalina _BASE目录将包含/conf、/webapp、/logs和一些其他目录。
在启动Tomcat之前,请设置并导出这两个环境变量。
作为一个例子,这是我使用的systemd服务单元模板,我把它放在/etc/system/systems/tomcat@.service中
有关使用 Catalina _BASE的详细说明,请访问Tomcat文档站点。
https://tomcat.apache.org/tomcat-9.0-doc/introduction.html
如何自动查找当前Tomcat版本
第二个问题是如何找到要下载的Tomcat tarball的正确版本。Apache基金会将在下一个次要版本发布时删除一个次要版本的tarball。
因此,在9.0.45发布后,以下代码立即中断并出现404错误。
这个问题之前在Stackoverflow上已经得到了回答:How to get always latest link to download tomcat server using shell
我发现awk的解决方案有些脆弱,因为字段编号可能会移动。对sed做同样的事情:
正则表达式寻找v + digits + . + digits + . + digits的序列,然后丢弃除数字和句点之外的所有内容。
hujrc8aj2#
在远程服务器上,您可以检查
cron模块所做的事情,它每分钟都会运行这个剧本。
您可以增加或减少您的cron作业运行计时分钟,天,小时,周任何。
what_you_earlier_saved您必须创建此变量并将其保存在如下文件中
软件包更新后,每次您的ansible剧本都将更新此最新版本的文件。
v09wglhw3#
有关新版本的更新,请加入Tomcat邮件列表tomcat-announce。“该列表用于发布Tomcat版本、安全漏洞和其他项目公告。”
https://tomcat.apache.org/lists.html#tomcat-announce