English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In Erlang, la libreria inets può essere utilizzata per costruire server web in Erlang. Vediamo alcune funzioni utilizzate per la programmazione web in Erlang. È possibile implementare un server HTTP (noto anche come httpd) per gestire le richieste HTTP.
Il server ha implementato molte funzionalità, ad esempio -
Strato di sicurezza per socket (SSL)
Interfaccia di script Erlang (ESI)
Interfaccia di gateway generico (CGI)
Autenticazione utente (utilizzando Mnesia, Dets o database di testo puro)
Formato del file di log generico (supporta o non supporta disk_log(3))
Alias URL
Mappatura delle azioni
Elenco delle directory
Il primo lavoro è avviare la libreria Web tramite comando.
inets:start()
Il passo successivo è implementare la funzione start della libreria inets per realizzare un server web.
Ecco un esempio di creazione di un processo server web in Erlang.
-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]).
Sull'above programma, è necessario prestare attenzione ai seguenti punti.
il numero di porta deve essere unico e non può essere utilizzato da altri programmi. Il servizio httpd verrà avviato su questa porta.
server_rootedocument_rootè un parametro obbligatorio.
Ecco l'output del programma menzionato.
{ok,<0.42.0>}
Per implementare un server web Hello world in Erlang, seguire i seguenti passaggi-
Passo 1 −Implementare il seguente codice−
-module(helloworld). -export([start/0,service/3]). start() -> inets:start(httpd, [{port, 8081}, {server_name,"helloworld"}, {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−如下运行代码。编译上面的文件,然后在erl中运行以下命令。
c(helloworld).
您将获得以下输出。
{ok,helloworld}
下一个命令是-
inets:start().
您将获得以下输出。
ok
下一个命令是-
helloworld:start().
您将获得以下输出。
{ok,<0.50.0>}
Step 3−您现在可以访问url- http://localhost:8081/erl/hello_world:service。