2012-03-26 29 views
3

我有一個包含三個Catalyst應用程序的suse框。最終,我需要通過mod_perl和SSL通過Apache來運行所有三個(本身不是問題,每個都有不同的端口)。我已經成功地啓動了一個Catalyst應用程序,然後成功轉換到Catalyst服務器。通過Apache運行多個Catalyst應用程序

如果任何人需要一步一步如何做到這一點,你可以在這裏看到它。 http://www.catalystframework.org/calendar/2005/7

我不是Apache專家,但問題是我不知道有一種方法可以在一臺服務器上運行多個Catalyst應用程序,並讓Apache以某種方式能夠提供全部三種服務。

http://www.catalystframework.org/calendar/2005/7頁甚至說多達.....

缺點
不能運行相同的應用程序
這是不可能運行兩個不同版本的同一應用程序的多個版本相同的Apache實例,因爲名稱空間會發生衝突。

這就是說,這可能通過Apache的多個實例嗎?不知何故?通過虛擬主機指令可能?我知道,通過將Catalyst應用程序預加載到Apache中,每次我都會佔用大量內存。

回答

5

OK!我找到了答案。 您的確可以通過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> 

Apache將整個Catalyst應用程序拖入內存,然後將其視爲處理程序。唯一的缺點是它在內存中使用多於一個應用程序的內存。上升速度和mod_perl將共享兩者所需的模塊。

希望這會有助於如果你有同樣的問題。另外,Apache/mod_perl和你的Catalyst應用程序必須在相同版本的Perl下編譯,否則你會得到「未定義符號」錯誤。