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>