Вы здесь

eJabberd не удаётся стартовать, что можно ещё проверить??

Блин, я чокнусь с этим ЕДжаббердом.
Уже несколько часов конфигурирую и хоть бы хны.

Пытаюсь поднять 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 так и запускается:

mainhost ~ # /etc/init.d/ejabberd start
 * Starting eJabberd ...                                                                                                   [ !! ]

mainhost ~ # /etc/init.d/ejabberd start
 * WARNING:  ejabberd has already been started.

mainhost ~ # ejabberdctl ejabberd@localhost status
RPC failed on the node ejabberd@localhost: nodedown

Порт 5222 не прослушивается:

mainhost ~ # netstat -l | grep 52
tcp        0      0 *:5280                  *:*                     LISTEN
tcp        0      0 *:5223                  *:*                     LISTEN
unix  2      [ ACC ]     STREAM     LISTENING     15173  /tmp/.ICE-unix/5255
unix  2      [ ACC ]     STREAM     LISTENING     15064  /tmp/.ICE-unix/dcop5242-1201785282

Хотя с хостом видимо всё нормально:

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.035 ms
64 bytes from mainhost (192.168.1.2): icmp_seq=2 ttl=64 time=0.022 ms
64 bytes from mainhost (192.168.1.2): icmp_seq=3 ttl=64 time=0.034 ms
--- mainhost ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 0.022/0.030/0.035/0.007 ms
mainhost ~ #

(джаббер и попытки пдоключения к нему проводятся на одной машине).

И тем не менее, что-то здесь не работает..

в нынешним инитскриптом он говорит что ёж не стартует - но реально он работает, нужно по процессам смотреть
проверь права на сертификат - ёж его читать может?
посмотри логи,
попробуй в /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

(тут две строки, последнюю перенёс на несколько строк, чтобы форум не перекашивало)

Права стоят по-моему корректные:

# ls -la /etc/jabber/ | grep ssl
-rw-r--r--  1 root   root   1042 Фев  7 21:39 ssl.cnf
-rw-r--r--  1 root   root   2178 Ноя  9 04:28 ssl.pem

Лог пуст:

# cat /var/log/jabber/ejabberd.log
#

А ещё есть какие-то логи?

там их 2 - ejabberd.log и sasl.log
менять хост можно только предварительно снеся базу
если есть в процессах - нужно понять почему он неработает, тут или в конфиге чинтаксис нетои или ещё что-то мелкое. посмотри когда он запушен на вывод
ejabberdctl ejabberd@localhost status

В 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" :) прям никита-онлайн :).

И действительно:

# ejabberdctl ejabberd@localhost status
Node ejabberd@localhost is started. Status: started
ejabberd is running

Но. А нельзя ли добить его и выяснить почему же всё-таки он запускается с каким-то предупреждением ("!!"), что оно значит, почему он выставляет его, как-нибудь это можно понять?

# /etc/init.d/ejabberd start
 * Starting eJabberd ...  [ !! ]

Потому как что-то возможно не сработало, узнать бы сразу, чтобы в дальнейшем проблем никаких не возникло.

это глюк в init-скрипте - если ты ещё раз сделаеш старт он скажет ok.
видимо нужно рихтовать скрипт

Не, пишет тоже самое:

localhost ~ # /etc/init.d/ejabberd start
 * Starting eJabberd ...  [ !! ]

localhost ~ # /etc/init.d/ejabberd start
 * WARNING:  ejabberd has already been started.

localhost ~ # /etc/init.d/ejabberd stop
 * Stopping eJabberd ...  [ ok ]

localhost ~ # /etc/init.d/ejabberd start
 * Starting eJabberd ...  [ !! ]

localhost ~ #

Ну вообще функционирует вроде как без проблем.. наверное всё хорошо.

да забей ты на него :)

качать OpenFire: http://www.igniterealtime.org/projects/openfire/index.jsp

ты как-то невовремя вылез,к томуже Jive/Wild Fire/Open Fire несколько странно относиться к стандартам и сообществу, и гораздо менее открыт на деле. хотя тоже достаточно хороший серв - но он небудет никогда поддерживать то что специфично для erlang - загрузка/выгрузка модулей и изменение конфигурации на лету.

помочь хотел гикам что ежа мучают 4й месяц уже :)

а что его мучать? ошибиться там особо негде...
да и помощ несколько странная...

кстати, а у тебя ёж запускается тоже с восклицательными знаками или с "ok"?

с восклицательными, я вспомнил почему - если хочеш от них избавиться нужно стартовать erlang с ключом -name вместо -sname , но тогда к этой ноде можно подцепиться снаружи