quarta-feira, 12 de abril de 2023

Server Simples usando Python, PHP ou Node.js

Servidor simples, com python e node.js. HTTP simple server

Índice de conteúdo:

  1. Algumas vantagens de usar um Servidor Web local
  2. Preparação do ambiente de trabalho
  3. Usando Python
  4. Usando PHP
  5. Usando Node.js

Todas as vezes que introduzimos na barra de endereço do nosso navegador um endereço tal como https://google.com, https://wikipedia.org estamos fazendo uma solicitação para um computador na Internet que nos envia a página Web solicitada como resposta. Esse computador que nos envia a resposta é um Servidor Web. Este servidor recebe uma solicitação HTTP do lado cliente (nosso navegador) e envia uma resposta HTTP (Hypertext Transfer Protocol) como a página HTML (HyperText Markup Language) que nós lemos no nosso monitor.

O objetivo deste artigo é explicar de forma clara para uma pessoa que está iniciando em como conseguir criar um Servidor Web Simples para uso em casa e fazer solicitação de páginas HTML usando o protocolo HTTP no computador local.

Vamos testar usando Servidor web integrado de Python, PHP e Node.js

Quando iniciamos os primeiros passos em Desenvolvimento Web, normalmente usamos uma pasta local onde criamos o ficheiro HTML (index.html) e após algumas linhas de código se quisermos renderizar a página e ver como vai o nosso trabalho utilizamos um navegador da nossa preferência que renderiza a página Web dando clique duplo no nosso ficheiro index.html ou usando o menu de atalho.

Na barra de endereço vai aparecer um endereço mais ou menos assim:

file:///home/nome_utilizador/Documentos/index.html

No exemplo acima estamos usando o protocolo de ficheiro (file protocol)

Se estivermos usando um Servidor Web local ou seja um servidor web no nosso computador, teremos uma URL ou endereço com o seguinte formato:

  • http://127.0.0.1
  • http://localhost
  • http://0.0.0.0:8000/

Este formato usa o HTTP (Hypertext Transfer Protocol) e é próximo do que temos se estivermos a utilizar um servidor externo o que normalmente se usa quando terminamos o nosso site no nosso computador e fazemos o upload dos ficheiros e passamos para a fase normalmente chamada de produção ou o que aparece quando navegamos na Internet.

Algumas vantagens de usar um Servidor Web local:

  • Melhor organização das pastas e ficheiros do site muito próximo do que será quando o site estiver no ar num servidor externo.
  • A possibilidade de usar linguagens de programação que só podem ser utilizadas do lado do servidor como por exemplo o PHP.
  • Importar scripts tal como javaScript
  • Não temos a necessidade de estar conectados à Internet para a usarmos.
  • Todo o aprendizado que daí resulta pois por cada problema que vai surgindo enquanto estivermos em modo de desenvolvimento é algo que temos que resolver e para isso vamos procurar solução na Internet e aprender muita coisa tal como terminologias e soluções que poderão ser de muita utilidade quando estivermos em modo de produção ou quando o nosso site estiver num servidor externo.

Preparação do ambiente de trabalho

Para efeito de organização e teste vamos criar uma pasta que poderá ter o nome de WebDev ou um outro nome qualquer.

$ mkdir WebDev

Entramos na pasta WebDev

$ cd WebDev

Criamos duas páginas HTML, uma com extensão .html e outro com .php index.html e index.php usando um editor da nossa preferência.

Lista de alguns editores. Podem ser instalados diretamente do Software Center:

  • Gedit
  • Geany
  • Atom

Eu usei o editor vim:

$ vim index.html

Estas serão nossas páginas de teste:

index.html

Página index.html

index.php

Página html index.php para efeito de teste

1 - Usando Python

Verificamos qual versão de Python se encontra instalado:

$ python -V

No meu caso retornou o seguinte:

Python 3.11.2

Conhecendo a nossa versão de python podemos também saber que comando usar para iniciar o nosso http server.

Se usarmos este comando em Python versão 3 ou superior vai gerar uma mensagem de erro. Este comando só funciona com Python versão inferior a 3.

$ python -m SimpleHTTPServer 8000

/usr/bin/python: No module named SimpleHTTPServer

Para versão 3 ou superior do python usa-se o seguinte comando

$ python -m http.server

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

Usando o comando acima com o modificador “-m” serão servidos ficheiros que se encontram no actual directório.

A nossa página index.html:

Página html, index.html, python server

Se se quiser que estejam disponíveis ficheiros num outro directório usaremos o comando com a opção -d ou –directory neste caso vamos usar o diretório /tmp como exemplo

$ python -m http.server --directory /tmp

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

A porta 8000 é a porta usada por predefinição pelo python http.server mas pode-se usar uma outra porta caso seja essa a nossa vontade ou caso estejamos já a usar a porta 8000.

Neste exemplo vamos usar a porta 9000:

$ python -m http.server 9000

Se quisermos que o Servidor vincule somente o localhost então usaremos o comando com a opção --bind e com o endereço do localhost que é 127.0.0.1:

$ python -m http.server --bind 127.0.0.1

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

2 - Usando PHP

Como no caso anterior, as solicitações são feitas a partir do directório onde foi iniciado o server PHP a não ser que a opção -t seja indicada para apontar para um directório raiz diferente do directório onde nos encontramos.

Entramos no diretório DesWeb e iniciamos o nosso server.

Dentro desta pasta já temos a nossas páginas index.html e index.php

$ php -S localhost:8000

php testing server started

Copiamos o endereço apresentado "http://localhost:8000" e colamos na barra de endereço do nosso navegador.

Apresentação da nossa página index.php

Como se pode ver, havendo duas páginas de nome index sendo uma index.html e outra index.php o server PHP apresenta o index.php

Apresentação da página index.php no navegador usando server php

3 - Usando Node.js

Verificamos se node.js se econtra instalado com o seguinte comando:

$ node -v

v18.15.0

Em caso de não estar instalado, instala-se com o seguinte comando:

$ sudo dnf install nodejs

Usaremos npx que é um executor de pacotes e vem integrado no gerenciador de pacotes npm (node package manager), npm é instalado junto com o Node.js

Se quisermos verificar a versão do npm

$ npm -v

O uso do npx é um processo simples e direto não necessitando da instalação global do pacote http-server que vamos testar. O seguinte comando exibe o pacote e a versão do mesmo. Para proceder à instalação é só dizer sim digitando "y" e o pacote é instalado e o http-server corre no diretório onde foi executado o comando.

$ npx http-server

executando npx http-server

Visualização da página:

Visualização da página usando o http-server

NPM, pacote simple-server.

Entramos na pasta onde se encontra o nosso projeto e fazemos a instalação do simple-server. Neste post vamos fazer uma instalação local mas se quiser instalar global: $ npm install --global simple-server

$ npm install simple-server

npm instalando o simple-server

Neste momento se tentarmos iniciar o server com o comando $ npm run simple-server vai dar erro:

Mensagem de erro por falta de inclusão de script no package.json

Conteúdo da pasta onde se encontra a nossa página index.html e index.php após a instalação do simple-server. A pasta node-modules, os ficheiros package.json e package-lock.json foram gerados com a instalação do simple-server

Conteúdo da pasta onde se encontra a nossa página index.html e index.php após a instalação do simple-server

Ficheiro package.json logo após a instalação. Este ficheiro contém informações sobre os pacotes instalados, neste caso é um pacote: simple-server

O JSON é um fomato que armazena informações de forma estruturada e apresenta como sintax o nome entre aspas seguido de dois pontos seguido do valor que neste caso é um string e também por isso se encontra entre aspas. Neste ficheiro temos o nome do pacote "simple-server" seguido de ":" seguido do valor que neste caso é a versão do simple-server

Ficheiro package.json na forma original após a instalação

Vamos armazenar mais uma informação para que possamos iniciar o simple-server. Isto é necessário porque fizemos uma intalação local envez de global (um utilizador sem privilégios especiais pode fazer esta instalação quando não global).

Editamos o ficheiro package.json onde introduzimos mais um objeto como está na imagem logo a seguir. O nome que escolhi é "server" mas pode ser dado o nome que acharmos melhor desde que o valor seja "simple-server"

Ficheiro package.json logo após ter sido editado.

Ficheiro package.json após ter sido editado e inserido o script

$ npm run server

output do comando npm run server

O endereço local é copiado no clipboard, portanto é só abrir o navegador e colar o endereço.

simple-server rodando com visualização em firefox.

Índice de conteúdo:

  1. Algumas vantagens de usar um Servidor Web local
  2. Usando Python
  3. Usando PHP
  4. Usando Node.js

Sem comentários:

Enviar um comentário