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: 6.312 ]

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

Adicione vídeos como papel de parede no seu Linux

Gerencie suas contas financeiras pessoais com Terminal Finances

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

Vamos usar Slack!

Leitura recomendada

Atualização do ZappWM 4.0 Beta (Window Manager)

Um pouco sobre transição Windows/Linux

A Evolução do Linux e suas Distribuições

Software Livre - Melhor você ir se acostumando

Mageia 6 - 6 dicas de pós-instalação

  
Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts