Apache2 - definindo PERL5LIB via SetEnv sob CGI

2

minha configuração é a seguinte: Eu tenho um servidor web Apache2 executando vhosts diferentes, um vhost é para o site de produção, o outro vhost é para um sistema de preparação / pré-visualização. Ambos os vhosts possuem DocumentRoots diferentes e também diferentes pastas CGI (Perl). Os módulos usados para cada um desses vhosts devem estar em diretórios diferentes, então fiz o seguinte:

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

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

No entanto, notei que em meus scripts Perl CGI, os dois caminhos são preenchidos em meu @INC, portanto, não posso separar os módulos temporários dos módulos de produção, por exemplo, a diretiva SetEnv não está limitada a um único host virtual, mas parece funcionar globalmente.

Como posso resolver isso?

Obrigado! Jonas

    
por j0nes 07.04.2010 / 21:23

2 respostas

0

Encontrei algo chamado SetEnvIf que pode ser usado para definir variáveis de ambiente com base na solicitação cabeçalhos. por exemplo.

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

Mas isso talvez seja muito pesado ... então você pode tentar mod_rewrite 's [E = ...] opção.

Espero que ajude:)

    
por 07.04.2010 / 23:34
2
  <VirtualHost ...>
      ServerName dev1
      PerlOptions +Parent
      PerlSwitches -I/home/dev1/lib/perl
  </VirtualHost>

  <VirtualHost ...>
      ServerName dev2
      PerlOptions +Parent
      PerlSwitches -I/home/dev2/lib/perl
  </VirtualHost>
    
por 07.04.2011 / 15:27