【问题标题】:Multi-CFML engine test environment多CFML引擎测试环境
【发布时间】:2013-03-03 14:02:54
【问题描述】:

有没有人可以在合适的环境中一起设置多个 CFML 引擎及其版本,以交叉测试基于 CFML 的应用程序。

理想情况下,我希望它基于 Ubuntu Server,因为我将它与 VirtualBox(在 Windows 7 下)一起使用。另外,如果可以在两者之间切换会很有帮助,这样我的笔记本电脑就可以一次处理一个,而不是同时运行所有。我正在考虑以下几点:

  • Adobe ColdFusion 9
  • Adobe ColdFusion 10
  • Railo 3.3.x
  • Railo 4.x
  • OpenBD 2.x

我还想让它们从同一个共享目录中提供服务,因此我不必为每个引擎准备一份代码副本。干杯

【问题讨论】:

    标签: coldfusion development-environment railo openbd cfml


    【解决方案1】:

    您提到能够“在两者之间切换,因此我的笔记本电脑可以一次处理一台,而不是一次全部运行”,我猜您认为每个人都将在不同的 VM 上运行,或者它们可能需要大量内存。我认为你不必担心这一点。除非您要求它们位于不同的机器上,否则我认为您可以在一台 VM 和一个 servlet 容器实例(如 Tomcat)上完成所有这些操作。

    从高层次的角度来看,我会这样做。

    1. 安装 Tomcat
    2. 为每个引擎创建或下载 .wars。
    3. 将上述 .wars 部署到该 Tomcat 实例
    4. 设置 Tomcat 以使用来自不同主机名 (server.xml) 的每个 servlet
    5. 在 Tomcat 之外为您的代码副本创建一个代码目录
    6. 在每个 webapp 中设置符号链接,将代码文件夹链接到 servlet

    然后,您应该能够通过访问浏览器中的不同主机名从每个引擎中找到相同的源。

    我可能遗漏了什么。我已经很久没有设置这样的东西了。您可能需要进行大量调整(JVM 设置、切换到 Sun/ORACLE JVM 与 OpenJDK 等)。

    我不认为运行这么多引擎会给你带来很大的麻烦。根据我的开发经验,我在 Tomcat 上运行了 3 个 CF9 实例,只使用了 189mb 的 RAM。并且每增加一个实例并没有将这个数字增加 1/3。远不及。如果您可以使用少于 512md 的 RAM 轻松运行所有这些,我不会感到惊讶。如果你的记忆力真的很差,甚至可能是 256mb。

    我希望这会有所帮助。

    【讨论】:

    • 谢谢 Jason,我正在考虑将它们全部放在一个 VM 中。知道您对多个实例的内存使用没有太多帮助是有用的,这意味着我可能会放弃担心不停止/启动每个实例。如果我能让它们很好地协同工作,这听起来是一个不错的方法,主要是对 CF9/10 以及他们在非 Adob​​e 定制的 tomcat 上会多么高兴。
    • 我知道 CF9 会好的。对于 CF10,除非您使用 CGI.PATH_INFO,否则我认为您无需担心。
    • 我正在使用 FW/1,它确实依赖 CGI.PATH_INFO 获取 SES URL。但是有几个解决方案可以解决这个问题,或者(据我所知)如果 CF10 被部署为 tomcat 的 WAR,那么这不是问题。
    • 再次感谢您。我现在已经启动并运行了这一切,引擎共享同一个 tomcat 实例。最初当我在所有其他文件之上添加 CF10 时感到头疼,但结果是 Tomcat 没有足够的内存(默认为 128M)和 PermGen 空间太小而无法应付。
    【解决方案2】:

    对于 ColdFusion 10、Railo 和 OpenBD,您将考虑使用独立安装的 Tomcat、Jetty 或 JBoss 进行部署。

    ColdFusion 9,可能最简单的解决方案是“企业多服务器配置”设置。

    通过这些类型的安装,它们几乎与平台无关。

    需要注意的是每个安装使用的 Web 服务器、代理和 jndi 端口,但前提是您希望一次运行多个服务器。

    之后,您是否会为从 apache 或 Nginx 代理到服务器实例和您要使用的连接器而烦恼。

    不知道这是否有帮助......

    【讨论】:

    • 谢谢,我想可能会有一些端口冲突需要担心,一定要注意这一点。将 nginx / Apache 放在它们前面也可能很有用,以使其更容易访问。
    • 斯蒂芬,我更新了你的答案,但只是为了检查你指的是什么...... CF9 有“企业多服务器配置”(即 JRun)和“J2EE 配置”(即 EAR/WAR ) - see here - 我假设“多服务器 J2EE”是指 JRun,但我想我会发布这个以确保...
    • 嗨彼得,是的,企业多服务器配置就是我的意思。我倾向于将 j2ee ear/war 部署滚动到多服务器安装中,因为在我通过扩展的 ear 文件部署了一个闪亮的新实例之前,我实际上并没有使用多服务器安装。
    【解决方案3】:

    既然您提到了 VirtualBox,我将分享我个人处理此任务的方法。它包括几个相当简单的步骤:

    1. 将 Ubuntu Server 安装为 VirtualBox 来宾(主机也是 Ubuntu)。
    2. 仅设置基本软件,如 JVM 和更新。设置虚拟
    3. 机器网络作为桥接适配器使用我的 Wi-Fi 连接。
    4. 配置我的 Wi-Fi 路由器 DHCP 为虚拟机的 MAC 地址分配静态 IP。
    5. 向我的(主机)系统主机添加条目:ip_assigned_to_vm virtual.ubuntu
    6. 设置来宾添加并将我的 ~/www 目录挂载到机器内以访问 Web 应用程序。

    现在,当我需要另一台机器进行实验或其他软件配置时(我已经以这种方式测试过 ACF 10 和 Railo 4),我会做两件事:

    1. 克隆现有的干净机器。
    2. 确保它使用与桥接接口相同的 MAC 地址。

    就是这样。

    无论我运行哪台机器,它们都可以作为http://virtual.ubuntu 访问(当然,它需要在客户机上进行适当的网络服务器配置)。同时它们是独立的,制作任何我想要的东西并测试任何在 Ubuntu 上运行的东西都是完全安全的。

    明显的缺点是我一次只能运行一台机器,而且使用了更多的磁盘空间。对我来说不是问题。

    我尝试过使用 Tomcat 和多个 WAR 的方法,但它有几个问题:我无法使用不同的 JVM 和 Tomcat 设置,如果我搞砸了设置 - 所有 Tomcat 主机都已关闭。

    希望这会有所帮助。

    【讨论】:

    • 克隆技巧很有用,如果我搞砸了,可以节省我重新创建客人的时间。有点需要它们都在同一台主机上,因为我希望最终自动化所有不同 CFML 引擎的测试。
    • @MisterDai 就我个人而言,我认为这种自动化测试的用途并不多,因为差异并不像浏览器那样疯狂。除非您大量使用特定于引擎的代码并且需要在许多环境中运行代码(但您为什么要对自己做这样的事情呢?)。
    • 用于我的项目“CFTracker”,它监控 CFML 引擎并公开有关应用程序、会话、QueryCache 等的内部信息......很多工作都是通过下拉到每个引擎的 Java 内部来完成的因为他们在那个层面上是非常不同的。我知道够虐待狂,我也免费赠送:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多