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

Я пытаюсь установить 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.

Точки просто уходят вечно, пока не истечет время или я не убью тебя 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

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

2 ответа

Решение

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

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

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

Это проблема apparmor с отсутствием доступа из сокета ejabberd (подпроцесс erlang уведомления systemd) -> systemd WATCHDOG. Проще всего отключить профиль apparmor с помощью:

ln -s /etc/apparmor.d/usr.sbin.ejabberdctl /etc/apparmor.d/disable/apparmor_parser -R /etc/apparmor.d/usr.sbin.ejabberdctl

на данный момент.

Другие вопросы по тегам