Блин, я чокнусь с этим ЕДжаббердом.
Уже несколько часов конфигурирую и хоть бы хны.
Пытаюсь поднять eJabberd и зарегить акк (на своём же компе) с Пси.
PSI коннектится к localhost, но не хочет к mainhost.
Проблема крайне схожа с: http://www.gentoo.ru/node/7096
только не понятно в чём именно заключалось у него решение. Я всё тоже самое проделал и в моём случае ничего хорошего не произошло.
mainhost ~ # /etc/init.d/ejabberd start
* Starting eJabberd ... [ !! ]
mainhost ~ # ejabberdctl jabberd@mainhost status
RPC failed on the node jabberd@mainhost: nodedown
mainhost ~ # hostname -s
mainhost
mainhost ~ # ping mainhost
PING mainhost (192.168.1.2) 56(84) bytes of data.
64 bytes from mainhost (192.168.1.2): icmp_seq=1 ttl=64 time=0.034 ms
64 bytes from mainhost (192.168.1.2): icmp_seq=2 ttl=64 time=0.025 ms
64 bytes from mainhost (192.168.1.2): icmp_seq=3 ttl=64 time=0.027 ms
--- mainhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.025/0.028/0.034/0.007 ms
mainhost ~ # cat /etc/jabber/ejabberd.cfg | grep hosts
{hosts, ["mainhost"]}.
{hosts, ["icq.mainhost", "sms.mainhost"],
mainhost ~ # ejabberdctl ejabberd@mainhost status
Node ejabberd@mainhost is started. Status: started
ejabberd is not running
mainhost ~ #
Если в /usr/bin/ejabberd, /etc/bin/ejabberdctl меняю -sname на -name получаю:
mainhost ~ # /etc/init.d/ejabberd reload
* Reloading eJabberd ...
{error_logger,{{2007,11,8},{22,46,13}},"Can't set long node name!\nPlease check your configuration\n",[]}
....Crash dump was written to: erl_crash.dump
Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}) [ !! ]
mainhost ~ #
Это какое длинное имя?? mainhost чтоль?? И намного оно длиннее localhost'а с которым вроде как работает?
Спул чистил.
В чём проблема-то не могу никак понять..??
На всякий
На всякий случай вот мой конфиг:
mainhost ~ # cat /etc/jabber/ejabberd.cfg | grep -v ^[\ ]*%{acl, local, {user_regexp, ""}}.
{access, pubsub_createnode, [{allow, all}]}.
{access, configure, [{allow, admin}]}.
{access, register, [{allow, all}]}.
{welcome_message,
{"Welcome!",
"Welcome to Jabber Service. "
"For information about Jabber visit http://jabber.org"}}.
{access, announce, [{allow, admin}]}.
{access, c2s, [{deny, blocked},
{allow, all}]}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{access, c2s_shaper, [{none, admin},
{normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{access, local, [{allow, local}]}.
{auth_method, internal}.
{hosts, ["mainhost"]}.
{max_user_sessions, 10}.
{language, "en"}.
{listen,
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper},
{max_stanza_size, 65536},
starttls, {certfile, "./ssl.pem"}]},
{5223, ejabberd_c2s, [{access, c2s},
{max_stanza_size, 65536},
tls, {certfile, "./ssl.pem"}]},
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper},
{max_stanza_size, 131072}
]},
{5280, ejabberd_http, [http_poll, web_admin]},
{8888, ejabberd_service, [{access, all},
{hosts, ["icq.mainhost", "sms.mainhost"],
[{password, "secret"}]}]}
]}.
{s2s_use_starttls, true}.
{s2s_certfile, "./ssl.pem"}.
{outgoing_s2s_port, 5269}.
{modules,
[
{mod_register, [{access, register}]},
{mod_roster, []},
{mod_privacy, []},
{mod_adhoc, []},
{mod_configure, []}, % Depends on mod_adhoc
{mod_configure2, []},
{mod_disco, []},
{mod_stats, []},
{mod_vcard, []},
{mod_offline, []},
{mod_announce, [{access, announce}]}, % Depends on mod_adhoc
{mod_echo, [{host, "echo.mainhost"}]},
{mod_private, []},
{mod_irc, []},
{mod_muc, [{access, muc},
{access_create, muc},
{access_admin, muc_admin}]},
{mod_pubsub, [{access_createnode, pubsub_createnode}]},
{mod_time, []},
{mod_last, []},
{mod_version, []}
]}.
Для начала
Для начала конфиг берется стандартный . там поправляется несколько строк - админ,
потом host меняем на hosts и добавляем после "localhost" "Имя_хоста_жаббера" естественно в DNS он должен отображаться...
и все сразу запустится...
А что ещё в моём
А что ещё в моём конфиге не хватает??
Про hosts - ну так и изначально там так и написано hosts, или ты про что-то другое..
>>добавляем после "localhost"
а заменить этот локалхост нельзя на хост джаббера?
DNS отдельный я не поднимал, прописал в /etc/hosts:
192.168.1.2 mainhost
(т.е. это мой же комп). Пинги проходят. Даже пинги с другого компа до mainhost моего проходят (я там также подправил /etc/hosts), а ПСИ пишет, что host unknown..
пути к
пути к сертификатам правильные?
{listen, [{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}, {max_stanza_size, 65536}, starttls, {certfile, "./ssl.pem"}]}, {5223, ejabberd_c2s, [{access, c2s}, {max_stanza_size, 65536}, tls, {certfile, "./ssl.pem"}]},вот тут настроены две сторонних службы - как они обе могут слушать на одном поте?
{8888, ejabberd_service, [{access, all}, {hosts, ["icq.mainhost", "sms.mainhost"], [{password, "secret"}]}]}типа того
{listen, [{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}, {max_stanza_size, 65536}, starttls, zlib, {certfile, "/etc/jabber/ssl.pem"}]}, {5223, ejabberd_c2s, [{access, c2s}, {max_stanza_size, 65536}, tls, {certfile, "/etc/jabber/ssl.pem"}]}, {5269, ejabberd_s2s_in, [{shaper, s2s_shaper}, {max_stanza_size, 131072} ]}, {5280, ejabberd_http, [http_poll, http_bind]}, {5281, ejabberd_http, [web_admin, ssl, {certfile, "/etc/jabber/ssl.pem"} ]}, {5347, ejabberd_service, [{host, "icq.evadim.ru", [{password, "secret"}]}]}, {5348, ejabberd_service, [{host, "jmc.evadim.ru", [{password, "secret"}]}]}, {5349, ejabberd_service, [{host, "rss.evadim.ru", [{password, "secret"}]}]} ]}.>> вот тут
>> вот тут настроены две сторонних службы - как они обе могут слушать на одном поте?
прописал полные пути (но они и лежали в текущей директории)
>> вот тут настроены две сторонних службы - как они обе могут слушать на одном поте?
это дефолтовый конфиг. Подправлено там только подстрока "local" на "main".
Я эту команду (порт) закомментил от греха по дальше :)
Но всё равно ведь не запускается, всё тоже самое...
Руки как бы, в
Руки, как бы, в зеркале смотрю - прямые. Сквид, самба - все путем.
С ежом,одна-ко, не срослось. Что интересно, перенес с одной тачки рабочего ежа (собственной настройки) на другую - жаббера в конторе резко не стало.
Трехдневное пинание конфигов и раскуривание манов не помогло (жаббера вернул на место минут через 5, ибо уволят).
Так и не понял в каком месте при копировании кроссплатформенного приложения с кормпа на комп напоролся на грабли. Поставил opеnfire. Открыт, гпл, бесплатен, есть в портах. Продают платный плагин если кому надо. Интерпрайс называется. Ставил и под вендой, и под линуксой - работает (имхо).
Кто-нибудь
Кто-нибудь может выложить работающий конфиг сюда?
Ещё одна попытка настройки с нуля.. в общем - заколебало оно меня :)
нечего там
нечего там выклыдывать - там ошибиться негде
Ну уж я-то найду
Ну уж я-то найду где ошибиться :)
Минимальный, практически дефолтовый конфиг:
mainhost ~ # cat /etc/jabber/ejabberd.cfg | grep -v ^[\ ]*% {acl, admin, {user, "admin"}}. {acl, local, {user_regexp, ""}}. {access, pubsub_createnode, [{allow, all}]}. {access, configure, [{allow, admin}]}. {access, register, [{allow, all}]}. {welcome_message, {"Welcome!", "Welcome to Jabber Service. " "For information about Jabber visit http://jabber.org"}}. {access, announce, [{allow, admin}]}. {access, c2s, [{deny, blocked}, {allow, all}]}. {shaper, normal, {maxrate, 1000}}. {shaper, fast, {maxrate, 50000}}. {access, c2s_shaper, [{none, admin}, {normal, all}]}. {access, s2s_shaper, [{fast, all}]}. {access, muc_admin, [{allow, admin}]}. {access, muc, [{allow, all}]}. {access, local, [{allow, local}]}. {auth_method, internal}. {hosts, ["mainhost"]}. {max_user_sessions, 10}. {language, "en"}. {listen, [ {5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}, {max_stanza_size, 65536}, starttls, {certfile, "/etc/jabber/ssl.pem"}]}, {5223, ejabberd_c2s, [{access, c2s}, {max_stanza_size, 65536}, tls, {certfile, "/etc/jabber/ssl.pem"}]}, {5269, ejabberd_s2s_in, [{shaper, s2s_shaper}, {max_stanza_size, 131072} ]}, {5280, ejabberd_http, [http_poll, web_admin]} ]}. {s2s_use_starttls, true}. {s2s_certfile, "/etc/jabber/ssl.pem"}. {outgoing_s2s_port, 5269}. {modules, [ {mod_register, [{access, register}]}, {mod_roster, []}, {mod_privacy, []}, {mod_adhoc, []}, {mod_configure, []}, % Depends on mod_adhoc {mod_configure2, []}, {mod_disco, []}, {mod_stats, []}, {mod_vcard, []}, {mod_offline, []}, {mod_announce, [{access, announce}]}, % Depends on mod_adhoc {mod_echo, [{host, "echo.mainhost"}]}, {mod_private, []}, {mod_time, []}, {mod_last, []}, {mod_version, []} ]}.В итоге сервис пытается стартовать, но ejabberd так и запускается:
Порт 5222 не прослушивается:
Хотя с хостом видимо всё нормально:
(джаббер и попытки пдоключения к нему проводятся на одной машине).
И тем не менее, что-то здесь не работает..
в нынешним
в нынешним инитскриптом он говорит что ёж не стартует - но реально он работает, нужно по процессам смотреть
проверь права на сертификат - ёж его читать может?
посмотри логи,
попробуй в /etc/conf.d/ejabberd вместо ejabberd@'hostname -s' написать ejabberd@localhost
P.S.на этом форме теги в квадратных скобках а не в стрелках...
Права стоят
В /etc/init.d/ejabberd поменял на localhost (точнее и на mainhost пробовал) не сработало. Всё тоже самое.
По процессам действительно он работает:
# ps aux | grep jab jabber 5436 0.0 0.0 12552 384 ? S 19:44 0:00 /usr/lib64/erlang/erts-5.5.5/bin/epmd -daemon jabber 5949 3.6 0.9 29508 10068 pts/1 Sl 19:52 0:00 /usr/lib64/erlang/erts-5.5.5/bin/ beam -- -root /usr/lib64/erlang -progname erl -- -home /var/run/jabber -pa /usr/lib64/erlang/lib/ ejabberd-1.1.4/ebin -sname ejabberd -s ejabberd -ejabberd config "/etc/jabber/ejabberd.cfg" log_path "/var/log/jabber/ejabberd.log" -kernel inetrc "/etc/jabber/inetrc" -sasl sasl_error_logger {file,"/var/log/jabber/sasl.log"} -mnesia dir "/var/spool/jabber" -noshell -noshell -noinput(тут две строки, последнюю перенёс на несколько строк, чтобы форум не перекашивало)
Права стоят по-моему корректные:
Лог пуст:
А ещё есть какие-то логи?
там их 2 - ejabberd.log
там их 2 - ejabberd.log и sasl.log
менять хост можно только предварительно снеся базу
если есть в процессах - нужно понять почему он неработает, тут или в конфиге чинтаксис нетои или ещё что-то мелкое. посмотри когда он запушен на вывод
ejabberdctl ejabberd@localhost status
В sasl.log
В sasl.log действительно выводится сообщение об ошибке.
Ха, действительно в синтаксисе дело.
=CRASH REPORT==== 9-Feb-2008::01:17:05 === crasher: pid: <0.36.0> registered_name: [] error_info: {bad_return,{{ejabberd_app,start,[normal,[]]}, {'EXIT',["132", 58, 32, ["syntax error before: ",["']'"]]]}}} initial_call: {application_master, ...Переправил в конфиге вот это место:
{5280, ejabberd_http, [http_poll, web_admin]}, {8888, ejabberd_service, [{access, all},{}]} ]}.Вот это "]}" добавил в конец строки описания порта "8888" :) прям никита-онлайн :).
И действительно:
Но. А нельзя ли добить его и выяснить почему же всё-таки он запускается с каким-то предупреждением ("!!"), что оно значит, почему он выставляет его, как-нибудь это можно понять?
Потому как что-то возможно не сработало, узнать бы сразу, чтобы в дальнейшем проблем никаких не возникло.
это глюк в
это глюк в init-скрипте - если ты ещё раз сделаеш старт он скажет ok.
видимо нужно рихтовать скрипт
Не, пишет тоже
Не, пишет тоже самое:
Ну вообще функционирует вроде как без проблем.. наверное всё хорошо.
да забей ты на
да забей ты на него :)
качать OpenFire: http://www.igniterealtime.org/projects/openfire/index.jsp
ты как-то
ты как-то невовремя вылез,к томуже Jive/Wild Fire/Open Fire несколько странно относиться к стандартам и сообществу, и гораздо менее открыт на деле. хотя тоже достаточно хороший серв - но он небудет никогда поддерживать то что специфично для erlang - загрузка/выгрузка модулей и изменение конфигурации на лету.
помочь хотел
помочь хотел гикам что ежа мучают 4й месяц уже :)
:)
а что его мучать? ошибиться там особо негде...
да и помощ несколько странная...
кстати, а у тебя
кстати, а у тебя ёж запускается тоже с восклицательными знаками или с "ok"?
с
с восклицательными, я вспомнил почему - если хочеш от них избавиться нужно стартовать erlang с ключом -name вместо -sname , но тогда к этой ноде можно подцепиться снаружи