понедельник, 8 октября 2012 г.

Ejabberd и mysql


Настройка для mysql

** Качаем схему (схема есть в /usr/share/doc/ejabberd/examples/mysql.sql.gz)
wget https://git.process-one.net/ejabberd/mainline/blobs/raw/2.1.x/src/odbc/mysql.sql


** Создаём пользователя ejabberd:
$ mysql -p -u root
mysql> GRANT ALL ON ejabberd.* TO 'ejabberd'@'localhost' IDENTIFIED BY 'password';
пароль ставим свой

** Создаём базу данных ejabberd:
mysql> CREATE DATABASE ejabberd;
mysql> quit

** Загружаем схему в БД:
$ mysql -D ejabberd -p -u ejabberd  < mysql.sql

** настраиваем ejabberd на MySQL, прописываем в ejabberd.cfg:
%%{auth_method, internal}.
{auth_method, odbc}.
{odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "password"}}.
пароль ставим свой

** Указываем какие таблицы будут храниться в MySQL.
Список всех таблиц, данные из которых можно перенести в MySQL можно узнать посмотрев какие модули odbc присутствуют:
ls /usr/lib/ejabberd/ebin | grep mod | grep odbc
mod_last_odbc.beam
mod_offline_odbc.beam
mod_privacy_odbc.beam
mod_private_odbc.beam
mod_pubsub_odbc.beam
mod_roster_odbc.beam
mod_vcard_odbc.beam
т.е. находим в конфиге строки вида {mod_last,     []}, {mod_offline,  []}, и меняем их на {mod_last_odbc,     []},  {mod_offline_odbc,  []}, в соответствии со списком найденых модулей


** скачиваем модули подключения erlang к MySQL -- https://support.process-one.net/doc/display/CONTRIBS/Yxa - не работала на момент установки - было довольно продолжительное время "The system is currently under maintenance. Please, come back in a while. Sorry for the inconvenience." или берем
svn co https://svn.process-one.net/ejabberd-modules/mysql/trunk mysql

Компилируем с помощью скрипта build.sh (для этого нужен полный erlang иначе будет сообщение вида "mysql Crash dump was written to: erl_crash.dump")


Из каталога ebin копируем файлы *.beam к остальным модулям (файлы с расширением *.beam). В Debian это /usr/lib/ejabberd/ebin/

Рестартим ejabberd, но при этом может остаться висеть процесс /usr/lib/erlang/erts-5.8/bin/beam и модуль для mysql не подхватиться - его надо убить и затем запустить ejabberd.





3 комментария:

  1. Спасибо большое за svn репу к mysql либам. Process-one по прежнему в дауне. Только через svn и собрал.

    ОтветитьУдалить
  2. Откровенно говоря, я в ejabberd слегка разочаровался. Танцы с бубном в erlang и т.п. - ну просто реально нет времени и желания в этом копаться. Заменил его на Prosody
    http://mldav.blogspot.com/2013/06/jabber-prosody-debian.html
    тоже работает с mysql, конфиги довольно прозрачные. Разве что группы через файлик создаются, но опять же - особо не упирался - написал скрипт экспорта групп в файл и все.

    ОтветитьУдалить
  3. тогда может быть тут - https://github.com/astro/ejabberd/blob/master/src/odbc/mysql.sql

    ОтветитьУдалить