# Como ativar os scripts CGI no Apache

[Os scripts CGI](https://www.ionos.com/digitalguide/websites/web-development/what-is-a-cgi/) são uma solução prática para aliviar a carga do servidor da Web Apache. As configurações necessárias do Apache podem ser definidas rapidamente e o processo de concessão de permissões para o diretório e os arquivos CGI é simples.

## Quais são os requisitos 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 configuração:

- um servidor em nuvem ou servidor virtual privado (VPS)
- uma distribuiçã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 instalação padrão do Linux vem com o Apache já instalado. Se o seu servidor foi criado com a opção de instalação mínima, você precisará instalar e configurar o Apache antes de prosseguir. Saiba como [instalar e configurar o Apache para WordPress](https://www.ionos.com/digitalguide/server/configuration/how-to-install-and-configure-apache-for-wordpress/) em nosso artigo relacionado.

## Como habilitar scripts CGI nas configurações do Apache

Duas coisas precisam ser configuradas para executar scripts CGI em um servidor Linux com Apache:

- O Apache precisa ser configurado para que o servidor da Web possa executar scripts CGI.
- O script precisa ser carregado no local correto e receber as permissões corretas.

### Configurações do Apache para scripts CGI no CentOS

Abra o arquivo de configuração do Apache `httpd.conf` para edição:

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

Encontre a seção que diz:

```text
#
# "/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>
```

Substitua a linha `Options None` pelas duas linhas a seguir:

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

A primeira linha diz ao Apache para executar arquivos CGI que são carregados 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) é considerado um script CGI.

A seção agora é a seguinte:

```text
#
# "/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>
```

Salve e saia do arquivo. Agora reinicie o Apache para que as alterações tenham efeito:

```bash
sudo systemctl restart httpd
```

### Configurações do Apache para scripts CGI no Ubuntu

Nos sistemas Ubuntu, como o Ubuntu 22.04, o Apache é configurado 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 configuração do Apache. Entretanto, **o módulo CGI do Apache deve ser ativado** antes que os scripts CGI possam ser executados. Para fazer isso, você precisará criar um link simbólico (:

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

Em seguida, reinicie o Apache para que as alterações tenham efeito:

```bash
sudo systemctl restart apache2
```

## Como fazer upload do script CGI e definir permissões

Para verificar a funcionalidade do script CGI em seu servidor Apache, recomendamos 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:

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

Salve e saia do arquivo. Na próxima etapa, dê ao arquivo as permissões de execução necessá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 parâmetros `chmod 755` , o script pode ser lido, editado e executado pelo proprietário. Para o grupo e outros usuários, há acesso de leitura e a possibilidade de executar o script.

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

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

Se a configuração for bem-sucedida, a mensagem “Hello world!” será exibida.

## Como solucionar erros de script CGI

**404 error**: Um [erro 404](https://www.ionos.com/digitalguide/websites/website-creation/what-does-the-404-not-found-error-mean/) significa que o URL não pode ser encontrado. Verifique se o **script foi adicionado 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](https://www.ionos.com/digitalguide/hosting/technical-matters/http-error-500-internal-server-error/) aparece em conexão com scripts CGI no Apache, isso geralmente se deve ao fato de o script não ter as permissões corretas. Verifique se o script tem permissões de execução (chmod 755) .


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/ativar-scripts-cgi-no-apache/](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/ativar-scripts-cgi-no-apache/) for AI/LLM consumption.