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

Publicado por Fernando dos Santos Amador em 31/01/2005

[ Hits: 8.969 ]

Blog: http://www.suspens.com.br

 


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.

Outras dicas deste autor

Usando um script PHP como inclusão do lado servidor

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

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

Configuração do FastCGI para o Apache

Compilação e instalação de mod_perl

Leitura recomendada

Mudando imagem de fundo do GDM - Ubuntu 9.10

Habilitando e desabilitando o IPv6 no Debian

Skins de Winamp no XMMS

Fedora 18 - Alterando modo de inicialização com systemd

Fundindo Slackware com Salix

  

Comentários
[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts