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

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

[ Hits: 9.032 ]

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

Configuração do FastCGI para o Apache

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

Compilação e instalação de mod_perl

Usando um script PHP como inclusão do lado servidor

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

Leitura recomendada

Slackware 14.2 em Português PT_BR UTF-8 em 2 linhas de configuração

Fontes Windows no Ubuntu Linux

Como empacotar programas compilados em DEB

Adicionando programas no menu do Xfce

Configurando teclado com layout americano para funcionar símbolos do alfabeto brasileiro

  

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