Почему Ejabberd не работает?

9

Я пытаюсь установить ejabberd 2.1.10-2на свой Ubuntu 12.04.1сервер. Это новая установка, и ejabberd никогда не устанавливается успешно.

Установка

Каждый раз apt-get зависает на этом:

Setting up ejabberd (2.1.10-2ubuntu1) ...
Generating SSL certificate /etc/ejabberd/ejabberd.pem...

Creating config file /etc/ejabberd/ejabberd.cfg with new version
Starting jabber server: ejabberd............................................................ failed.

Точки просто идти вечно , пока не выйдет время или I «killall» beam, beam.smp, epmdи ejabberdпроцессы. Я отключил все ограничения брандмауэра.

Вот вывод, epmd -namesпока установка зависла:

epmd: up and running on port 4369 with data:
name ejabberdctl at port 42108
name ejabberd at port 39621

И после этого не получается:

epmd: up and running on port 4369 with data:
name ejabberd at port 39621

В то же время (во время и после) на выходе оба netstat -atnp | grep 5222и netstat -atnp | grep 5280пустые.


Файл аварии

Файл аварийного дампа создается в /var/log/ejabber/erl_crash.dump. Слоган (то есть причина аварии):

Slogan: Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}})

Оно живое?

Всякий раз, когда я пытаюсь перезапустить ejabberd service ejabberd start, происходит то же самое - даже если я убил все процессы перед этим.

Однако, когда я снова убиваю все процессы, перечисленные выше, и запускаю su - ejabberd -c /usr/sbin/ejabberd, я получаю следующий вывод:

Erlang R14B04 (erts-5.8.5) [source] [64-bit] [rq:1] [async-threads:0] [kernel-poll:false]

Eshell V5.8.5  (abort with ^G)
(ejabberd@ns1)1> 
=INFO REPORT==== 15-Oct-2012::12:26:13 ===
I(<0.478.0>:ejabberd_listener:166) : Reusing listening port for 5222

=INFO REPORT==== 15-Oct-2012::12:26:13 ===
I(<0.479.0>:ejabberd_listener:166) : Reusing listening port for 5269

=INFO REPORT==== 15-Oct-2012::12:26:13 ===
I(<0.480.0>:ejabberd_listener:166) : Reusing listening port for 5280

=INFO REPORT==== 15-Oct-2012::12:26:13 ===
I(<0.40.0>:ejabberd_app:72) : ejabberd 2.1.10 is started in the node ejabberd@ns1

Затем сервер работает. Я получаю приглашение при входе в систему http://mydomain.com:5280/admin/. Конечно, я не могу войти, если я не создаю учетную запись.

В это время вывод netstat -atnp | grep 5222и netstat -atnp | grep 5280выглядит следующим образом:

tcp        0      0 0.0.0.0:5222            0.0.0.0:*               LISTEN      19347/beam      
tcp        0      0 0.0.0.0:5280            0.0.0.0:*               LISTEN      19347/beam      

ejabberdctl

Даже когда кажется, что ejabberd работает, попытка что-либо сделать с ejabberdctl не удалась. Например: пытается зарегистрировать пользователя:

root@ns1:~# ejabberdctl register myusername mydomain.com mypassword
Failed RPC connection to the node ejabberd@ns1: nodedown

Понятия не имею, что я делаю не так. Это происходит на двух разных серверах с одинаковым установленным программным обеспечением (на самом деле ничего особенного). Пожалуйста помоги. Спасибо.

Эндрю Энсли
источник
Просто предположение, вы пробовали либо получить бинарный файл / пакет с веб-сайта разработчика, либо строить из исходного кода? Кроме того, вы тестировали его установку на виртуальную машину (или реальную установку) версии 12.10?
четыре

Ответы:

7

Однажды у меня возникла эта проблема, когда демон не смог определить IP-адрес имени хоста, которое я дал в файле конфигурации ejabber. Мое решение состояло в том, чтобы отредактировать файл / etc / hosts и убедиться, что для моего публичного IP-адреса и домена, на который я хотел, чтобы ejabber отвечал, была запись имени хоста.

0.0.0.0 hostname.domain.com hostname
1.1.1.1 ns1.yahoo.com ns1

Ну, вы поняли. Надеюсь, это поможет.

Фрэнк Барсенас
источник
Я проверил, и у меня уже есть запись в моем файле / etc / hosts с моим доменным именем и публичным IP. Тем не менее, я думаю, что вы на правильном пути с этим. Я только что заметил сообщение об ошибке «Ошибка соединения RPC с узлом ejabberd @ ns1». ns1 - это имя машины, но это не имя домена. Это должно показать доменное имя там?
Эндрю Энсли
1
да точно .. Вы должны хотя бы добавить ns1 в файл hosts. как 0.0.0.0 <FQDN> <имя хоста>
Фрэнк Барсенас
Святой ... я даже не ... Добавление ns1 в мой файл / etc / hosts работало. Печаль во благо.
Эндрю Энсли
1
Рад слышать, что ты об этом позаботился. Удачи и да прибудет с тобой сила. :-)
Фрэнк Барсенас