首页 > 解决方案 > 在 openshift 上的 Coldfusion 中更新 Tomcat 的 server.xml 文件

问题描述

我正在将一些冷融合应用程序从 linux redhat 服务器迁移到 openshift。一些应用程序的设置方式要求它们需要符号链接,Tomcat 默认会阻止这些符号链接。所以我需要更新 server.xml 配置文件添加属性以允许符号链接。但是,每次我这样做时,coldfusion 启动时都会发生错误,阻止 .car 文件加载 cf 管理员设置。

我所做的是获取现有的 server.xml 文件,将 allowLinking="true" 属性添加到 /app 目录的资源标签中,并将文件加载到配置映射中,然后将该配置映射添加到我的部署 yaml

在volumeMounts下:

            - mountPath: /opt/coldfusion/cfusion/runtime/conf/server.xml
              name: volume-my3uz
              subPath: server.xml

在卷下:

        - configMap:
            defaultMode: 420
            name: tomcat-config-q
          name: volume-my3uz

这工作(在一定程度上)...... server.xml 文件被替换,符号链接工作,但没有加载所有管理员设置的 .car 文件。查看 openshift 的启动日志,我看到:

Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Updating webroot to /app
Configuring virtual directories
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml
Read-only file system: /opt/coldfusion/cfusion/runtime/conf/server.xml

然后再往下有一个coldfusion错误-找不到文件:/ColdFusionDockerStartupScripts/importCAR.cfm

我注意到的一件事是,即使我不尝试包含修改后的 server.xml 并坚持使用默认值,该文件的时间戳也是 pod 正在启动的时间。我的工作理论是,在定义 ColdFusionDockerStartupScripts 目录的初始 server.xml 文件中有一些东西,一旦完成,Coldfusion 就会删除该条目(因此我修改的文件是已被 Coldfusion 修改的文件,并且没有该条目) . 但我现在真的只是在猜测,不知道我做错了什么。

标签: tomcatcoldfusionopenshift

解决方案


由于 Adob​​e 论坛上的帖子,我找到了答案: https ://community.adobe.com/t5/coldfusion/coldfusion-2016-update-17-docker-facing-simlink-issue/mp/12218493#M189428

从本质上讲,coldfusion 在启动时对 server.xml 文件进行更新是正确的,并且试图让 openshift 替换该文件似乎会干扰这一点。这一切都发生在以下位置的冷融合启动脚本中 - /opt/startup/start-coldfusion.sh。因此解决方案是更新该脚本以将 allowLinking 属性添加到 xml 文件,而不是直接更新它。

我在脚本中添加了以下行:

xmlstarlet ed -P -S -L -i /Server/Service/Engine/Host/Context/Resources -t attr -n "allowLinking" -v "true" /opt/coldfusion/cfusion/runtime/conf/server.xml

然后将更新后的文件放入 configmap 并让 openshift 替换该文件而不是 server.xml,这很有效。


推荐阅读