Поднимаем правильно spectrum2 с помощью systemd
При переносе виртуалки с чатиками я столкнулся с одной очень неприятной проблемой при поднятии транспортов Spectrum2 - они не поднимались после перезагрузки, несмотря на включенный systemd-юнит. Быстрый просмотр логов показал, что в момент поднятия транспортов XMPP сервер (ejabberd в моем случае) еще не готов принимать подключения от кого бы там ни было. Следовательно, надо починить порядок запуска.
Подразумевается, что вы поставили spectrum2 из официального репозитория, который указан на сайте spectrum2.
Копируем /lib/systemd/system/spectrum2.service
в /etc/systemd/system/spectrum2-transports.service
. Смена имени необходима для того, чтобы в случае обновления наш юнит не перезаписался и не слетел с автозапуска.
Далее в секцию [Unit]
добавляем следующую строчку, в конец:
After=ejabberd.service
Сохраняем, делаем systemctl daemon-reload
, systemctl enable spectrum2-transports
и наслаждаемся. Теперь транспорты будут подниматься после ejabberd, когда он уже будет готов принимать подключения.
Второй вариант - создать файл с переназначением настроек /etc/systemd/system/spectrum2.d/after-ejabberd.conf
и добавить туда следующее содержимое:
[Unit]
Requires=ejabberd.service
After=ejabberd.service