通过Apache运行多个Catalyst应用程序

Jan*_*kie 3 apache mod-perl catalyst

我有一个包含三个Catalyst应用程序的suse框.最终我需要通过Apache运行mod_perl和SSL来运行所有三个(这本身不是问题,每个都有不同的端口).我已经成功地启动了一个Catalyst应用程序,然后成功转换到Catalyst服务器.

如果有人需要一步一步如何做到这一点,你可以在这里看到它.http://www.catalystframework.org/calendar/2005/7

我不是Apache专家,但问题是我不知道有一种方法可以在一台服务器上运行多个Catalyst应用程序,并让Apache以某种方式能够提供这三种服务器.

http://www.catalystframework.org/calendar/2005/7上的页面甚至说了.....

缺点
无法运行同一应用程序的多个版本
不可能在同一个Apache实例中运行同一应用程序的两个不同版本,因为命名空间会发生冲突.

话虽如此,这可能是通过多个Apache实例实现的吗?不知何故?通过虚拟主机指令可能吗?我知道通过将Catalyst应用程序预先加载到Apache中,每次我执行此操作时都会占用大量内存.

Jan*_*kie 6

好!我找到了答案.您确实可以通过Apache/mod_perl运行多个Catalyst应用程序,您无法运行同一个应用程序的多个实例.话虽如此,这里只需要运行多个(不使用VirtualHost指令).在你的default-server.conf中

PerlSwitches -I/home/me/catalyst/App1/lib
PerlSwitches -I/home/me/catalyst/App2/lib

PerlModule App1
PerlModule App2

<Location /app1>
        SetHandler modperl
        PerlResponseHandler App1
</Location>

<Location /app2>
        SetHandler modperl
        PerlResponseHandler App2
</Location>
Run Code Online (Sandbox Code Playgroud)

Apache将整个Catalyst应用程序拉入内存,然后将其视为处理程序.唯一的缺点是它在内存中占用了具有多个这样的应用程序的内存.上行是速度,mod_perl将共享两者所需的模块.

希望如果您遇到同样的问题,这将有所帮助.此外,Apache/mod_perl和您的Catalyst应用程序必须在相同版本的Perl下编译,否则您将获得"未定义的符号"错误.