如何为不同的服务器配置Catalyst应用程序?

时间:2009-09-19 00:18:09

标签: perl catalyst

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

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

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

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

欢迎任何建议!

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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