Как использовать perlbrew для управления установками perl, предназначенными для веб-приложений? - PullRequest
16 голосов
/ 25 сентября 2010

Я использовал perlbrew для управления несколькими версиями perl на ноутбуке Linux Fedora. Я использовал его с большим преимуществом для запуска сценариев командной строки, в основном используя App :: cmd .

Теперь я хочу перейти к запуску веб-приложений, написанных с использованием CGI :: Application с использованием различных perls, установленных в моем $HOME. Я знаком с запуском веб-приложений Perl в $HOME s с использованием Apache user_dir или созданием виртуальных хостов, но я не могу придумать чистый способ интеграции этого и perlbrew-управляемых perls. В частности, мне нужна помощь в понимании и поиске ответов на следующие вопросы:

  1. Как установить mod_perl под perlbrew?
  2. Предполагая, что это сделано, как мне сконфигурировать мой VirtualHost, чтобы он выбирал правильный текущий perl?
  3. Если это невозможно, (в чем я сомневаюсь), могу ли я хотя бы использовать локальные установки для запуска vanilla CGI ?

Спасибо за внимание.

Ответы [ 2 ]

17 голосов
/ 26 сентября 2010

Я не думаю, что это хорошее применение для perlbrew, который перемещается по символическим ссылкам в своем собственном каталоге. Хитрость заключается в переключении модуля mod_perl. Помните, что mod_perl будет двоично несовместимым между основными версиями perl, и вам придется компилировать его с использованием apache для каждой версии perl (и apache), которую вы хотите использовать.

Perlbrew действительно делает две большие вещи для вас:

  • Устанавливает Perl, который легко сделать самостоятельно.
  • Переключение между символическими ссылками, поэтому perl - это любая версия, которую вы хотите.

Если вы откажетесь от последнего, perlbrew на самом деле не так уж много для вас делает. Я не думаю, что особенность символической ссылки особенно полезна.

Я думаю, perlbrew хорош для того, что он есть, но когда вы начинаете делать что-то за пределами его ограниченного объема, пора не использовать его. Предполагается, что это инструмент, который поможет вам сэкономить время и головную боль, поэтому, если он не достигает этой цели, он не подходит для вашей ситуации.

В этой ситуации, когда я поддерживаю одно большое веб-приложение, я даю ему собственную установку perl, которую я больше никому не позволяю использовать.

По другим вопросам:

  1. заполнитель уценки

  2. Вам не нужно настраивать VirtualHost вещи. Если вы используете mod_perl, Perl уже там, и вы не можете выбрать Perl. Если вы используете CGI, вы указываете perl в строке shebang. Вы должны будете убедиться, что apache подберет правильные каталоги библиотеки, но я думаю, что Perlbrew справится с этим. Возможно, вам придется использовать SetEnv или что-то подобное в вашем httpd.conf.

  3. Для ванильного CGI просто укажите правый путь (символическая ссылка) для любой версии perlbrew по умолчанию. Программа CGI будет просто использовать любой Perl, на который указывает путь.

9 голосов
/ 31 мая 2013

См. Ответ Брайана Д. Фоя о том, почему не ожидать использования perlbrew для переключения между версиями mod_perl.Я также ожидаю, что вам нужно будет запустить несколько серверов Apache, если вам нужно несколько разных версий Perl под mod_perl.

Однако использование perlbrew в качестве простого способа сборки Perl - ИМХО правильная вещь, и тамЕсть несколько инструкций о том, как запустить mod_perl под perlbrew.

Сначала убедитесь, что perl собран с поддержкой разделяемых библиотек, передав флаг -Duseshrplib (в противном случае на 64-битных системах вы получите сбой при сбое из-заfPIC):

perlbrew install perl-5.16.3 -Duseshrplib

Установите библиотеки разработки Apache для вашей системы.В Debian это отличается в зависимости от используемого Apache MPM.Для MPOR префорка:

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

Наконец, измените строку LoadModule в вашем файле конфигурации Apache (соответственно изменив пути):

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

Ваша установка mod_perl теперь будет работать на той версии Perl, которую вы хотите.Установите все необходимые модули CPAN и приступайте к работе.

...