如何让 tomcat 从目录自动部署 WAR 文件,但仍然使用原始的 appBase 目录

How can I get tomcat to auto-deploy WAR files from a directory, but still using the original appBase directory

我需要在嵌入式解决方案中部署我的应用程序(运行 raspberry pi 零)。因此,我真的只能在本地主机上部署东西。我对虚拟主机不太熟悉,所以我在这方面可能是错误的。

我的问题是我希望 tomcat 自动部署 war 文件,该文件包含在我克隆到 raspberry pi 的 git 存储库中。这样就可以轻松地通过 git 存储库进行更新,而不必与管理器打交道。话虽这么说,我也希望保持管理器和其他管理工具处于活动状态并正常工作,它们包含在默认的 webapps 目录中。将这些复制到 git 存储库不是我想做的事情,因为它们会被放错地方并保存在存储库中,这是不必要的。此外,我希望 tomcat 到 "explode" 或提取原始 webapps 目录中的 WAR 文件,而不是将这些文件添加到 git 存储库中。

基本上,我希望能够自动部署某个目录中的所有 war 文件,而无需实际写入该目录,同时还可以自动部署 war 中的文件 "standard" webapps目录。

这可能吗?

我正在使用 tomcat9

如何使用“inotify" to watch over the war directory in the cloned repository and if it changes copying the war into the "webapps" of the tomcat which will autodeploy the changed application. You can install inotify-tools for this. Check here 了解更多信息。

解决方案A:

Tomcat 9只有一个appBase属性,默认为webapps。为了改变你需要配置 2 Common attributes :

1.appBase:将此参数设置为需要部署的war所在的文件夹。 2.autoDeploy:确保此项设置为 true。

不可能有 2 个 appbase 目录。所以原来的 webapps 不能用于自动部署。

解决方案 B:

使用脚本从 GIT 存储库中拉取 WAR,这也会将文件复制或移动到 Tomcat9 的标准 webapps 文件夹。 例如

git pull rm path/to/tomcat/webapps/warname.war  
mv warname.war
path/to/tomcat/webapps

解决方案 C:

配置您的 GIT 存储库或另一个 GIT 存储库以仅包含具有所需 war 的 webapps 文件夹。如果您仅使用此文件夹从 GIT 存储库中提取 war,则无需提交默认的 Tomcat 应用程序。请参阅以下步骤。 从 vanilla Tomcat 9 安装开始

  1. webapps 重命名为 webappsOriginal

  2. 克隆 webapps 存储库以便现在创建另一个 webapps 文件夹,仅包含 war.

  3. webappsOriginal的所有内容移动到webapps

  4. 删除webappsOriginal

现在,如果您从存储库中提取,更新的 war 将被提取并自动部署。 没有理由添加、提交或推送 GIT.

中的现有文件