1. INDEX

    1. Certifique-se que os arquivos cgi.load,...
    2. Para habilitar os protocolos cgi e fcgi,...
    3. Criar pastas cgi e fcgi...
    4. Configurar pasta /home/cgi_bin/ para que o usuário 'www-data' seja dono...
    5. Configurar pasta /home/cgi_bin/ e as subpastas cgi e fcgi para que pertença ao grupo ...
    6. Configurar o modo de acesso da pasta /home/cgi_bin/...
    7. Criando sites cgi-bin e fcgi-bin:
      1. Site cgi-bin para os programas acessados com o protocolo CGI...
      2. Site fcgi-bin para os programas acessados com o protocolo FastCGI
    8. Referências
  2. CONTEÚDO

    1. Certifique-se que os arquivos cgi.load, cgid.load e cgid.conf estejam na pasta /etc/apache2/mods-available.

      1. Nota:
        1. Esses arquivos acompanham a instalação do apache.
          1. Conteúdo do arquivo cgi.load

            
               LoadModule cgi_module /usr/lib/apache2/modules/mod_cgi.so
            
            
          2. Conteúdo do arquivo cgid.load

            
               LoadModule cgid_module /usr/lib/apache2/modules/mod_cgid.so
            
            
          3. 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
            
            

      🔝🔝

    2. 
         # 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
      
      

      🔝🔝

    1. Criar pastas cgi e fcgi dentro da pata /home/cgi_bin/:

         
         sudo mkdir -p /home/cgi_bin/{cgi,fcgi}
      
      

    🔝🔝

    1. 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/
      
      

    🔝🔝

    1. 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/
      
      

    🔝🔝

    1. 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/         
      
      

    🔝🔝

    1. Criando sites cgi-bin e fcgi-bin:
    1. Site cgi-bin para os programas acessados com o protocolo CGI
      1. Com editor de sua preferência, crie o arquivo /etc/apache2/sites-available/cgi-bin.conf;

      2. 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>
           
        
      3. 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.

        1. 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
                
          
      4. 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
        
        
      5. Para testar se o protocolo CGI está funcionando, siga os passos de um dos dois exemplos abaixo

        1. Teste do protocolo CGI usando a linguagem shell script;
        2. Teste do protocolo CGI usando a linguagem perl
        3. .

    🔝🔝

    1. Site fcgi-bin para os programas acessados com o protocolo FastCGI
      1. Com editor de sua preferência, crie o arquivo /etc/apache2/sites-available/fcgi-bin.conf;

      2. 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>             
        
        
      3. 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.

        1. 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
                
          
      4. 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
        
        
      5. Para testar se o protocolo FastCGI está funcionando, siga os passos de um dos dois exemplos abaixo

        1. Teste do protocolo FastCGI usando a linguagem perl

    🔝🔝

  3. REFERÊNCIAS

    1. Configurando o Apache para permitir CGI
    2. Módulo Apache mod_fcgid
    3. Vídeo aula de como instalar um arquivo .sh como cgi
    4. Apache Módulos
    5. HABILITAR CGI-SHELL NO APACHE2
    6. Módulo Apache mod_fcgid
    7. Módulo Apache mod_fcgid upgrade
    8. Diretiva mod_mime.addhandler
    9. Directive mod_mime.sethandler
    10. Suporte a objetos compartilhados dinâmicos (DSO)
    11. Unix Build Instructions

🔝🔝

🔝🔝