Подключаем базу MySQL к ejabberd 2.1.11 для хранения архива сообщений

Дано:
ejabberd 2.1.11 установленным на CentOS 6.4.

Задача:
Подключить MySQL к ejabberd. Настроить  сохранение всех сообщений в базе MySQL.

Решение.

Установим MySQL:
#yum install mysql-server

Добавим в автозагрузку mysql:
#chkconfig mysqld on

Запустим сервис:
#service mysqld start

После установки mysql, пароль у root отсутствует, и попасть в консоль можно без пароля:
#mysql –uroot

Поэтому в начале установим новый пароль для root:
#mysqladmin –u root password NEWPASSWORD
или можно выполнить скрипт
# /usr/bin/mysql_secure_installation
Этот скрипт, при ответе на задаваемые вопросы установит новый пароль для root, удалит базу test, удалит пользователя anonymous, и запретит удаленный доступ для root.
Теперь вход происходит по паролю:
#mysql –uroot –p

Создаем базу ejabberd:
# mysql –uroot –p
mysql>create database ejabberd;

Создаем пользователя ejabberd с паролем ejabberd, и разрешаем ему подключаться к базе ejabberd с любого ip.

mysql>grant all privileges on ejabberd.* to ejabberd@'%' identified by 'ejabberd' with grant option;

Если есть необходимость удаленного доступа к базе, то предоставим этот доступ.

Откроем файл  /etc/my.cnf
# vi /etc/my.cnf

Добавим следующие строки в секцию [mysqld]:
[mysqld]
port=3306
bind-address=0.0.0.0
0.0.0.0 – позволяет подключиться с любого ip.

Откроем порт 3306:
# iptables -I INPUT -p tcp –dport 3306 -m state –state NEW -j ACCEPT

Сохраним правило:
# service iptables save

Для работы с базой нам понадобиться модуль mysql-odbc. Устанавливаем клиента subversion:
# yum install svn

Забираем  исходники модуля mysql-odbc:
# svn checkout http://svn.process-one.net/ejabberd-modules/mysql/trunk/ mysql
# cd mysql/
# ./build.sh
# cp ./ebin/*.beam  /usr/lib64/ejabberd/ebin/
Примечание: если у вас х32 система, то копируем в /usr/lib/ejabberd/ebin/

Патчим и устанавливаем  плагин mod_archive:
# svn checkout http://svn.process-one.net/ejabberd-modules
# wget /download/patch_mod_archive.diff
# cd ejabberd-modules/mod_archive/trunk/src/
# patch -p0 < ../../../../patch_mod_archive.diff
# cd .. && ./build.sh
# cp ./ebin/*.beam  /usr/lib64/ejabberd/ebin/

Скачиваем файл дамп базы mysql с таблицами для архива сообщений
# wget /download/jabber.sql

Импортируем скаченный дамп в ранее созданную базу ejabberd
# mysql –uroot –p
mysql>\. ejabberd;

Редактируем файл конфигурации ejabberd.cfg
# vi /etc/ejabberd/ejabberd.cfg

Добавляем и изменяем следующие строки, при этом меняем часть модулей по следующему принципу:

%%{mod_last,     []},  на {mod_last_odbc,     []},
%%{mod_offline,  []}, на {mod_offline_odbc,  []},
%%{mod_roster,   []}, на {mod_roster_odbc,   []},

%%%%%%%%%%%%%%%%%%%%%%%%%
%% ejabberd.cfg
%%%%%%%%%%%%%%%%%%%%%%%%
  {5280, ejabberd_http, [
                       {request_handlers,
                       [
                       {["archive"], mod_archive_webview} ]},
                       captcha,
                       http_bind,
                       http_poll,
                       %%register,
                       web_admin
                       ]}
]}.
%%
{auth_method, odbc}.
%%
%% MySQL server:
%%
{odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "ejabberd"}}.
%%
{modules,
 [
 {mod_archive_odbc, [{database_type, "mysql"},
                    {default_auto_save, true},
                    {enforce_default_auto_save, true},
                    {default_expire, infinity},
                    {enforce_min_expire, 0},
                    {enforce_max_expire, infinity},
                    {replication_expire, 31536000},
                    {session_duration, 1800},
                    {wipeout_interval, 86400}]},

{mod_last_odbc,     []},
{mod_offline_odbc,  [{access_max_user_messages, max_user_offline_messages}]},
{mod_privacy_odbc,  []},
{mod_roster_odbc,   []},
%%%%%%%%%%%%%%%%%%%%%%%%

Перезапускаем ejabberd:
# /etc/init.d/ejabberd restart

Заходим в архив по адресу http://XX.XX.XX.XX:5280/archive

Если кого-то не устроит функционал, то имея доступ к базе, можно написать свою веб-форму менеджера архива.

Автор: Юрий(wdiz@bk.ru)

(Пока оценок нет)
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x