如何使用perlbrew管理针对Web应用程序的perl安装?

Ya.*_*man 16 perl web-applications public-html perlbrew

我一直在使用perlbrew来管理Linux Fedora笔记本上的多个perl版本.我使用它非常有益,主要使用App :: cmd运行命令行脚本.

我现在想要使用安装在我的不同的perls中运行使用CGI :: Application编写的Web应用程序$HOME.我熟悉$HOME使用Apache 运行Perl Web应用程序user_dir或创建虚拟主机,但我无法想出一种简洁的方法来集成这个和perlbrew管理的perls.具体来说,我需要帮助理解并找到这些问题的答案:

  1. 如何在perlbrew下安装mod_perl?
  2. 假设已经完成,我如何配置我的VirtualHost,以便它获取当前的正确perl?
  3. 如果这是不可能的,(我怀疑)我至少可以使用本地安装来运行vanilla CGI吗?

感谢您的关注.

bri*_*foy 17

我认为这不是一个很好用的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会处理它.您可能必须SetEnv在httpd.conf中使用或类似的东西.

  3. 对于vanilla CGI,只需指向默认perlbrew版本的右侧(符号链接)路径即可.CGI程序将使用路径所指向的perl.


dio*_*les 9

请参阅brian d foy的回答,了解为什么不期望使用perlbrew在mod_perl版本之间切换.如果在mod_perl下需要多个不同的Perl版本,我还希望你需要运行多个Apache服务器.

但是,使用perlbrew作为构建Perl的简单方法是恕我直言,这是一个有效的事情,并且有很少的指令可用于如何在perlbrew下运行mod_perl.

首先通过传递-Duseshrplib标志来确保perl是通过共享库支持构建的(否则在64位系统上,您将获得关于-fPIC的令人困惑的构建失败):

perlbrew install perl-5.16.3 -Duseshrplib
Run Code Online (Sandbox Code Playgroud)

为您的系统安装开发Apache库.在Debian上,这取决于您使用的Apache MPM.对于prefork MPM:

sudo apt-get install apache2-prefork-dev
Run Code Online (Sandbox Code Playgroud)

或者对于工人MPM:

sudo apt-get install apache2-threaded-dev
Run Code Online (Sandbox Code Playgroud)

然后你需要一些选项来构建和安装mod_perl2到正确的位置.请注意,这意味着cpanm将无法构建它,但您可以使用它来获取源:

cpanm mod_perl2  # fails
cd ~/.cpanm/latest-build/mod_perl-2.0.8/   # adjust mod_perl version
Run Code Online (Sandbox Code Playgroud)

相应地调整下面的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
Run Code Online (Sandbox Code Playgroud)

最后,更改Apache配置文件中的LoadModule行(相应地调整路径):

LoadModule perl_module <your homedir>/perl5/perlbrew/perls/<your perl>/usr/lib/apache2/modules/mod_perl.so
Run Code Online (Sandbox Code Playgroud)

您的mod_perl安装现在将运行您想要的Perl版本.安装所有必需的CPAN模块并开始使用.