Почему 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
на данный момент.