English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В Erlang библиотека inets может использоваться для создания веб-серверов в Erlang. Давайте посмотрим на некоторые функции, используемые для веб-программирования в Erlang. Можно реализовать HTTP-сервер (также известный как httpd), который обрабатывает HTTP-запросы.
Сервер реализует множество функций, например,-
Слой безопасности sockets (SSL)
Интерфейс скриптов Erlang (ESI)
Общий интерфейс сетевого шлюза (CGI)
Аутентификация пользователей (использование Mnesia, Dets или текстовой базы данных)
Общий формат логовых файлов (поддержка или不支持 disk_log(3))
Псевдонимы URL
Карта действий
Список каталогов
Первая задача - запустить веб-библиотеку с помощью команды.
inets:start()
Следующим шагом является реализация функции start библиотеки inets, чтобы реализовать веб-сервер.
以下是在Erlang中创建Web服务器进程的示例。
-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]).
关于上述程序,需要注意以下几点。
端口号必须是唯一的,不能被任何其他程序使用。将在这个端口号上启动 httpd 服务。
server_root和document_root是强制性的参数。
以下是上述程序的输出。
{ok,<0.42.0>}
要在 Erlang 实现 Hello world web 服务器,请执行以下步骤-
Step 1 −实施以下代码−
-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, _, _Input) -> mod_esi:deliver(SessionID, [ "Content-Type: text/html\r\n\r\n", "<html><body>Hello, World!</body></html>"].
Шаг 2−Запустите код следующим образом. Компилируйте файлы выше, затем вerlВыполните следующие команды.
c(helloworld).
Вы получите следующий вывод.
{ok,helloworld}
Следующий командный рядок -
inets:start().
Вы получите следующий вывод.
ok
Следующий командный рядок -
helloworld:start().
Вы получите следующий вывод.
{ok,<0.50.0>}
Шаг 3−Теперь вы можете访问url- http://localhost:8081/erl/hello_world:service.