Como Rodar Shell Script e Python via Apache no Linux

Crie Sistemas Web com Shell Script ou Python de maneira rápida e prática.

Como Rodar Shell Script e Python via Apache no Linux

O tutorial de hoje 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 pra qualquer Linux ou BSD, e até mesmo qualquer sistema baseado em UNIX.

Let’s go!


sudo pacman -Syy
sudo pacman -Syu
sudo pacman -S apache
sudo systemctl enable httpd.service
sudo systemctl start httpd.service
echo 'Minha pagina HTML' | sudo tee /srv/http/index.html

Agora abra o navegador e acesse o endereço: http://localhost/ , você verá o conteúdo que você escreveu.


Usando um diretório alternativo sem precisa de root ou sudo

Os diretórios de usuários estão disponíveis por padrão através de http://localhost/~usuario/ e mostram o conteúdo de ~/public_html

Note que há o sinal til (~) na URL, logo digite ela também antes do seu nome de usuário, caso contrário haverá erro 404, exemplo:

Mas para criar uma visualização customizada é necessário criar o diretório, alterar as permissões e criar um arquivo html:

mkdir ~/public_html
chmod o+x ~
chmod o+x ~/public_html/
chmod o+r ~/public_html/
echo 'Teste de página WEB com diretorio do usuario' > ~/public_html/index.html
sudo systemctl restart httpd.service

Depois acesse o endereço: http://localhost/~seu_usuario/


Entendimentos básicos

O Apache possui opções e diretivas <Directory ..i> para determinar suas configurações.

O arquivo de configuração principal é /etc/httpd/conf/httpd.conf , que inclui vários outros arquivos de configuração. Ao abrir ele verifique que as linhas que estão descomentadas(sem começar com tralha #), quer dizer que já estão pré-configuradas pra você, vejamos alguns exemplos:


Habilitando Shell Web cgi

Introdução

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.

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

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.

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!")
sudo chmod -R a+x /srv/http/cgi-bin/

Reinicie o Apache

sudo systemctl restart httpd

Clique Aqui Para Assistir ao Vídeo

Solução de possíveis problemas

sudo mv /usr/bin/suexec /usr/bin/suexec_tchau
sudo systemctl restart httpd

Dicas adicionais

DirectoryIndex index.html index.sh index.py

Conheça nosso Treinamentos de Shell Script, Vim, Expressões Regulares e Sed

http://terminalroot.com.br/cursos

Crie Sua Promoção

http://terminalroot.com.br/promo

Acompanhe todos os vídeos da Série Shell Script Profissional

#ShellPro

Links Úteis

Abraços! ☝

Compartilhe

Marcos Oliveira

Autor
Marcos Oliveira
Desenvolvedor de Software
youtube.com/TerminalRootTV

Pacote Promocional com Todos os Cursos

Adquira todos os cursos para se tornar um ninja do Terminal e do Linux.

Artigos Relacionados


Comentários


Conheça