Apache2 - настройка PERL5LIB через SetEnv под CGI

Моя установка выглядит следующим образом: у меня есть один веб-сервер Apache2, на котором запущены разные vhosts, один vhost предназначен для рабочего веб-сайта, а другой vhost - для системы промежуточного просмотра / предварительного просмотра. Оба vhosts имеют разные DocumentRoots, а также разные (Perl) папки CGI. Используемые модули для каждого из этих vhosts должны быть в разных каталогах, поэтому я сделал следующее:

<VirtualHost...>
ServerName production
SetEnv PERL5LIB /home/production/modules
</VirtualHost>

<VirtualHost...>
ServerName staging
SetEnv PERL5LIB /home/staging/modules
</VirtualHost>

Однако я только что заметил, что в моих сценариях Perl CGI оба пути заполняются в моем @INC, поэтому я не могу отделить промежуточные модули от производственных модулей, например, директива SetEnv не ограничивается одним виртуальным хостом, но, кажется, работать по всему миру.

Как я могу решить это?

Спасибо! Jonas

2 ответа

Решение

Я нашел что-то под названием SetEnvIf, которое можно использовать для установки переменных среды на основе заголовков запроса. например.

SetEnvIf Request_URI "\request-for-staging\" PERL5LIB=/home/staging/modules

Но это может быть слишком тяжело... так что вы можете попробовать опцию [E =...] mod_rewrite.

Надеюсь, это поможет:)

  <VirtualHost ...>
      ServerName dev1
      PerlOptions +Parent
      PerlSwitches -I/home/dev1/lib/perl
  </VirtualHost>

  <VirtualHost ...>
      ServerName dev2
      PerlOptions +Parent
      PerlSwitches -I/home/dev2/lib/perl
  </VirtualHost>
Другие вопросы по тегам