пятница, 7 августа 2009 г.

Установка Jabberd2

В данной статье я попытаюсь описать порядок инсталяции Jabberd2 как публичного сервиса для некоторого абстрактного хостинга доменов. Стоит отметить, что описания реализации подобной задачи в интеренете нет. Я нашел одну статью, но она была сильно устаревшей и использованные в ней приемы в настоящее время не работоспособны. Статья будет дополняться и перерабатываться, так что жду ваших поправок и отзывов. Задача выполнялась на сервере под управлением CentOS 5. Подход к реализации данной задачи исходил из структуры скрипта инициализации сервиса, так что реализация на другом дистрибутиве может отличаться от данного метода.

Постановка задачи

* Свободная регистрация
* Хостинг нескольких доменов
Инсталяция необходимого программного обеспечения
Необходимио учесть, что данные пакеты в CentOS доступны через репозиторий EPEL.
yum install jabberd

Конфигурирование Jabberd2

Инсталяция схемы базы данных

Заходим в консоль MySQL с правами администратора. Там:
mysql> \. /usr/share/jabberd/db-setup.mysql
Это действие создасть базу данных с именем jabberd2. Так же тебудется создать некого пользователя с правами на SELECT, INSERT, UPDATE, DELETE, LOCK TABLES. Последнее не уверен, что необходимо, но более подробной информации не нашел.

Наcтройка подключения клиентов

Конфигурационный файл /etc/jabber/c2s.xml
Для реализации многодоменности обязательно требуется указать значение realm. Он обязан совпадать со значением id. Если realm опустить, то возникнет конфликт учетных записей с одинаковыми именами с разных доменов.
pridomain.ru
secdomain.ru
В секции указываем тип БД, где будет происходить авторизация. К примеру
mysql

В секции требуется настроить соответствующие параметры подключения к БД. Стоит отметить проблему с клиентом Gajim и, предположительно, Pidgin: в секции следует убрать digest-md5, т.к. она не корректно обрабатывается этими клиентами. Так же возможно поменять местами порядок этих модулей, но эта информация пока не проверена.
Настройка хранения информации пользователей
Конфигурационный файл /etc/jabber/sm.xml Ростер и vcard храним тоже в MySQL В секции

mysql
Указываем наш домен
pridomain.ru

Многодоменность

Особенность скриптов инииализации CentOS требует некоторых дополнительных действий, чтобы данный функционал реализовать. Во первых необходимо создать симвлическую ссылку на бинарник sm с именем совпадающим с именем конфигурционного файла
cd /usr/bin
ln -s sm sm-secdomain
Во вторых необходимо создать второй файл конфигурации /etc/jabber/sm-secdomain.xml, и опять таки обратить внимание на его имя. В файле исправить следующие параметры.
secdomain.ru
/var/lib/jabberd/pid/sm-secdomain.pid
Так же исправляем файл /etc/sysconfig/jabberd. Тут тоже уделяем внимание имени.
START_DAEMONS="router sm sm-secdomain c2s s2s"
Данную операцию можно повторить для множества доменов

Запуск

Запускаем сервис
$ service jabberd start
 Initializing jabberd processes ...
 Starting router:                                           [  OK  ]
 Starting sm:                                               [  OK  ]
 Starting sm-secdomain:                                     [  OK  ]
 Starting c2s:                                              [  OK  ]
 Starting s2s:                                              [  OK  ]
Проверяем, что Service Manager (sm) имеет двойников как мы и хотели
$ ps aux|grep /usr/bin/sm
jabber 1524 0.0 0.2 8760 2676 ? S 16:02 0:00 /usr/bin/sm -c /etc/jabberd/sm.xml
jabber 1549 0.0 0.2 8664 2508 ? S 16:02 0:00 /usr/bin/sm-secdomain -c /etc/jabberd/sm-secdomain.xml
root 5063 0.0 0.0 4808 732 pts/6 R+ 20:23 0:00 grep /usr/bin/sm
Ура!!! Мы всех перехитрили, и теперь можем хостить кучу доменов на одном сервере! :)

Конфигурирование DNS

В файле зоны необходимо прописать следующие строки:
_xmpp-server._tcp IN SRV 0 0 5269 jabber.pridomain.ru.
_xmpp-client._tcp IN SRV 0 0 5222 jabber.pridomain.ru.
Это необходимо сделать для каждой зоны, которую вы собираетесь обслуживать. Запись используется для определения хоста для коннекта клиента(c2s) и взаимодействия между серверами(s2s).

Комментариев нет:

Отправить комментарий