Erlang - Web Programlama

Erlang'da inets libraryErlang'da web sunucuları oluşturmak için kullanılabilir. Web programlama için Erlang'da bulunan bazı işlevlere bakalım. HTTP isteklerini işlemek için httpd olarak da anılan HTTP sunucusu uygulanabilir.

Sunucu, aşağıdakiler gibi çok sayıda özelliği uygular:

  • Güvenli Yuva Katmanı (SSL)
  • Erlang Komut Dosyası Arayüzü (ESI)
  • Ortak Ağ Geçidi Arayüzü (CGI)
  • Kullanıcı Kimlik Doğrulaması (Mnesia, Dets veya düz metin veritabanı kullanarak)
  • Ortak Günlük Dosyası Biçimi (disk_log (3) desteği olan veya olmayan)
  • URL Aliasing
  • Eylem Eşlemeleri
  • Dizin Listeleri

İlk iş, komut aracılığıyla web kitaplığını başlatmaktır.

inets:start()

Bir sonraki adım, web sunucusunun uygulanabilmesi için inets kitaplığının başlangıç ​​işlevini uygulamaktır.

Aşağıda, Erlang'da bir web sunucusu işlemi oluşturmanın bir örneği verilmiştir.

Örneğin

-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]).

Yukarıdaki programla ilgili aşağıdaki noktalara dikkat edilmelidir.

  • Bağlantı noktası numarasının benzersiz olması ve başka herhangi bir program tarafından kullanılmaması gerekir. httpd service bu bağlantı noktası no.

  • server_root ve document_root zorunlu parametrelerdir.

Çıktı

Yukarıdaki programın çıktısı aşağıdadır.

{ok,<0.42.0>}

Uygulamak için Hello world web server Erlang'da aşağıdaki adımları uygulayın -

Step 1 - Aşağıdaki kodu uygulayın -

-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- Kodu aşağıdaki gibi çalıştırın. Yukarıdaki dosyayı derleyin ve ardından aşağıdaki komutlarıerl.

c(helloworld).

Aşağıdaki çıktıyı alacaksınız.

{ok,helloworld}

Sonraki komut -

inets:start().

Aşağıdaki çıktıyı alacaksınız.

ok

Sonraki komut -

helloworld:start().

Aşağıdaki çıktıyı alacaksınız.

{ok,<0.50.0>}

Step 3 - Artık url'ye erişebilirsiniz - http://localhost:8081/erl/hello_world:service.