-
INDEX
- Certifique-se que os arquivos cgi.load,...
- Para habilitar os protocolos cgi e fcgi,...
- Criar pastas cgi e fcgi...
- Configurar pasta /home/cgi_bin/ para que o usuário 'www-data' seja dono...
- Configurar pasta /home/cgi_bin/ e as subpastas cgi e fcgi para que pertença ao grupo ...
- Configurar o modo de acesso da pasta /home/cgi_bin/...
- Criando sites cgi-bin e fcgi-bin:
- Referências
-
CONTEÚDO
-
Certifique-se que os arquivos cgi.load, cgid.load e cgid.conf estejam na pasta /etc/apache2/mods-available.
- Nota:
- Esses arquivos acompanham a instalação do apache.
-
Conteúdo do arquivo cgi.load
LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
-
Conteúdo do arquivo cgid.load
LoadModule cgid_module /usr/lib/apache2/modules/mod_cgid.so
-
Conteúdo do arquivo cgi.conf
# Socket for cgid communication ScriptSock ${APACHE_RUN_DIR}/cgisock # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
-
- Esses arquivos acompanham a instalação do apache.
- Nota:
-
Para habilitar os protocolos cgi e fcgi, execute os seguintes comandos:
# O comando a seguir cria os links cgid.load e cgid.conf # na pasta/etc/apache2/mods-enabled sudo a2enmod cgid # Reinicia o Apache2 systemctl restart apache2
-
Criar pastas cgi e fcgi dentro da pata /home/cgi_bin/:
sudo mkdir -p /home/cgi_bin/{cgi,fcgi}
-
Configurar pasta /home/cgi_bin/ para que o usuário 'www-data' seja dono dela e de suas duas subpastas cgi e fcgi:
sudo chown -R www-data /home/cgi_bin/
-
Configurar pasta /home/cgi_bin/ e as subpastas cgi e fcgi para que pertença ao grupo paulosspacheco com objetivo de gravar arquivos nas pastas cgi e fcgi sem ser preciso o modo root.
sudo chgrp -R paulosspacheco /home/cgi_bin/
-
Configurar o modo de acesso da pasta /home/cgi_bin/ e das suas subpastas cgi e fcgi para que o usuário dono www-data e o grupo paulosspacheco possa executar, gravar e ler e outros usuários só possam executar:
# Todos os arquivos da pasta e subpastas podem executar, gravar e ler sudo chmod -R ugo+xwr /home/cgi_bin/ # Todos os arquivos da pasta e subpastas dos outros usuários não podem ler e gravar sudo chmod -R o-wr /home/cgi_bin/
- Criando sites cgi-bin e fcgi-bin:
- Site cgi-bin para os programas acessados com o protocolo CGI
-
Com editor de sua preferência, crie o arquivo /etc/apache2/sites-available/cgi-bin.conf;
-
Adicione as configurações abaixo no arquivo /etc/apache2/sites-available/cgi-bin.conf, em seguida salve-o:
<VirtualHost *:80> DocumentRoot /home/cgi_bin/cgi ServerName cgi-bin # https://httpd.apache.org/docs/2.4/mod/mod_alias.html#scriptalias ScriptAlias "/cgi-bin/" "/home/cgi_bin/cgi" # Esta diretiva especifica um valor padrão para o parâmetro charset do # tipo de mídia (o nome de uma codificação de caractere) # a ser adicionado a uma resposta se e somente se o tipo de conteúdo # da resposta for sh/plainou sh/html. AddDefaultCharset utf-8 # Habilitas as extensões .cgi .sh .pl para executar script AddHandler cgi-script .cgi .sh .pl <Directory /home/cgi_bin/cgi/> Options None Require all granted AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Require all granted </Directory> </VirtualHost>
-
Para que o link http://cgi-bin/testcgi.sh funcione no Browser, é necessário editar o arquivo /etc/hosts e adicionar abaixo da linha 127.0.0.1 localhost a linha 127.0.0.1 cgi-bin.
-
Deve ficar assim:
127.0.0.1 localhost 127.0.0.1 cgi-bin 127.0.1.1 lnxmint-server # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
-
-
Para que o link http://cgi-bin/testcgi.sh funcione no Browser, é necessário habilitar o site cgi-bin com os comandos abaixo:
# O comando a seguir cria os links cgid.load e cgid.conf # na pasta/etc/apache2/mods-enabled sudo a2ensite cgi-bin.conf # Reinicia o Apache2 systemctl restart apache2
-
Para testar se o protocolo CGI está funcionando, siga os passos de um dos dois exemplos abaixo
-
- Site fcgi-bin para os programas acessados com o protocolo FastCGI
-
Com editor de sua preferência, crie o arquivo /etc/apache2/sites-available/fcgi-bin.conf;
-
Adicione as configurações abaixo no arquivo /etc/apache2/sites-available/fcgi-bin.conf, em seguida salve-o:
<VirtualHost *:80> DocumentRoot /home/cgi_bin/fcgi ServerName fcgi-bin # https://httpd.apache.org/docs/2.4/mod/mod_alias.html#scriptalias ScriptAlias "/fcgi-bin/" "/home/cgi_bin/fcgi" # Esta diretiva especifica um valor padrão para o parâmetro charset do tipo de mídia (o nome de uma codificação de caractere) # a ser adicionado a uma resposta se e somente se o tipo de conteúdo da resposta for sh/plainou sh/html. AddDefaultCharset utf-8 <Directory /home/cgi_bin/fcgi/> # Habilitas as extensões .fcgi para executar script AddHandler fcgid-script .fcgi Options +ExecCGI #Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Require all granted AllowOverride None Require all granted </Directory> </VirtualHost>
-
Para que o link http://fcgi-bin/testfcgi.fcgi funcione no Browser, é necessário editar o arquivo /etc/hosts e adicionar abaixo da linha 127.0.0.1 localhost a linha 127.0.0.1 fcgi-bin.
-
Deve ficar assim:
127.0.0.1 localhost 127.0.0.1 fcgi-bin 127.0.0.1 cgi-bin 127.0.1.1 lnxmint-server # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
-
-
Para que o link http://fcgi-bin/testfcgi.fcgi funcione no Browser, é necessário habilitar o site fcgi-bin com os comandos abaixo:
# O comando a seguir cria os links cgid.load e cgid.conf # na pasta/etc/apache2/mods-enabled sudo a2ensite fcgi-bin.conf # Reinicia o Apache2 systemctl restart apache2
-
Para testar se o protocolo FastCGI está funcionando, siga os passos de um dos dois exemplos abaixo
-
-
-
REFERÊNCIAS
- Configurando o Apache para permitir CGI
- Módulo Apache mod_fcgid
- Vídeo aula de como instalar um arquivo .sh como cgi
- Apache Módulos
- HABILITAR CGI-SHELL NO APACHE2
- Módulo Apache mod_fcgid
- Módulo Apache mod_fcgid upgrade
- Diretiva mod_mime.addhandler
- Directive mod_mime.sethandler
- Suporte a objetos compartilhados dinâmicos (DSO)
- Unix Build Instructions