O Protheus como servidor HTTP – Parte 01

Introdução

Como já foi mencionado em posts anteriores, dentre as capacidades do Protheus Server é a possibilidade de configurá-lo como um servidor WEB / HTTP. Como as próximas funcionalidades do CRUD vão entrar no mundo WEB, vamos ver um be-a-bá do que é um servidor WEB HTTP, e como tornar o Protheus inicialmente um servidor de páginas estáticas, e depois como transformá-lo em um servidor de páginas dinâmicas usando AdvPL ASP.

O que e um servidor WEB?

Cada site da Internet está hospedado em um ou mais servidores, espalhados pelo mundo. Quando executamos um Browser — programa feito para acessar os sites — como por exemplo o Internet Explorer, Firefox, Microsoft Edge, Google Chrome, Mozilla e afins, nós acessamos os sites que nós conhecemos através de um endereço — chamado URL — composto por letras, números e pontos. Por exemplo, http://www.google.com.br

Sem entrar profundamente na resolução de endereços, na prática o programa usado como Internet Browser descobre qual é o IP do servidor onde o site está hospedado, e abre uma conexão TCP com o servidor ou máquina onde está hospedado o site, e através do protocolo HTTP usado sobre a conexão TCP, o Browser pede ao servidor a página inicial do site.

O servidor, por sua vez, identifica a requisição de página recebida, realiza algumas verificações sobre as informações que implicitamente são enviadas pelo Browser, e normalmente retorna ao Browser um conteúdo HTML — chamado de “página”. Esta página contém um texto demarcado por marcadores, que informam ao Browse como ele deve mostrar na tela as informações da página. Uma página HTML de um site pode exibir textos, imagens, vídeos, e inclusive outros conteúdos, desde que o Browser conheça ou saiba como interpretar este conteúdo.

Como funciona por dentro

O computador usado para disponibilizar o site na internet, usa um programa do tipo “Servidor HTTP” — por exemplo o Microsoft IIS (Windows), Apache (Linux), entre outros. Normalmente, independente do programa utilizado, neste computador existe uma pasta no disco, conhecida como “pasta raiz de publicação WEB”, onde você coloca os arquivos HTML do seu site, e dentro dessa pasta você também pode criar outras pastas, para colocar mais arquivos que podem ser acessados pelo Browser de Internet.

Logo, a função básica de um Servidor HTTP é exportar para a internet o diretório (e sub-diretórios ou pastas) criados no servidor. Acho que isso vai ficar mais claro quando a gente configurar o Protheus como servidor HTTP, e fazer um teste no seu computador mesmo.

Configuração de HTTP do Protheus

Como o objetivo inicial é mostrar como a mágica acontece por dentro, vamos começar do exemplo mais simples de configuração, usando o Protheus como um servidor HTTP de conteúdo estático — isto é, ele vai permitir acessar por um Web Browser os arquivos e um diretório do seu computador, que você vai definir. Para isso, vamos acrescentar no arquivo de configuração do Protheus (appserver.ini) as seguintes linhas:

[http]
enable=1
port=80
path=c:\Protheus12LG\Http

A pasta c:\Protheus12\Http neste momento está vazia. Agora, usando o NOTEPAD ou outro editor de textos, crie dentro dessa pasta um arquivo chamado “index.html”, e dentro dele coloque o seguinte conteúdo:

<html>
<body>
Olá Mundo HTTP do Protheus
</body>
</html>

Após salvar o arquivo com o nome indicado, se você clicar duas vezes nele — usando o Windows Explorer por exemplo — seu computador deve abrir o Browser default de Internet, e mostrar o seguinte conteúdo na tela:

Ola Mundo HTTP 1

Porém, repare uma coisa: Na barra de endereços do Browser, é mostrado uma URL que aponta para um caminho LOCAL do seu equipamento. Logo, o Browser não fez conexão TCP nenhuma com o Protheus, ele apenas abriu o arquivo do disco para você ver o conteúdo HTML dele formatado pelo Browser.

Agora, depois de acrescentar as informações no aquivo de configurações do Protheus Server, e subir ele como serviço, desde que não tenha nenhum outro aplicativo usando a porta 80 do seu equipamento, no log de console do Protheus Server você deve ver as seguintes mensagens:

Http server is ready.
Root path is c:\protheus12lg\http\
Listening port 80 (default)

Agora, volte no Browser do seu equipamento, e digite a seguinte URL;  http://localhost/index.html , e veja o que acontece. Se tudo deu certo, você deve ver exatamente o que foi mostrado no Browser anterior, porém agora acessando a sua própria máquina, onde o Protheus Server está fornecendo a interface de conexão para o Browser, e retornando a página solicitada.

Ola Mundo HTTP 2

Experimente agora pegar um arquivo de imagem da sua máquina, pode ser com extensão jpeg, jpg, png, bmp, tanto faz. Copie o arquivo e cole ele dentro da pasta de publicação do seu ambiente. Não use um arquivo que contenha nome composto separado por espaço em branco — ainda não — por exemplo “minhafoto.jpg”.

Agora, vá no Browser, e troque a URL o texto “index.html” para “mihafoto.jpg”. Novamente, se tudo der certo, você deve ver a sua foto no Browser.

Se você errar alguma letra do nome da foto ou do arquivo de indice (html), o Browse deve mostrar no Browse uma tela de erro, onde em algum lugar ele deve mencionar o código 404.

Error 404

Este erro foi retornado pelo Protheus, indicando que o arquivo que eu pedi — chamado naoexiste.html não foi encontrado na pasta de publicação. O erro de arquivo ou página não encontrado do protocolo HTTP é 404.

Acessando esta página de outra máquina

Como até aqui o teste de publicação está sendo feito com o Protheus Server na sua máquina, e o Browser também sendo aberto na sua máquina, a URL “http://localhost/index.html&#8221; funciona. Isso por que “localhost” indica para o Browser que ele deve procurar o servidor de Internet — que no nosso caso é o Protheus Server — na máquina local, isto é, na máquina que o próprio Browser está sendo executado.

Aqui em casa eu acesso a internet usando um Modem Wi-Fi. Quando meu notebook é iniciado, ele conecta no Wi-Fi e recebe um endereço IP, para uma rede interna através  da qual o acesso a Internet é compartilhado entre outros dispositivos, como o notebook da minha esposa, e os nossos aparelhos celulares. Ao usar o comando IPCONFIG do Windows, eu consigo descobrir qual é o IP do meu Notebook dentro da minha rede “interna” — dentro de casa.

Wireless LAN adapter Wi-Fi:

Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . . : 2804:14d:32a0:2a01:3122:114b:ddb7:e5db
Temporary IPv6 Address. . . . . . : 2804:14d:32a0:2a01:d025:52bf:85ca:4a3b
Temporary IPv6 Address. . . . . . : 2804:14d:32a0:2a01:d404:32c:510d:1208
Temporary IPv6 Address. . . . . . : 2804:14d:32a0:2a01:fd1a:5e2:1a67:3f84
Link-local IPv6 Address . . . . . : fe80::3122:114b:ddb7:e5db%5
IPv4 Address. . . . . . . . . . . : 192.168.0.12
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : fe80::2e95:69ff:fe69:218b%5
192.168.0.1

O que interessa para mim é o IPV4 Address, que agora e dentro da minha rede doméstica é “192.168.0.12”. Agora eu vou fazer uma brincadeira, com o meu celular conectado no mesmo Wi-Fi, vou abrir o Chrome dentro do celular, e na barra de endereços, eu vou digitar a URL usada no exemplo acima, porém trocando a palavra “localhost” pelo IP d meu notebook. O endereço fica assim:

http://192.168.0.12/index.html

E, se novamente tudo der certo, eu vejo a mesma mensagem na tela do computador, e no celular !!!

IMG_3628

A imagem acima é um “Print” da tela do meu aparelho celular, acessando a página de exemplo que eu hospedei no Protheus Server do meu notebook. 😀

Conclusão

Esse foi o primeiro post dessa sequência, espero que tenha sido suficiente para pelo menos ter uma “noção básica” de como um servidor de internet funciona. Existem muitos outros controles e configurações no Protheus, desde a parte do HTTP apenas como servidor de arquivos, até a execução de páginas dinâmicas (AdvPL ASP). Não se preocupe, a gente chega juntos lá.

Novamente desejo a todos TERABYTES DE SUCESSO 😀

Referências

 

2 comentários sobre “O Protheus como servidor HTTP – Parte 01

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s