Configurando CGI no Apache
Autor: Vinicius B. | Publicado: 2011-08-20T06:50:00-07:00

Configurando CGI no Apache | Nação Livre



        






.codecolorer-container table {
    width: 99%;
}

.codecolorer-container table td:first-child {
   width: 25px;
}













/* <![CDATA[ */
var SHRSB_Globals = {
	src: "http://www.nacaolivre.com.br/wp-content/uploads/shareaholic/spritegen",
	perfoption: "1"
};
/* ]]> */




 







//<![CDATA[
var _wpcf7 = { cached: 1 };
//]]>



jQuery(document).ready(function($) { $('.sharebar').sharebar({horizontal:'true',swidth:'60',minwidth:1000,position:'left',leftOffset:25,rightOffset:10}); });


.wp-polls .pollbar {
	margin: 1px;
	font-size: 6px;
	line-height: 8px;
	height: 8px;
	background-image: url('http://www.nacaolivre.com.br/wp-content/plugins/wp-polls/images/default/pollbg.gif');
	border: 1px solid #c8c8c8;
}

	
.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}

Com a massa de usuários de internet cada  vez maior, um site ou sistema web, seja ele um blog ou um site  institucional, fica inviável a sua utilização sem qualquer conteúdo  dinâmico. Com a necessidade batendo a porta as páginas dinâmicas  cresceram e melhoraram muito nos últimos anos, sendo possível efetuar  ações que antes eram exclusivas de softwares desktop. 
Os recursos como o Ajax, linguagens do  lado do servidor (Java, PHP, ASP, C#, Ruby e dentre outras),  possibilitam a manipulação de informações, podendo-se trabalhar&nbsp; dados  específicos de forma dinâmica para os usuários. Um grande exemplo de tal  recurso são os gerenciadores de conteúdos, como WordPress, Joomla,  sistemas de&nbsp; E-commerce etc.
CGI – Common Gateway InterfaceO CGI é um recurso fantástico, que fornece um interface de 
portabilidade entre linguagens diversas a fornecerem conteúdo para a web de 
forma simples e transparente. Sua simplicidade torna o desenvolvimento mais 
fácil, pois não existe a necessidade de aprender uma nova linguagens de 
programação. É possivel até criar um programa em C++ , compila-lo e utilizar sua 
saida para fornecer seus dados para a internet.Como foco principal desta postagem vamos conhecer o CGI e 
como implementa-lo no servidor Apache.
Habilitando o CGIPrimeiramente é necessário configurar um diretório para 
servir de repositório para as aplicações que rodarão como cgi. Isto pode ser 
efetuado, colocando a propriedade “ScriptAlias” dentro das configurações do seu 
domínio web no arquivo de configuração do apache.
1 2 3 4 5 6 7 8 9 10 11&lt;VirtualHost *:80&gt; ...

ServerName dominio-da-web.com.br

ScriptAlias /cgi-bin/ /home/dominio-da-web/cgi-bin/ &lt;Directory 
/home/dominio-da-web/cgi-bin&gt;

allow from all


Options +ExecCGI

AddHandler cgi-script .cgi &lt;/Directory&gt; 
... &lt;/VirtualHost&gt;
Uma observação importante é que você pode denominar 
quantos “ScriptAlias” forem necessários , porem aconselho a criar um repositório 
único para não ter problemas com gerenciamento.A configuração acima diz ao servidor Apache que o 
diretório “cgi-bin” dentro do diretório do usuário do domínio manipulado será o 
repositório dos arquivos CGI, que serão acessados publicamente pela URL do 
navegador como http://www.dominio-da-web.com.br/cgi-bin/arquivo.cgi.Ainda no exemplo acima, é configurado a extensão a ser 
aceita como CGI dentro da tag &lt;Directory&gt; com a propriedade “AddHandler 
cgi-script” como “.cgi”. Nesta configuração foi apenas configurado a extensão 
“.cgi” para exemplo, mas se necessário pode-se especificar extensões diferente 
ou até mesmo mais de uma extensão, como .pl, .bin, .py, .sh etc.
Vejamos:
1 2 3 4 5 6 7 8 9 10&lt;VirtualHost *:80&gt; ...

ScriptAlias /cgi-bin/ /home/dominio-da-web/cgi-bin/ &lt;Directory 
/home/dominio-da-web/cgi-bin&gt;

allow from all

Options +ExecCGI


AddHandler cgi-script .pl .py 
.bin .sh &lt;/Directory&gt; ... &lt;/VirtualHost&gt;

Podemos ainda utilizar um documento padrão para ser 
especificado quando houver a requisição para um diretório CGI. A utilização 
deste recurso não utiliza “ScriptAlias” pois a diretiva “DirectoryIndex” com 
esta opção emitiria uma mensagem de erro, para solucionar este problema 
utilizaremos “Alias”.
1 2 3 4 5 6 7 8 9 10 11 12 13&lt;VirtualHost *:80&gt; ...

Alias /cgi-bin/ /home/dominio-da-web/cgi-bin/
&lt;Directory/home/dominio-da-web/cgi-bin&gt;&nbsp;&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp; Options ExecCGI&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp; SetHandler cgi-script&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp; DirectoryIndex index.py&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp; Order  allow,deny&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp; Allow from all&nbsp;&nbsp;&nbsp;&nbsp; 
&nbsp;&nbsp; AllowOverride none
&lt;/Directory&gt; 
... 
&lt;/VirtualHost&gt;

Testes de Configuração
Para efetuar testes em teu servidor de aplicações CGI, 
segue abaixo alguns exemplos de códigos para serem utilizados.Exemplo em C/C++
1 2 3 4 5 6 7 8 9 10 11#include &lt;iostream&gt;




using namespace std;



int main(int 
argc, char** 
argv) {&nbsp;&nbsp;&nbsp;&nbsp; 
cout &lt;&lt; "Content-type: text/plain" 
&lt;&lt; endl &lt;&lt; endl;&nbsp;&nbsp;&nbsp;&nbsp; 
cout &lt;&lt; "&lt;h1&gt;C/C++&lt;/h1&gt;" 
&lt;&lt; endl;&nbsp;&nbsp;&nbsp;&nbsp; cout 
&lt;&lt; "&lt;p&gt;Olá mundo !!! eu sou um CGI.&lt;/p&gt;" 
&lt;&lt; endl;&nbsp;&nbsp;&nbsp;&nbsp; 
return 0;


}
Exemplo em Python
1 2 3 4 5#! /usr/bin/env python



print("Content-type: 
text/plain\n\n")

print("&lt;h1&gt;Python&lt;/h1&gt;\n")


print("&lt;p&gt;Olá 
mundo !!! eu sou um CGI.&lt;/p&gt;\n")
Exemplo em Perl
1 2 3 4 5#! /usr/bin/perl



print 
"Content-type: text/plain\n\n";


print 
"&lt;h1&gt;Perl&lt;/h1&gt;\n";

print 
"&lt;p&gt;Olá mundo !!! eu sou um CGI.&lt;/p&gt;\n";
Exemplo em Shell Script

1 2 3 4 5#! /bin/sh



echo "Content-type: text/plain\n\n"

echo "&lt;h1&gt;Perl&lt;/h1&gt;\n"


echo "&lt;p&gt;Olá mundo !!! eu sou um 
CGI.&lt;/p&gt;\n"