2010-09-25 13 views
15

Linux Fedora dizüstü bilgisayarında birden çok perl sürümünü yönetmek için perlbrew kullanıyorum. Ben çoğunlukla App::cmd kullanarak komut satırı komut dosyalarını çalıştırmak için büyük bir fayda ile kullandım.Web uygulamalarına yönelik perl kurulumlarını yönetmek için perlbrew'ı nasıl kullanırım?

$HOME numaralı telefonumda yüklü farklı perlleri kullanarak CGI::Application kullanarak yazılmış web uygulamalarına geçmek istiyorum. Apache'nin user_dir'u kullanarak Perl web uygulamalarını $HOME s'de çalıştırmayı veya Sanal Sunucuları oluşturma konusunda aşina olduğumu biliyorum, ancak bu ve perlbrew tarafından yönetilen perlelerin birleştirilmesi için temiz bir yol bulamadım. Spesifik olarak, bu soruların yanıtlarını anlama ve bulma konusunda yardıma ihtiyacım var:

  1. Perlbrew altında mod_perl nasıl kurulur?
  2. Bunun yapıldığını farz edersem, VirtualHost'umu, geçerli olan doğru perl'i seçecek şekilde nasıl yapılandırabilirim?
  3. Bu mümkün değilse, (hangisinden şüphe duyuyorsam) en azından yerel teçhizatları vanilya CGI çalıştırmak için kullanabilir miyim?

İlginiz için teşekkür ederiz.

cevap

16

Bunun, kendi dizininin altındaki simitlerin etrafında hareket eden perlbrew için iyi bir kullanım olduğunu düşünmüyorum. Hile mod_perl modülünü değiştiriyor. Unutmayın, mod_perl, perl'in ana sürümleri arasında ikili-uyumsuz olacak ve kullanmak istediğiniz her bir perl (ve apache) sürümü için apache'ye karşı derlemeniz gerekecek.

perlbrew gerçekten sizin için iki büyük şey yapar:

  • kendi başınıza yapmak trivially kolaydır Perl, yükler.
  • Symlinks çevresinde geçiş yapar perl ne olursa olsun istediğiniz sürümüdür.

Sonuncudan vazgeçerseniz, perlbrew gerçekten sizin için fazla bir şey yapmıyor. Symlink özelliğinin özellikle değerli olduğunu sanmıyorum.

Sanırım perlbrew ne olduğu için iyi, ancak sınırlı kapsamı dışında bir şeyler yapmaya başladığınızda, bunu kullanmanın zamanı geldi. Size zaman ve baş ağrısından tasarruf etmek için bir araç olması gerekiyordu, bu yüzden bu hedefe ulaşmazsa durumunuz için doğru bir araç değildir.

Tek bir büyük web uygulamasını desteklediğim bu durumda, başka bir şeyin kullanılmasına izin vermediğim kendi perl yüklemesini veriyorum. Diğer sorular için

:

  1. markdown tutucu herhangi VirtualHost şeyler yapılandırmak zorunda olmamalıdır

  2. . Eğer mod_perl kullanıyorsanız, perl zaten orada ve bir perl seçmiyorsunuz. CGI öğelerini kullanıyorsanız, shebang satırındaki perl'i belirtirsiniz. Apache'nin doğru kütüphane dizinlerini seçmesini sağlamalısın, ama perlbrew'un bunu ele aldığını düşünüyorum. SetEnv veya httpd.conf dosyanızda benzer bir şey kullanmanız gerekebilir.

  3. Vanilya CGI için, varsayılan perlbrew sürümü ne olursa olsun sağdaki (symlink) yolunu işaret et. CGI programı sadece yolun işaret ettiği her şeyi kullanır. mod_perl sürümleri arasında geçiş yapmak perlbrew kullanmak beklemek değil niçin

9

Bkz brian d foy cevabı. Ayrıca, mod_perl altında birden çok farklı Perl sürümüne ihtiyacınız varsa, birden fazla Apache sunucusu çalıştırmanız gerekeceğini umuyorum.

Ancak, Perlbrew'u Perl oluşturmanın kolay bir yolu olarak kullanmak IMHO için geçerli bir şeydir ve perlbrew altında mod_perl'i çalıştırmak için kullanılabilecek birkaç komut vardır.

perlbrew install perl-5.16.3 -Duseshrplib 

gelişimini Apache yükleyin:

İlk perl sağlamak (eğer -fpic hakkında kafa karıştırıcı bir yapı hatası alacak aksi 64-bit sistemlerde) -Duseshrplib bayrağı geçirerek, paylaşılan kütüphane desteği ile inşa edilmiştir Sisteminiz için kütüphaneler. Debian'da bu, kullandığınız Apache MPM'ye bağlı olarak değişir. Prefork MPM için:

sudo apt-get install apache2-prefork-dev 

Veya işçi MPM

:

sudo apt-get install apache2-threaded-dev 

Sonra kurmak ve doğru yerde doğru mod_perl2 yüklemek için bazı seçenekler gerekir. Bu cpanm inşa etmek başarısız olur anlamına geldiğini unutmayın, ancak kaynağın yakalayabilmeleri için kullanabilir:

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

aşağıda buna göre Perl sürümünü ayarlayın. (MP_APXS seçeneği gerekmeyebilir Debian tabanlı sistemler için doğru yolu vermektir.)

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

, Apache yapılandırma dosyasında LoadModule satırını değiştirmek (buna göre yolları ayarlama):

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

Mod_perl yüklemeniz şimdi istediğiniz Perl sürümünü çalıştıracak. Gerekli tüm CPAN modüllerini yükleyin ve devam edin.

+0

Bu Apache içinde perlbrow kullanarak farklı Perl ve mod_perl sürümlerini yönetmek için tek ve tek çözüm gibi görünüyor. Dikkat edin ... Apache örneğiniz farklı kullanıcı olarak çalışıyorsa, bu kullanıcı için yerel Perl kurulumunu erişilebilir yapmanız gerekir. Bunu, test kurulumumda perlbrew'un kurulu olduğu kullanıcının ana dizininden "chmod 777 -R ./" ile yaptım. –

İlgili konular