Настройка JUD на сервере Jabberd версии 2.x
Материал из Gentoo Linux Wiki
- Вернуться в раздел руководства
Пожалуйста приведите эту статью в соответствиe с wiki разметкой, и затем удалите {{Wikify}} из текста статьи
|
Посоветовать или спросить, |
Содержание |
[править] Введение
С серверами 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
