Pular para o conteúdo

Execução de scripts CGI com utilização de mod_perl

Dica publicada em Linux / Configuração
Fernando dos Santos Amador fernandoamador
Hits: 9.773 Categoria: Linux Subcategoria: Configuração
  • Indicar
  • Impressora
  • Denunciar

Execução de scripts CGI com utilização de mod_perl

Tendo em vista que os scripts CGI são lentos e ocupam mais recursos sob carga pesada, em um mundo ideal você não executará scripts CGI quando mod_perl estiver funcionando em seu sistema.

Porém a realidade é que os administradores são pessoas ocupadas e portar algo que já está funcionando é com freqüência uma tarefa ignorada porque outro trabalho mais sério está esperando em algum lugar.

Felizmente mod_perl lhe permite executar seus scripts CGI usando um módulo mod_perl default denominado Apache::Registry.pm. Desse modo você pode executar seus scripts CGI sob mod_perl imediatamente. Aqui está como fazê-lo.

1. No arquivo httpd.conf, crie um nome alternativo /apps/ para indicar o diretório do seu script CGI, adicionando a linha a seguir:

Alias /apps/ "/www/meusite/cgi-bin"

Certifique-se de trocar /www.meusite/cgi-bin pelo diretório de scripts CGI que for apropriado ao seu sistema.

2. Informe ao Apache para carregar o módulo Apache:Registry durante a inicialização, adicionando a linha a seguir em httpd.conf:

PerlModule Apache::Registry

3. Informe ao Apache para executar todos os scripts via Apache::Registry para o diretório /apps/, acrescentando este segmento de configuração em httpd.conf:

    <Location /apps>
      SetHandler perl-script
      PerlHandler Apache::Registry
      Options ExecCGI
    </Location>

4. Reinicie o servidor Apache usando o comando:

# /usr/local/apache/bin/apachectl restart

5. Acesse um servidor CGI que utilize um navegador web, empregando:

http://nome_do_seu_servidor/apps/nome_de_script

Se tiver uma diretiva ScriptAlias configurada de modo a apontar /cgi-bin/ para /www/meusite/cgi-bin (ou qualquer que seja o diretório de scripts CGI no seu sistema), você poderá acessar os scripts CGI como o script "CGI" usando o mesmo script com mod_perl:

http://nome_do_seu_servidor/apps/nome_de_script

Esse último código tem a vantagem de não gerar um novo processo de CGI a cada solicitação, permitindo que ela funcione mais rápido. Observe que a variável de ambiente mod_perl pode distinguir o modo como um script está sendo executado (CGI ou mod_perl). Considere, por exemplo, o segmento de código a seguir:

if ($ENV(MOD_PERL) ne '') {
    # Funciona como um script mod_perl, como um módulo mod_perl
    # nativo ou um script de execução de Apache::Registry

}else {
    # Script CGI sendo executado via mod_cgi como um
    # processo separado
}

A instrução condicional anterior detecta como um script está sendo executado. Os scripts no diretório "apps" serão executados por meio do módulo Apache::Registry. Isso significa que você pode remover completamente o módulo mod_cgi de seu sistema recompilando o Apache com a opção --disable-module=cgi.

Ativando a SSI para um tipo de arquivo específico no Apache

Usando um script PHP como inclusão do lado servidor

Layout de teclado para ABNT2 - Configuração no Ubuntu (modo texto)

Compilação e instalação de mod_perl

Configuração do FastCGI para o Apache

Trocando MAC da placa de rede

Debian - Versão da distribuição

Vídeo - Instalando o Arch Linux no VirtualBox e utilizando a documentação como referência

Windows 7 bootável pelo pendrive

Configurando o xorg.conf no Ubuntu

#1 Comentário enviado por fabio em 31/01/2005 - 04:12h
Vale lembrar que o mod_perl habilitado também onera carga extra ao Apache, pois os childs do servidor são executados com interpretadores Perl embutidos, porém no comparativo entre CGI e mod_perl, a segunda opção ganha com folga é claro :)
#2 Comentário enviado por fernandoamador em 18/04/2006 - 19:07h
certamente...

Contribuir com comentário

Entre na sua conta para comentar.