Erlang - Programmazione Web

A Erlang, il inets libraryè disponibile per costruire server web in Erlang. Diamo un'occhiata ad alcune delle funzioni disponibili in Erlang per la programmazione web. Si può implementare il server HTTP, noto anche come httpd per gestire le richieste HTTP.

Il server implementa numerose funzionalità, come:

  • Secure Sockets Layer (SSL)
  • Erlang Scripting Interface (ESI)
  • Common Gateway Interface (CGI)
  • Autenticazione utente (utilizzando Mnesia, Dets o database di testo normale)
  • Formato Common Logfile (con o senza supporto disk_log (3))
  • Aliasing URL
  • Mappature delle azioni
  • Elenchi di directory

Il primo lavoro è avviare la libreria web tramite il comando.

inets:start()

Il passo successivo è implementare la funzione di avvio della libreria inets in modo che il server web possa essere implementato.

Di seguito è riportato un esempio di creazione di un processo di server Web in Erlang.

Per esempio

-module(helloworld). 
-export([start/0]). 

start() ->
   inets:start(), 
   Pid = inets:start(httpd, [{port, 8081}, {server_name,"httpd_test"}, 
   {server_root,"D://tmp"},{document_root,"D://tmp/htdocs"},
   {bind_address, "localhost"}]), io:fwrite("~p",[Pid]).

I seguenti punti devono essere annotati riguardo al programma di cui sopra.

  • Il numero di porta deve essere univoco e non utilizzato da nessun altro programma. Ilhttpd service verrebbe avviato su questa porta n.

  • Il server_root e document_root sono parametri obbligatori.

Produzione

Di seguito è riportato l'output del programma precedente.

{ok,<0.42.0>}

Per implementare un file Hello world web server a Erlang, eseguire i seguenti passaggi:

Step 1 - Implementa il seguente codice -

-module(helloworld). 
-export([start/0,service/3]). 

start() ->
   inets:start(httpd, [ 
      {modules, [ 
         mod_alias, 
         mod_auth, 
         mod_esi, 
         mod_actions, 
         mod_cgi, 
         mod_dir,
         mod_get, 
         mod_head, 
         mod_log, 
         mod_disk_log 
      ]}, 
      
      {port,8081}, 
      {server_name,"helloworld"}, 
      {server_root,"D://tmp"}, 
      {document_root,"D://tmp/htdocs"}, 
      {erl_script_alias, {"/erl", [helloworld]}}, 
      {error_log, "error.log"}, 
      {security_log, "security.log"}, 
      {transfer_log, "transfer.log"}, 
      
      {mime_types,[ 
         {"html","text/html"}, {"css","text/css"}, {"js","application/x-javascript"} ]} 
   ]). 
         
service(SessionID, _Env, _Input) -> mod_esi:deliver(SessionID, [ 
   "Content-Type: text/html\r\n\r\n", "<html><body>Hello, World!</body></html>" ]).

Step 2- Esegui il codice come segue. Compila il file sopra e quindi esegui i seguenti comandi inerl.

c(helloworld).

Otterrai il seguente output.

{ok,helloworld}

Il prossimo comando è:

inets:start().

Otterrai il seguente output.

ok

Il prossimo comando è:

helloworld:start().

Otterrai il seguente output.

{ok,<0.50.0>}

Step 3 - Ora puoi accedere all'URL - http://localhost:8081/erl/hello_world:service.