Servidor web http em Python com http.server (SimpleHTTPServer)

Existem algumas situações em que precisamos subir um servidor web http para exibir um código html, executar javascript ou simplesmente listar arquivos de um diretório via navegador. Vamos ver neste artigo como criar um servidor web http em Python com a utilização dos módulos http.server e SimpleHTTPServer.

Antes de começar vamos esclarecer: No Python 2.x usa-se o modulo SimpleHTTPServer. Entretanto, se você utiliza o Python >3.5, o módulo equivalente é http.server.

Neste artigo vamos usar o Python 3.9. Mas se você possui apenas o Python 2.x instalado substitua http.server por SimpleHTTPServer em todos os exemplos. Caso você não tenha o Python instalado, obtenha informações para seu sistema operacional no site oficial.

Servidor web http em Python

Certifique o Python está instalado:

cesar@coffops-server$ python3 -V
Python 3.9.1

Após conferir a instalação do Python, vamos subir o servidor http sem qualquer parâmetro:

cesar@coffops-server$ python3 -m http.server
Serving HTTP on :: port 8000 (http://[::]:8000/) ...

Neste momento temos um servidor web rodando localmente na porta 8000, portanto aponte seu navegador para http://localhost:8000.

Basicamente este módulo inicia um servidor http na pasta local. No entanto, não vemos nenhum conteúdo pois nossa pasta está vazia.

No terminal você verá o log de acesso a página:

cesar@coffops-server$ python3 -m http.server
Serving HTTP on :: port 8000 (http://[::]:8000/) ...
::1 - - [06/Mar/2022 23:04:47] "GET / HTTP/1.1" 200 -
::1 - - [06/Mar/2022 23:04:48] code 404, message File not found
::1 - - [06/Mar/2022 23:04:48] "GET /favicon.ico HTTP/1.1" 404 -
::1 - - [06/Mar/2022 23:04:49] code 404, message File not found
::1 - - [06/Mar/2022 23:04:49] "GET /favicon.ico HTTP/1.1" 404 -

Para interromper o serviço aperte Control + C.

Vamos criar um arquivo.html:

cesar@coffops-server$ echo "
<html>
<h1>Apenas um teste.</h1>
</html>
" > arquivo.html

E inserir uma imagem no diretório:

cesar@coffops-server$ wget https://coffops.com/wp-content/uploads/2020/09/cropped-logo-coffops-transparente-1.png -O imagem.png

Portanto agora temos dois arquivos no diretório: arquivo.html e imagem.png.

Vamos rodar novamente o comando para subir o servidor http e observar que agora os dois arquivos são exibidos:

cesar@coffops-server$ python3 -m http.server
Serving HTTP on :: port 8000 (http://[::]:8000/) ...
Os arquivos criados são exibidos no navegador.

Ao clicar em arquivo.html o código é interpretado e o conteúdo exibido:

Código html do arquivo.html interpretado pelo navegador.
Código html do arquivo.html interpretado pelo navegador.

O mesmo ocorre ao clicar em imagem.png, em que ela é exibida no navegador.

Alterar a porta do servidor web

Para finalizar, vamos alterar a porta de 8000 para 80. Para isso, no terminal, aperte Control + c para interromper o serviço e em seguida execute da seguinte forma:

cesar@coffops-server$ python3 -m http.server 80
Serving HTTP on :: port 80 (http://[::]:80/) ...

Pronto. Agora você pode acessar via navegador usando a porta 80 com http://localhost.

Servidor web local em Python rodando na porta 80
Servidor web local em Python rodando na porta 80

Conclusão

Utilizar este servidor web http em Python pode ser muito útil para realizar testes e tarefas simples sem a necessidade de instalar e configurar um servidor web completo, jamais utilize em produção. Se estiver procurando uma solução para colocar em ambiente de produção assista nosso vídeo completo em https://youtu.be/hn17w828I-w e confira mais conteúdos sobre Nginx da Coffops.

Deixe um comentário

O seu endereço de e-mail não será publicado.