Настройка JUD на сервере Jabberd версии 2.x

Материал из Gentoo Linux Wiki

Перейти к: навигация, поиск
Вернуться в раздел руководства


Пожалуйста приведите эту статью в соответствиe с wiki разметкой, и затем удалите {{Wikify}} из текста статьи



Посоветовать или спросить,
пожаловаться или поблагодарить
можно на странице обсуждений.
Обсуди эту статью на форуме Gentoo.ru

Содержание

[править] Введение

С серверами Jabber в Gentoo дело обстоит не сказать, чтобы очень хорошо. Если пользоваться стабильными версиями, то доступен к установке фактически единственный сервер - Jabberd 1.4.


Написанный практически с нуля Jabberd версии 2 до сих пор не переведён в разряд стабильных, однако, является достаточно надёжным сервером с улучшенной архитектурой и множеством различных возможностей, отличающих его от версии 1.4.x. Всё это очень радужно и шоколадно, если бы не одно «но» - все эти возможности касаются серверной части (кластеризация, поддержка внешних хранилищ Postgres, MySQL и т.п.) Для клиентов нету ничего, кроме, собственно, IM. А чтобы прикрутить дополнительные агенты (сервисы и транспорты), приходится повозиться.


В данной статье нет инструкций по установке собственно сервера Jabber версии 2. Предполагается, что у вас уже есть работающий сервер с настроенным mysql хранилищем.

[править] Получение исходников

Как следует из «Jabberd 2 Installation and Administration Guide», Ryan Eatmon усовершенствовал свой пакет «Users-Agent JUD (Jabber User Directory)» для работы с сервером версии 2.0.

В репозитарии Gentoo этого пакета нет, поэтому тянем с сайта разработчика.

По сути, пакет представляет из себя 2 файла: собственно users-agent, написанный на PERL, и конфигурационный файл config.xml. Также, в состав входит скрипт для формирования базы данных в mysql, непонятно для какой версии mysql (во всяком случае, для версий 3 и 4 такой синтаксис команды CREATE TABLE не работает), и загрузочный скрипт, который совершенно бесполезен.

Короче, вооружаемся напильником и приступаем.

[править] Установка необходимых модулей PERL

Выполняем:

#emerge Net-Jabber

Эта команда установит сразу все необходимые для работы модули.

[править] Создание базы данных.

Как я уже говорил, входящий в комплект скрипт создания БД неработоспособен.

Создаём файл DBCreateJUD.sql со следующим содержанием:

Файл: DBCreateJUD.sql
 CREATE DATABASE JUD;
 GRANT ALL PRIVILEGES ON JUD.* to jud@localhost IDENTIFIED BY 'jud';
 CREATE TABLE JUD.jud (jid VARCHAR(100) PRIMARY KEY, name VARCHAR(100),
                       first VARCHAR(50), last VARCHAR(50),nick VARCHAR(50),
                       email VARCHAR(50), INDEX ind_name (name), INDEX ind_first (first),
                       INDEX ind_last (last), INDEX ind_nick (nick),
                       INDEX ind_email (email));
}

Этот файл содержит команды SQL, которые создают базу данных JUD с необходимым набором таблиц, и заводят пользователя "jud" с паролем "jud" с правами доступа к базе данных JUD.

Выполняем команду:

#mysql –u root –p <DBCreateJUD.sql

Потребуется ввести пароль пользователя root СУБД mysql.

Примечание: Не путайте суперпользователя с пользователем “root” СУБД mysql!

[править] Редактирование конфигурационного файла

Изменяем файл config.xml в составе пакета users-agent:

<secret>foobar</secret> 

Здесь пишем пароль доступа, аналогичный таковому в конфигурационном файле router.xml вашего Jabber-сервера.

<name>users.jabber.server</name>

Здесь заменяем jabber.server на имя вашего сервера.

 <mysql>
 <dbname>JUD</dbname> 
 <username>someone</username> 
 <password>something</password> 
 <limit>250</limit> 
 </mysql>

Здесь заменяем разделы username и password на имя пользователя и пароль для доступа к БД JUD. (pанее мы их задали как jud jud)


Конфигурационный файл готов – копируем его в директорию /etc/jabberd под именем config-jud.xml.

#cp config.xml /etc/jabberd/config-jud.xml

Этот файл содержит в открытом виде пароль доступа к БД JUD, поэтому меняем владельца файла и ограничиваем права доступа:

#chown jabber:jabber /etc/jabberd/config-jud.xml
#chmod 660 /etc/jabberd/config-jud.xml

[править] Редактирование исполняемого файла users-agent

Этот файл, как уже сказано выше, представляет собой PERL-скрипт. Открываем его, ищем в начале строку:

$optctl{config} = "config.xml";

Заменяем её на:

$optctl{config} = "/etc/jabberd/config-jud.xml";

Сохраняем файл в директории, например, /usr/bin. Выставляем права доступа:

#chmod 755 /usr/bin/users-agent

В принципе, сейчас уже всё должно работать: при запуске users-agent в списке сервисов клиентам будет виден jud. Остаётся последний шаг.

[править] Создание стартового скрипта в /etc/init.d.

Привожу код скрипта, который помещаете в файл /etc/init.d/jud :

Файл: /etc/init.d/jud
#!/sbin/runscript
 
 depend() {
        need net jabber-server
 }
 start() {
        ebegin "Starting JUD"
        start-stop-daemon --start -c jabber:jabber \
                -b --make-pidfile --pidfile /var/spool/jabber/jud.pid \
                -q -x /usr/bin/users-agent
        eend $?
 }
 stop() {
        ebegin "Stopping JUD"
        start-stop-daemon --stop -q --pidfile /var/spool/jabber/jud.pid
        eend $?
 }

Естественно, директория /var/spool/jabber должна существовать и на неё должны быть выставлены соответствующие права доступа. В норме она, как и ряд других, обеспечивается пакетом jabber-base, от которого зависит jabberd. Можете также использовать /var/jabberd/pid или любую другую по вашему выбору.

[править] Заключение

Всё готово. Запуск и остановка JUD осуществляется стандартно через rc-скрипты

#/etc/init.d/jud start

Или при старте системы, если выполнить

#rc-update add jud default

При перезапуске Jabber-сервера перезапустится и jud.

[править] Автор

Кирилл Шаталаев aka Shaltay
xmpp://supervisor@jabber.proezd.net

Личные инструменты