Como Rodar Shell Script e Python via Apache no Linux

Neste tutorial, vamos configurar o Apache para rodar Shell Script e Python como exemplos, mas você pode testar em qualquer linguagem de programação de seu interesse. Também vamos usar de cobaia o Arch Linux, mas com mínimas adaptações. É o mesmo procedimento para qualquer Linux ou BSD e até mesmo qualquer sistema baseado em UNIX.

[ Hits: 2.231 ]

Por: Marcos Oliveira em 20/12/2018 | Blog: http://terminalroot.com.br/


Habilitando Shell Web cgi



O CGI (Common Gateway Interface) define uma maneira de um servidor da Web interagir com programas geradores de conteúdo externos, que são geralmente chamados de programas CGI ou scripts CGI. É uma maneira simples de colocar conteúdo dinâmico em seu site, usando qualquer linguagem de programação com a qual você esteja mais familiarizado.

1. Procure no arquivo de configuração do Apache /etc/httpd/conf/httpd.conf, a linha que possui esse conteúdo "LoadModule cgid_module modules/mod_cgid.so" ou algo parecido, use um editor de texto (por exemplo, no Vim "/LoadModule cgid_module.*" ) ou se quiser procurar diretamente pelo terminal, rode:

# egrep 'LoadModule cgid_module modules.*' /etc/httpd/conf/httpd.conf

Verifique que ela estará comentada (com uma tralha "#" na frente), mais ou menos assim: "#LoadModule cgid_module modules/mod_cgid.so", tire a tralha da frente e deixe mais ou menos assim:

LoadModule cgid_module modules/mod_cgid.so

2. Próximo passo é verificar se a linha correspondente ao ScriptAlias está descomentada, procure a linha ScriptAlias /cgi-bin/ "/srv/http/cgi-bin/", geralmente ela já está descomentada e pronta pra uso e também pode ser que ela esteja apontando para outro diretório.

Lembre-se desse diretório, pois é lá que você guardará seus scripts. Isso quer dizer que você vai guardar no diretório /srv/http/cgi-bin/, mas acessará o conteúdo pelo endereço:

http://localhost/cgi-bin/

Se o diretório não existir, crie:

sudo chmod -p /srv/http/cgi-bin/ .

3. Permitir a execução de CGI utilizando a diretiva Options. Encontre as tags mais ou menos iguais a essa abaixo, na sua distro pode ser que esteja com o caminho diferente, mas esse exemplo é no Arch Linux, mas serve pra qualquer distro:

<Directory "/srv/http/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>

Altere e insira a linha "Options +ExecCGI" antes de "AllowOverride None", ficando assim:

<Directory "/srv/http/cgi-bin">
    Options +ExecCGI
    AllowOverride None
    Options None
    Require all granted
</Directory>

Não esqueça de ir salvando o arquivo a cada alteração correta feita.

4. O quarto passo é adicionar a diretiva AddHandler às extensões de arquivo que você deseja que ele aceite, encontre a linha que tem a palavra "Addhandler" e altere como desejar, por exemplo, ela vai estar mais ou menos assim:

Essa palavra pode ser encontrada em outros lugares do arquivo, mas a única linha que não possui tralha "#" na frente, é justamente a que você deve alterar.

AddHandler cgi-script .cgi

Vamos supôr que você vai querer rodar no seu servidor extensões Shell Script .sh, Python .py e Perl .pl, então deixe ela assim:

AddHandler cgi-script .cgi .sh .py .pl

Além, lógico, dos arquivo com extensão ".cgi", que provavelmente haverá qualquer linguagem de programação, e quem irá identificar é SheBang "#!/bin/linguagem" que estará no arquivo.

5. Criando um arquivo de teste para verificarmos se já está tudo Ok, exemplo para Shell Script:

sudo vim /srv/http/cgi-bin/teste.sh

Dentro do arquivo, coloque esse conteúdo:

Obs.: respeite a linha em branco logo abaixo da "shebang", um echo vazio logo abaixo de "echo "content-type: text/html"" também precisa ser respeitado, caso contrário haverá erro exibido pelo apache.

Arquivo exemplo:

#!/bin/bash

echo "content-type: text/html"
echo
echo
echo "
  <html> <head> <meta charset='utf-8' /> <title> CGI script </title> </head>
  <body>
  <h1>Algumas informações sobre a máquina que o CGI está rodando:</h1>
  "

echo "<h4>uptime</h4>"
echo "<pre>$(uptime)</pre>"

echo "<h4>uname</h4>"
echo "<pre>$(uname -a)</pre>"

echo "<h4>/proc/cpuinfo</h4>"
echo "<pre>$(cat /proc/cpuinfo)</pre>"

echo "
  </body>
  </html>
 "

Exemplo Python:

#!/usr/bin/python

print("Content-Type: text/plain;charset=utf-8")
print("")
print("Hello World!")

6. Dando as permissões necessárias para o Apache ler o navegador ler o arquivo e o diretório:

sudo chmod -R a+x /srv/http/cgi-bin/

Reinicie o Apache:

sudo systemctl restart httpd

7. Agora, abra o navegador e acesse o endereço:

http://localhost/cgi-bin/teste.sh

e veja o conteúdo!

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Habilitando Shell Web cgi
   3. Solução de possíveis problemas
Outros artigos deste autor

Funtoo + bspwm + Polybar + Rofi - Instalação e Configuração

FreeBSD Release 11.1 - Introdução, instalação e customização

Vamos usar Slack!

Leitura recomendada

Resumo LPI 102: Tópico 107 - Tarefas Administrativas

Instalando o Debian Lenny Linux

Eu!noel é sinônimo do Arch Linux! Por quê?

Deixando o Ubuntu (ou outra distro) parecido com o Mac OS X

A origem do nome Fedora

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts