Содержание статьи:
Появилась потребность в корпоративном Jabber-сервере (XMPP). Для реализации задачи выбрал ejabberd, по заявлениям разработчика он легкий, быстрый и надежный как скала.
Собирать ejabberd версии 18.12.1, будем из исходников на Debian 9 Stretch.
Подготовка системы
Перед началом установки обновляем систему до актуального состояния:
1 |
apt-get update && sudo apt-get upgrade -y |
Устанавливаем необходимые зависимости:
1 |
apt-get install gcc g++ make autoconf erlang mysql-server git libssl-dev libyaml-dev zlib1g-dev libexpat1-dev imagemagick -y |
Установка ejabberd
Скачиваем исходники ejabberd релизной версии 18.12.1, распаковываем архив и переходим в него:
1 2 3 4 |
wget https://github.com/processone/ejabberd/archive/rel-18.12.1.zip unzip rel-18.12.1.zip cd ejabberd-rel-18.12.1 |
Выполняем настройку сборки. Я указал пути размещения файлов, в стандартные директории, включил MySQL/STUN/SIP поддержку:
1 2 |
./autogen.sh ./configure --prefix= --exec-prefix=/usr --enable-mysql --enable-stun --enable-sip |
После запускаем компиляцию и выполняем установку:
1 2 |
make make install |
По окончании установки, выполним настройки для запуска и нормальной работы ejabberd. Добавляем unit-файл в систему:
1 2 |
cp ejabberd.service /etc/systemd/system/multi-user.target.wants/ejabberd.service ln -s /etc/systemd/system/multi-user.target.wants/ejabberd.service /lib/systemd/system/ejabberd.service |
Создадим пользователя ejabberd, от имени которого будет запускаться ejabberd-сервер и выставляем правильные права на каталоги:
1 2 3 4 5 6 7 8 |
useradd ejabberd -d /var/lib/ejabberd -s /bin/sh -c "Ejabberd service user" chown root:ejabberd -R /etc/ejabberd chown ejabberd:ejabberd -R /var/lib/ejabberd chmod 700 -R /var/lib/ejabberd chown root:ejabberd /var/log/ejabberd chmod 770 /var/log/ejabberd chmod 755 /usr/sbin/ejabberdctl |
Теперь можно запустить ejabberd-сервер:
1 |
service ejabberd start |
Операции после установки
После установки пакета ejabberd, рекомендуется настроить на использование базы данных MySQL и не использовать встроенную Mnesia. Это связано с ограничением Mnesia на размер БД (2Gb). Так же необходимо создать административную учетную запись и назначить ей права доступа администратора.
Подключение базы данных MySQL
Сперва создадим необходимую базу данных:
1 2 3 4 5 6 7 |
mysql -u root -p CREATE DATABASE ejabberd CHARACTER SET utf8; CREATE USER 'ejabberd'@'localhost' IDENTIFIED BY 'ejabberd'; GRANT ALL PRIVILEGES ON ejabberd.* TO 'ejabberd'@'localhost'; FLUSH PRIVILEGES; EXIT |
Скачиваем SQL-схему, необходимую ejabberd и загружаем ее в созданную базу данных:
1 2 |
wget https://raw.githubusercontent.com/processone/ejabberd/master/sql/mysql.sql mysql -D ejabberd -u ejabberd -p < mysql.sql |
В файле конфигурации /etc/ejabberd/ejabberd.yml, добавляем параметры:
1 2 3 4 5 6 7 8 9 10 11 12 |
# Параметры подключения к БД MySQL sql_type: mysql sql_server: "localhost" sql_database: "ejabberd" sql_username: "ejabberd" sql_password: "ejabberd" # Использовать БД MySQL для аутентификации auth_method: sql # Использовать БД MySQL для всех модулей default_db: sql |
Перезагружаем службу XMPP:
1 |
service ejabberd restart |
Административная учетная запись
Для работы с консолью ejabberd, необходимо войти под уч. записью ejabberd:
1 |
su ejabberd |
Создадим учетную запись (прим. admin), для домена (прим. example.com):
1 |
/usr/sbin/ejabberdctl register admin example.com password |
Добавим права администратора, для созданной учетной записи «admin». В файле конфигурации /etc/ejabberd/ejabberd.yml, добавим следующее:
1 2 3 4 |
acl: admin: user: - "admin": "example.com" |
Перезагружаем службу XMPP:
1 |
service ejabberd restart |
Теперь через Web-интерфейс, который доступен по адресу — http://example.com:5280/admin , можно авторизоваться используя созданную учетную запись (admin@example.com).
Понравилась или оказалась полезной статья, поблагодари автора
После установки на debian9 сервис ejabberd запускается очень долго, 4-5 минут.
Столько же занимает restart
У вас так же было?
Нет, все запускается быстро.