我在一个使用Amazon Linux1AMI构建的AWS实例中安装了tomcat8。在tomcat.conf中,我添加了使用命令替换$()设置的变量,以便从AWS参数存储中读取参数,其中包含有关数据库url、名称等的信息。任何时候启动tomcat,它都会运行并解析命令,并根据当前参数存储值设置环境变量。然后可以在spring bean中使用它来连接到数据库。
最近,我不得不更新为使用Amazon Linux2 AMI。我知道如何安装tomcat (8.5),但它现在是作为systemctl服务运行的。当启动时,它按原样读取命令替换文本,因此环境变量最终被设置为“$(.)”显然是行不通的。
如果我手动运行/usr/libexec/tomcat/servers start,它会进行替换,但当我运行systemctl start tomcat.service时,它不会。
我尝试过使用jsvc,但这并没有什么不同。在读入tomcat.conf之后,我可以立即打印出/usr/libexec/tomcat/preamble中的一个变量,而它不会进行命令替换。
有人知道为什么这个不再起作用了吗?有没有办法在运行时为tomcat设置环境变量,就像它以前那样工作?
发布于 2020-03-27 08:19:04
所以我想出了一个办法。如果我将一个文件放在/etc/tomcat/conf.d文件夹中,它将被解析。我将我想要设置的所有变量都移入其中,并在前面添加了一个"export“,似乎做到了这一点。
https://stackoverflow.com/questions/60877915
复制相似问题