2010-09-25 68 views
15

我一直在使用perlbrew在Linux Fedora筆記本上管理多個版本的perl。我使用它非常有益,可以運行大多數使用App::cmd的命令行腳本。如何使用perlbrew管理針對Web應用程序的perl安裝?

我現在想轉移到使用CGI::Application編寫的使用不同的Perl安裝在我的$HOME中的網絡應用程序。我熟悉使用Apache的user_dir或創建虛擬主機在$HOME s中運行Perl Web應用程序,但我無法想出一種整合此和perlbrew管理的perls的乾淨方式。具體而言,我需要幫助理解和查找這些問題的答案:

  1. 如何在perlbrew下安裝mod_perl?
  2. 假設這樣做了,我該如何配置我的VirtualHost,以便它能夠獲得當前正確的perl?
  3. 如果這是不可能的,(我懷疑)我可以至少使用本地安裝來運行香草CGI

感謝您的關注。

回答

16

我不認爲這是perlbrew的好用處,它在它自己的目錄下移動符號鏈接。訣竅是切換mod_perl模塊。請記住,mod_perl將在主要版本的perl之間是二進制不兼容的,並且您將不得不針對每個要使用的perl(和apache)版本的apache進行編譯。

perlbrew確實兩件大事爲您提供:

  • 安裝perl,它是十分容易做你自己。
  • 圍繞符號鏈接切換,所以perl是任何你想要的版本。

如果你放棄最後一個,perlbrew並沒有真的爲你做這麼多。我不認爲符號鏈接功能特別有價值。

我認爲perlbrew對於它是什麼都很好,但是當你開始做有限範圍以外的事情時,是時候不使用它了。它應該是一種節省時間和頭痛的工具,所以如果它沒有達到那個目標,那它就不適合你的情況。

在這種情況下,我支持一個單一的大型Web應用程序,我給它自己的perl安裝,我不讓其他任何東西使用。

對於您的其他問題:

  1. 降價佔位

  2. 你不應該配置任何VirtualHost東西。如果你正在使用mod_perl,perl已經在那裏,你不會選擇一個perl。如果你使用CGI的東西,你可以在shebang行上指定perl。你將不得不確保apache提取正確的庫目錄,但我認爲perlbrew可以處理它。您可能必須在httpd.conf中使用SetEnv或類似的東西。

  3. 對於香草CGI,只需指向任何默認perlbrew版本的右(符號鏈接)路徑即可。 CGI程序將只使用該路徑指向的任何perl。

9

請參閱brian d foy的回答,爲什麼不期望使用perlbrew在mod_perl的版本之間切換。如果您需要mod_perl下的多個不同的Perl版本,我也希望您需要運行多個Apache服務器。

但是,使用perlbrew作爲構建Perl的簡單方法是恕我直言,這是一個有效的事情,並且有幾條指令可用於如何在perlbrew下運行mod_perl。

首先確保perl的是建立與共享庫的支持,通過傳遞-Duseshrplib標誌(否則在64位系統中,您將獲得有關-fPIC一個令人困惑的構建失敗):

perlbrew install perl-5.16.3 -Duseshrplib 

安裝Apache的開發圖書館爲您的系統。在Debian上,這取決於您使用的Apache MPM。對於prefork的MPM:

sudo apt-get install apache2-prefork-dev 

或爲工人MPM:

sudo apt-get install apache2-threaded-dev 

然後你需要一些選項來構建和安裝mod_perl2到正確的地方。注意,這意味着cpanm將無法建造它,但你可以用它來獲取源的保持:

cpanm mod_perl2 # fails 
cd ~/.cpanm/latest-build/mod_perl-2.0.8/ # adjust mod_perl version 

調整的Perl的版本低於相應。 (該MP_APXS選項是給予基於Debian的系統,你可能並不需要正確的道路。)

perl Makefile.PL MP_APXS=/usr/bin/apxs2 \ 
       MP_AP_DESTDIR=$HOME/perl5/perlbrew/perls/perl-5.16.3/ 
make 
make install 

最後,在你的Apache配置文件修改LoadModule這一行(相應地調整路徑):

LoadModule perl_module <your homedir>/perl5/perlbrew/perls/<your perl>/usr/lib/apache2/modules/mod_perl.so 

你的mod_perl安裝現在將運行你想要的Perl版本。安裝所有必需的CPAN模塊並開始工作。

+0

這似乎是在Apache中使用perlbrow管理不同Perl和mod_perl版本的唯一解決方案。請注意......如果您的Apache實例以不同的用戶身份運行,那麼您需要使該用戶可以訪問本地Perl安裝。我在安裝了perlbrew的用戶的主目錄中使用「chmod 777 -R ./」在我的測試安裝中執行了此操作。 – 2014-03-18 12:28:52

相關問題