2011-09-28 50 views
2

我有一個很長時間以來運行良好的apache web服務器(沒有mod_perl)。 有人建議我們使用mod_perl來提高一些腳本的性能。CGI和mod_perl可以很好地一起玩嗎?

我想繼續並在服務器上安裝mod_perl,這似乎是一個相對簡單的過程,但我對Google搜索中出現的一些內容感到困惑。 如果我安裝了mod_perl(通過debian倉庫),那麼我現有的所有CGI是否會突然啓動「使用mod_perl」並展現出潛在的不良行爲?

還是有一些配置需要在舊的CGI「開始使用mod_perl」完成?

道歉,如果這是一個簡單的答案,但我很困惑的術語在文檔中以多種方式使用。

回答

1

mod_perl必須在您的httpd.conf中配置爲啓用。因此,服務器上的每個腳本都不會自動開始使用mod_perl。

通常,您可以爲每個VHost啓用mod_perl。的mod_perl的一個虛擬主機的通常配置是這樣的:

<VirtualHost some.funny-domain.com> 
    ServerName some.funny-domain.com 
    ServerAdmin [email protected] 
    DocumentRoot /data/path/to/root/ 
    Perlrequire /data/path/to/startup.pl 
    PerlModule Apache2::Reload 
    PerlInitHandler Apache2::Reload 
    PerlModule Apache2::RequestRec 

    ScriptAlias /cgi-bin/ "/data/path/to/root/cgi-bin/" 

    <Location /cgi-bin/> 
      SetHandler perl-script 
      PerlResponseHandler ModPerl::Registry 
      PerlOptions +ParseHeaders 
      PerlOptions +SetupEnv 
      Options +ExecCGI 
    </Location> 
    CustomLog logs/access.log combined 
    ErrorLog logs/error.log 
</VirtualHost> 

要當心與自動化的安裝過程!由於某種原因,它可能會在錯誤的主機上啓用mod_perl!首先備份您的配置和apache安裝,以便能夠輕鬆「回滾」。

評論:線 「Perlrequire /data/path/to/startup.pl」 不是必需的。它是可選的,併爲mod_perl env下的運行腳本設置一些環境變量。

+0

但是,如果我在一個域中啓用mod_perl,它是否會影響所有現有的CGI?例如,對於我來說「擴展.cgi使用mod_cgi和擴展.pl使用mod_perl」會是「最佳實踐」嗎? – Josh

+0

它會影響啓用mod_perl的路徑中的所有CGI。在這個例子中,「/ data/path/to/root/cgi-bin /」中的所有CGI都將在mod_perl下運行。您還可以定義一個新的目錄「fcgi」,並將所有啓用了mod_perl的腳本放在那裏,並從同一臺服務器上的不同位置運行它們。 – Erik

相關問題