Yaws embedded

64 views
Skip to first unread message

Alexander Popov

unread,
Apr 20, 2011, 12:47:31 PM4/20/11
to erlang-...@googlegroups.com
Добрый вечер.
Туплю тут с Yaws, пытаюсь запустить его как часть другого приложения.

yaws:start_embedded("/tmp") возвращает ок, но порт не открывает.
yaws:start_embedded("/tmp", []) аналогично.

Но если передать в списке хоть один параметр, то стартует.

Так должно быть или это глюк? Понятно, что это можно обойти, но хотелось бы понять в чем дело.


--
С уважением,
Попов Александр

Igor Karymov

unread,
Apr 20, 2011, 10:20:20 PM4/20/11
to Erlang в России
Привет. Второй параметр это SL, т.е server list, если он пустой, то
yaws запускается,
но серверов не создаёт.

Я делал так:

в конфиге:

{yaws,
[
{embedded,
true}
]}

в коде:

-include_lib("yaws/include/yaws.hrl").

init_http_server() -
>
?DBG("Starting http server...",
[]),

GC = yaws_config:make_default_gconf(false,
"web_front_end_app"),

GC1 = GC#gconf{logdir =
web_front_end_config:http_server_log_dir()},

SC
=
#sconf{port =
web_front_end_config:http_server_port(),
servername =
web_front_end_config:http_server_name(),
listen =
web_front_end_config:http_server_listen_address(),
docroot =
web_front_end_config:http_server_doc_root(),
appmods = [{"/",
web_front_end_dispatcher}]
},

ok = yaws_api:setconf(GC1,
[[SC]]),

ok =
yaws_api:set_access_log(web_front_end_config:access_log()),

?DBG("Starting http server...DONE",
[]),
ok.

Igor Karymov

unread,
Apr 20, 2011, 10:26:04 PM4/20/11
to Erlang в России
блин не подумал про форматирование. Лучше так:
http://pastebin.com/h21kjGcM

Alexander Popov

unread,
Apr 21, 2011, 7:16:30 PM4/21/11
to erlang-...@googlegroups.com
Спасибо за ответ.
Я вот чего не понимаю: нафига нужен аргумент docroot в функциях yaws:start_embedded/*?
По идее docroot задает параметр одного сервера.
Собственно, зачем он вынесен как отдельный аргумент, а не часть SL?

21 апреля 2011 г. 2:26 пользователь Igor Karymov <ingh...@gmail.com> написал:
блин не подумал про форматирование. Лучше так:
http://pastebin.com/h21kjGcM

--
Страница рассылки: http://groups.google.com/group/erlang-russian
 Jabber-конференция: erl...@conference.jabber.ru
 Новости: http://erlanger.ru
Написать письмо: erlang-...@googlegroups.com
Отписаться: erlang-russia...@googlegroups.com

Igor Karymov

unread,
Apr 23, 2011, 12:46:16 AM4/23/11
to Erlang в России
Да, действительно немного странно, судя по коду, он как раз doc_root
передаёт в #sconf. Причём, похоже на то, что больше чем один сервер не
получится запустить через это api.
Мне api с #sconf{} #gconf в показалось поудачнее,
хотя оно и тянет зависимости на хэдеры.

On 22 апр, 06:16, Alexander Popov <alex...@gmail.com> wrote:
> Спасибо за ответ.
> Я вот чего не понимаю: нафига нужен аргумент docroot в функциях
> yaws:start_embedded/*?
> По идее docroot задает параметр одного сервера.
> Собственно, зачем он вынесен как отдельный аргумент, а не часть SL?
>

> 21 апреля 2011 г. 2:26 пользователь Igor Karymov <ingha...@gmail.com>написал:

Alexander Popov

unread,
May 1, 2011, 2:50:17 PM5/1/11
to erlang-...@googlegroups.com
Покопался, дело в этом условии https://github.com/klacke/yaws/blob/master/src/yaws_api.erl#L2036
когда SL пуст, yaws тупо забивает на Docroot.

Насчет запуска множества серверов похоже, что если ему передать информацию о нескольких серверах,
то он им всем пропишет один Docroot. Как раз из-за того, что он Docroot передает в #sconf.

Логику этого всего я не понял, воспользуюсь действительно yaws_api:setconf.



23 апреля 2011 г. 4:46 пользователь Igor Karymov <ingh...@gmail.com> написал:
Reply all
Reply to author
Forward
0 new messages