【问题标题】:How can I configure a Catalyst application for different servers?如何为不同的服务器配置 Catalyst 应用程序?
【发布时间】:2009-10-31 05:43:54
【问题描述】:

我正在计划一个 Catalyst 应用程序,它将部署在多个服务器上。支持人员将在内部使用它来控制在这些服务器上运行的操作系统的各个方面。

应用程序将在每台服务器上以相同的方式运行,除了有限数量的站点特定行为。有些动作只适用于某些服务器,有些动作在其他服务器上的行为会有所不同。

是否有任何公认的设计模式/实践可以实现特定于站点的 Catalyst 应用程序定制?

我目前正在考虑在应用程序旁边部署一个站点配置文件,该文件将用于确定要启用哪些操作,并设置控制其他操作行为的参数。理想情况下,这种自定义会在 mod_perl (Apache2) 加载应用程序时发生 - 但我不确定这是否可能。

欢迎提出任何建议!

【问题讨论】:

    标签: perl catalyst


    【解决方案1】:

    Catalyst::Plugin::ConfigLoader 有代码以MYAPP_CONFIG_LOCAL_SUFFIX 环境变量的形式帮助您进行特定于站点的配置。由于控制器是组件并且配置在setup_components 时间可用,因此您可以在编译控制器时通过操作注册做任何您想做的傻事。没有太多的预卷,因为每个人的要求都是如此不同,但也不是特别难,而且在邮件列表中可以找到建议。

    【讨论】:

    • 这听起来很接近我想要的。举一个更具体的例子,我想在编译期间设置根视图模板,而不是在我的控制器操作中进行 if-test。我将不得不通过它的声音阅读 setup_components。
    【解决方案2】:

    您可以设置模板,或根据$c->req->host 的值在控制器中设置条件行为。

    【讨论】:

      【解决方案3】:

      我总是使用$HOSTNAME$USER的唯一组合来定义要加载的具体配置文件,例如

      conf => "my_app_${hostname}_${user}.conf"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-14
        • 2019-02-27
        • 2013-04-26
        相关资源
        最近更新 更多