🇬🇧   English

Servidor HTTP fácil de usar no Linux

Postado em 12-06-2024, por Rodolfo

Precisa transferir arquivos através da sua rede LAN rapidamente? Use este breve comando.

Um servidor HTTP é um servidor web. Ele fornece páginas e arquivos de um servidor, pela rede local ou pela Internet, para outros computadores rodando um navegador da web ou um programa cliente.

O servidor HTTP, neste caso, é um módulo Python. Se você tem Python instalado na sua máquina (provavelmente tem, pois a maioria das distros Linux já o trazem por padrão) você pode abrir um servidor HTTP e compartilhar arquivos localmente de forma rápida, através de um comando apenas!

Os dispositivos (servidor e clientes) devem estar conectados à mesma rede. Você utilizará o endereço IP local do servidor para conectar-se a ele. Este procedimento (considerando a forma como está detalhado neste artigo) não funciona fora de uma rede local.

O Python está instalado?

Para checar se você tem o Python instalado na sua máquina Linux, entre com o seguinte comando em um terminal:

$ python3

Este comando rodará o interpretador Python, mostrando que o Python está instalado na sua máquina. Para sair do interpretador, tecle Ctrl+D ou digite quit().

Rodando o servidor

  • Abra um terminal;
  • Entre na pasta onde estão os arquivos (neste exemplo, "MeusArquivos");
  • Rode o comando fornecido.

$ cd MeusArquivos

/MeusArquivos $ python3 -m http.server

Quando terminar de transferir arquivos, feche o servidor com Ctrl+C.

Sobre o comando

  • python3 abre o interpretador Python;
  • O switch -m é utilizado para informar ao interpretador qual módulo ele deve usar;
  • http.server é o nome do módulo.

Quando o comando for executado você verá algo assim:

/MeusArquivos $ python3 -m http.server

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Agora o servidor está rodando em um terminal na máquina 1. Para acessar os arquivos usando a máquina 2, abra um navegador nela e digite o endereço IP local da máquina 1 e a porta 8000.

Exemplo: se o IP local da máquina 1 for 192.168.0.205, escreva o seguinte no navegador da máquina 2: "192.168.0.205:8000".

Barra de endereços do navegador

A barra de endereços no navegador da máquina 2 exibindo o endereço IP do servidor e a porta.

Navegador na máquina nr. 2

O corpo da página mostrando os arquivos e pastas fornecidos pelo servidor HTTP. (CLIQUE NA IMAGEM PARA ABRIR EM TAMANHO REAL).

Agora você só precisa clicar nos arquivos que quiser baixar na máquina nr. 2. Se quiser baixar uma pasta sem precisar clicar em cada arquivo dentro dela individualmente, você deve comprimir a pasta antes de iniciar o servidor. Logo após é só baixar o arquivo comprimido e descomprimi-lo onde preferir.

A máquina nr. 1 (o servidor) pode ser qualquer dispositivo com Python instalado, mas a máquina nr. 2 (o cliente) pode ser qualquer dispositivo conectado à mesma rede que o servidor, e capaz de rodar um programa cliente ou um navegador. O Python não é necessário no cliente. Seu telefone celular pode fazer isso, por exemplo.

Alterando parâmetros

Podemos mudar vários parâmetros ao rodar o servidor, como a porta padrão que o servidor utilizará:

/MeusArquivos $ python3 -m http.server 9000

Temos também duas formas para informar ao interpretador Python qual pasta queremos utilizar:

Opção 1: $ python3 -m http.server -d nomedapasta

Opção 2: $ python3 -m http.server --directory nomedapasta

(Substitua "nomedapasta" com o nome da pasta que quiser.)

Atenção!

Como nos diz a documentação oficial do Python: o módulo http.server não é recomendado para ambientes de produção. Ele implementa verificações de segurança básicas apenas.

Então utilize-o apenas para propósitos pessoais, em sua própria rede confiável.

Sites consultados:

https://developer.mozilla.org/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server

https://docs.python.org/3/library/http.server.html