Os scripts CGI são uma solução prática para aliviar a carga do servidor da Web Apache. As con­fi­gu­ra­ções ne­ces­sá­rias do Apache podem ser definidas ra­pi­da­mente e o processo de concessão de per­mis­sões para o diretório e os arquivos CGI é simples.

Quais são os re­qui­si­tos para scripts CGI no Apache?

Para usar o Common Gateway Interface (CGI) para enviar scripts ao seu servidor da Web Apache, você precisa da seguinte con­fi­gu­ra­ção:

  • um servidor em nuvem ou servidor virtual privado (VPS)
  • uma dis­tri­bui­ção de servidor Linux, como o CentOS 8 ou o Ubuntu 22.04
  • um servidor da Web Apache que esteja instalado e em execução
Nota

Uma ins­ta­la­ção padrão do Linux vem com o Apache já instalado. Se o seu servidor foi criado com a opção de ins­ta­la­ção mínima, você precisará instalar e con­fi­gu­rar o Apache antes de pros­se­guir. Saiba como instalar e con­fi­gu­rar o Apache para WordPress em nosso artigo re­la­ci­o­nado.

Como habilitar scripts CGI nas con­fi­gu­ra­ções do Apache

Duas coisas precisam ser con­fi­gu­ra­das para executar scripts CGI em um servidor Linux com Apache:

  • O Apache precisa ser con­fi­gu­rado para que o servidor da Web possa executar scripts CGI.
  • O script precisa ser carregado no local correto e receber as per­mis­sões corretas.

Con­fi­gu­ra­ções do Apache para scripts CGI no CentOS

Abra o arquivo de con­fi­gu­ra­ção do Apache httpd.conf para edição:

sudo nano /etc/httpd/conf/httpd.conf
bash

Encontre a seção que diz:

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
text

Substitua a linha Options None pelas duas linhas a seguir:

Options +ExecCGI
AddHandler cgi-script .cgi .pl .py
text

A primeira linha diz ao Apache para executar arquivos CGI que são car­re­ga­dos no diretório /var/www/cgi-bin directory. A segunda linha informa ao Apache que qualquer arquivo que termine em .cgi, .pl (Perl script) ou .py (Python script) é con­si­de­rado um script CGI.

A seção agora é a seguinte:

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Require all granted
</Directory>
text

Salve e saia do arquivo. Agora reinicie o Apache para que as al­te­ra­ções tenham efeito:

sudo systemctl restart httpd
bash

Con­fi­gu­ra­ções do Apache para scripts CGI no Ubuntu

Nos sistemas Ubuntu, como o Ubuntu 22.04, o Apache é con­fi­gu­rado por padrão para permitir a execução de scripts CGI no diretório designado /usr/lib/cgi-bin . Você não precisa alterar nenhuma con­fi­gu­ra­ção do Apache. En­tre­tanto, o módulo CGI do Apache deve ser ativado antes que os scripts CGI possam ser exe­cu­ta­dos. Para fazer isso, você precisará criar um link simbólico (:

sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/
bash

Em seguida, reinicie o Apache para que as al­te­ra­ções tenham efeito:

sudo systemctl restart apache2
bash

Como fazer upload do script CGI e definir per­mis­sões

Para verificar a fun­ci­o­na­li­dade do script CGI em seu servidor Apache, re­co­men­da­mos começar com um script de teste. Crie o arquivo test.cgi no cgi-bin designado do servidor e abra o script de teste para edição:

  • CentOS: sudo nano /var/www/cgi-bin/test.cgi
  • Ubuntu: sudo nano /usr/lib/cgi-bin/test.cgi

Adicione o seguinte conteúdo a esse arquivo:

#!/usr/bin/perl
print "Content-type: text/html\n\n"; 
print "<h1>Hello world</h1>";
text

Salve e saia do arquivo. Na próxima etapa, dê ao arquivo as per­mis­sões de execução ne­ces­sá­rias:

  • CentOS: sudo chmod 755 /var/www/cgi-bin/test.cgi
  • Ubuntu: sudo chmod 755 /usr/lib/cgi-bin/test.cgi
Nota

Ao usar os pa­râ­me­tros chmod 755 , o script pode ser lido, editado e executado pelo pro­pri­e­tá­rio. Para o grupo e outros usuários, há acesso de leitura e a pos­si­bi­li­dade de executar o script.

Visualize o script em um navegador, usando o nome de domínio ou o endereço IP:

http://example.com/cgi-bin/test.cgi
http://192.168.0.1/cgi-bin/test.cgi
text

Se a con­fi­gu­ra­ção for bem-sucedida, a mensagem “Hello world!” será exibida.

Como so­lu­ci­o­nar erros de script CGI

404 error: Um erro 404 significa que o URL não pode ser en­con­trado. Verifique se o script foi adi­ci­o­nado ao diretório correto.

  • CentOS: O diretório CGI padrão é var/www/cgi-bin/
  • Ubuntu: O diretório CGI padrão é /usr/lib/cgi-bin

Erro 500 do servidor: Quando o erro 500 aparece em conexão com scripts CGI no Apache, isso ge­ral­mente se deve ao fato de o script não ter as per­mis­sões corretas. Verifique se o script tem per­mis­sões de execução (chmod 755) .

Ir para o menu principal