Установка ejabberd под Linux

Версия от 12:52, 2 ноября 2023; Rain (обсуждение | вклад) (Поменял местами блоки)

Рассмотрим установку сервера ejabberd на компьютеры под управлением одного из дистрибутивов GNU/Linux для использования в локальной сети с открытым доступом из Интернет и с использованием службы DynDNS.

Предполагается, что у Вас уже установлена операционная система, настроен доступ в Интернет, а доменное имя на DynDNS (допустим, это будет myjabber.ath.cx) указывает на внешний адрес Вашего компьютера (либо тот, который доступен из Вашей локальной сети, если Вы настраиваете сервер без возможности подключения к нему из Интернета).

Ejabberd может быть установлен на ваш сервер различными способами. Опишу три по убыванию предпочтительности:

  1. Установка из репозитория/портов. Идеальный по оптимизации и самый простой вариант.
  2. Сборка из исходного кода. Если этого пакета нет в репозиториях к вашему дистрибутиву, но очень хочется, чтобы сервер был оптимизированным и работал без ошибок - засучиваем рукава и переходим к соответствующему разделу. Тут вам понадобятся некоторые знания о Linux и/или помощь гуру.
  3. Предварительно собранные бинарные файлы с инсталлятором. Вариант весьма прост, но вряд ли оптимизирован именно под ваш дистрибутив.

Далее подробно рассмотрены эти варианты.

Установка из репозитория

Дистрибутивов Linux великое множество, и нет никакой возможности рассмотреть детали установки в каждом из них. Упомянем наиболее популярные (предполагается наличие прав root):

openSuSE 11.4

Сначала подключим репозиторий, посвящённый программам обмена сообщениями:

zypper addrepo http://download.opensuse.org/repositories/server:/messaging/openSUSE_11.4/ Messaging
Потом установим сервер:
zypper install ejabberd

Fedora

По умолчанию нужный репозиторий обычно подключен.

yum install ejabberd

Debian-based дистрибутивы (Debian, *Ubuntu и другие)

Ejabberd входит в основную ветку репозитория, поэтому для установки просто скомандуйте:

apt-get install ejabberd

Gentoo

Для установки ejabberd в Gentoo GNU/Linux выполните команды

echo "net-im/ejabberd pam ssl zlib mod_muc mod_pubsub web" >> /etc/portage/package.use
emerge ejabberd

Установка готовых бинарников

Рассмотрим установку stable-версии 2.1.8 для 32-битного Linux. Для начала нужно скачать инсталлятор:

wget http://www.process-one.net/downloads/ejabberd/2.1.8/ejabberd-2.1.8-linux-x86-installer.bin.gz

Распаковать его:

gunzip ejabberd-2.1.8-linux-x86-installer.bin.gz

И запустить:

chmod +x ejabberd-2.1.8-linux-x86-installer.bin
./ejabberd-2.1.8-linux-x86-installer.bin

Далее следуйте указаниям программы установки.

Сборка из исходников

Пример для версии 2.0.5

Рассмотрим сборку stable-версии ejabberd-2.0.5.

Для начала нужно, чтобы на сервере был установлен компилятор gcc и необходимые библиотеки (включая devel-части). Проверьте, есть ли у вас:

  • GNU Make
  • GNU C compiler (GCC)
  • libexpat 1.95 или выше
  • OpenSSL 0.9.6 или выше
  • Zlib 1.2.3
  • GNU Iconv 1.8 или выше
  • flex/yacc

В разных дистрибутивах проверка и установка делается разными способами. Дистрибутивов много, описывать каждый смысла не имеет. Если вы не знаете, как это сделать на вашем сервере, обратитесь к документации или гуру по данному дистрибутиву.

Для простоты операций будем работать пользователем root в его домашнем каталоге. Не забудьте потом прибраться.

Итак, нам нужен исходный код ejabberd. Идём на официальный сайт и выбираем, что нужно. Лучше выбирать stable версию, но если вы очень любите новые фишки и не боитесь нестабильной работы, то берите beta, testing или SVN версии.

Я выбрал stable-версию 2.0.5 и скачал её:

wget http://www.process-one.net/downloads/ejabberd/2.0.5/ejabberd-2.0.5.tar.gz

Конечно же, у вас есть эта удобнейшая утилита - wget. ;)

Ещё нам понадобится свеженький Erlang - это компилятор языка, на котором написан ejabberd. Если Erlang есть в вашем репозитории, то лучше воспользоваться им. Если нет - покажу, как собрать его из исходных кодов.

Как программист, не удержусь от пояснения, зачем было использовать этот с виду громоздкий и неудобный язык. Он громоздок и неудобен действительно лишь с виду, для написания программ вроде hello world, однако предоставляет прекрасный инструментарий многопоточного и распределённого программирования. Это позволит вам единожды написанную и собранную программу использовать на огромных кластерах, состоящих из машин любой архитектуры, в которые будет проще простого добавить новые вычислительные мощности. Даже Java не обладает подобными возможностями. Именно поэтому ejabberd считается одним из самых быстрых и масштабируемых серверов протокола XMPP.

Но довольно лирики.

wget http://erlang.org/download/otp_src_R13B01.tar.gz

Если у вас наличествуют все инструменты, библиотеки и исходные коды, приступим.

Создадим временный каталог для наших сборок:

mkdir buildtmp

erlang

В моём случае скачанный архив называется otp_src_R13B01.tar.gz. Распаковываем его во временный каталог:

tar zxf otp_src_R13B01.tar.gz -C buildtmp

Переходим в каталог и собираем erlang:

cd buildtmp/otp_src_R13B01
./configure --prefix=/usr --sysconfdir=/etc
make
make install

Конечно же, следим за процессом, а не просто набираем команды. Программа сборки может сообщить об ошибке, но не каждый error или warning означает неисправимую ошибку. Например, процесс конфигурирования (команда configure) может сообщить, что не нашла компилятора java, библиотек odbc и wx, но это не является ошибкой. Просто соответствующие части erlang-а будут отключены. Перечисленные библиотеки нам не понадобятся для работы ejabberd.

После сборки вернёмся в домашний каталог командой cd.

ejabberd

В моём случае архив называется ejabberd-2.0.5.tar.gz. Распаковываем его во временный каталог:

tar zxf ejabberd-2.0.5.tar.gz -С buildtmp 

Переходим в каталог с исходниками и собираем ejabberd:

cd buildtmp/ejabberd-2.0.5/src
./configure
make
make install

После всех этих манипуляций все нужные файлы разложены согласно традициям UNIX/Linux. Конфиги, в частности,- в /etc/ejabberd. Скрипт запуска - /sbin/ejabberdctl - отрабатывает команду start, что позволяет сразу добавить в rc.d, хотя лучше всё же написать правильный скрипт управления службой согласно правилам вашего дистрибутива.

Настройка

А дальше надо настроить сервер: что делать при загрузке, какие модули использовать, какие порты прослушивать, и т.п.

Настройка сервера сводится к редактированию файла конфигурации /etc/ejabberd/ejabberd.cfg (путь показан на примере Debian GNU/Linux, в других дистрибутивах или при самостоятельной сборке из исходных кодов путь может отличаться). Откройте этот файл от пользователя root в любом удобном для Вас текстовом редакторе, после чего найдите следующие строки:

%% Admin user
{acl, admin, {user, "", "localhost"}}.
%% Hostname {hosts, ["example.com"]}.

В первом параметре задается Jabber ID администратора, а во втором - доменное имя сервера. Приведите эти строки примерно к такому виду:

%% Admin user
{acl, admin, {user, "admin", "myjabber.ath.cx"}}.
%% Hostname {hosts, ["myjabber.ath.cx"]}.

В данном случае JID администратора задан admin@myjabber.ath.cx, а имя сервера, как уже условились выше - myjabber.ath.cx.

Теперь в том же файле найдите строки

%% No username can be registered via in-band registration:
%% To enable in-band registration, replace 'deny' with 'allow'
{access, register, [{deny, all}]}.

и замените deny на allow - без этого пользователи сервера не смогут регистрироваться напрямую из своего Jabber-клиента.

Логин в веб-интерфейсе


Сохраните изменения и перезапустите ejabberd командой

/etc/init.d/ejabberd restart


Сервисы и статистика сервера


После этого создайте нового пользователя admin@myjabber.ath.cx используя Ваш Jabber-клиент. В браузере сервисов для этой учетной записи будут доступны основные функции администрирования, а используя параметры этого аккаунта Вы сможете авторизоваться в веб-интерфейсе по адресу http://myjabber.ath.cx:5280/admin

Ссылки