1. Установка erlang
Для начала нам нужно установить erlang. Чтобы не ставить много лишнего, достаточно установить erlang-lite.
В /usr/ports/lang/erlang-lite/Makefile
Это нужно чтобы ejabberd собрался без Java и с поддержкой ODBC.
Далее как всегда
cd /usr/ports/net-im/ejabberd/
make install clean
2.2. Установка ejabberd из сорцов
Скачиваем последний релиз с официального сайта. Распаковываем архив и конфигурируем ejabberd с поддержкой ODBC
./configure --enable-odbc
gmake
Устанавливаем его командой
gmake install
2.3. Объясним назначение созданных после установки из исходников файлов и каталогов:
/etc/ejabberd/ Содержит конфигурационные файлы:
ejabberd.cfg конфигурационный файл ejabberd
ejabberdctl.cfg конфигурационный файл административного скрипта
inetrc настройки DNS
/sbin/ejabberdctl Административный скрипт
/var/lib/ejabberd/
.erlang.cookie куки Erlang
db файл базы Mnesia. Родная база ejabberd
ebin бинарные файл Erlang (*.beam). По сути плагины
lib системные библиотеки (*.so)
msgs Переведенные сообщения (*.msgs)
/var/log/ejabberd/
Файлы лога. Очень полезные файлы, когда что-то не хочет работать.
ejabberd.log лог самого ejabberd
sasl.log лог Erlang/OTP
3. Запуск ejabberd
3.1. Запуск ejabberd, установленного из сорцов
ejabberdctl start
Проверка статуса
ejabberdctl status
Node ejabberd@localhost is started. Status: started
ejabberd is running
Остановка ejabberd
ejabberdctl stop
3.2. Запуск ejabberd, установленного из портов
ejabberd start
Проверка статуса
ejabberd status
Node ejabberd@localhost is started. Status: started
ejabberd is running
Остановка ejabberd
ejabberd stop
4. Установка MySQL из портов
4.1. Установка MySQL из портов
cd /usr/ports/databases/mysql50-server/
make install clean
4.2. Установка MySQL из сорцов
Скачиваем последний релиз MySQL с
официального сайта и распаковываем архив.
Создаём базу под ejabberd, так и назовём, ejabberd.
CREATE DATABASE `ejabberd` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
Создаём пользователя и наделяем правами.
GRANT ALL PRIVILEGES ON * . * TO 'ejabberd'@'%' IDENTIFIED BY 'my_pass' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0;
Обновляем привилегии.
FLUSH PRIVILEGES;
5. Настройка ejabberd для использования базы MySQL.
Открываем в любимом текстовом редакторе конфиг
ejabberd.cfg. Комментарии начинаются с %
Прописываем виртуальные хосты. Желательно, чтобы они совпадали с реальными доменами, на которых стоит серв. Например, jabber.tsure.ru
{hosts, ["jabber.tsure.ru"]}.
Прописываем кто у нас будет админ, через запятую. Где admin_name — логин админа, localhost — хост, в котором он админит
{acl, admin, {user, "admin_name", "jabber.tsure.ru"}}.
Меняем авторизацию средствами ejabberd на авторизацию с помощью odbc. Комментируем строчку
{auth_method, internal}.
И расскоментируем
{auth_method, odbc}.
Ищем строку начинающаюся с
%%{odbc_server, {mysql,
Убираем комментарий и прописываем в неё данные для подключения к базе jabber. Например,
{odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "my_pass"}}.
Меняем язык по умолчанию для сообщений сервера
{language, "ru"}.
Меняем значения:
mod_last на
mod_last_odbc
mod_offline на
mod_offline_odbc
mod_privacy на
mod_privacy_odbc
mod_private на
mod_private_odbc
mod_roster на
mod_roster_odbc
mod_vcard на
mod_vcard_odbc
Сохраняем и закрываем
ejabberd.cfg
Скачиваем файл со структурой БД
B этом файле меняем строку “SET table_type=InnoDB;” на “SET storage_engine=InnoDB;” и удаляем последние четыре закомментированные строки.
Подключаемся к базе данных и выполняем полученный sql-код. Например:
mysql>\. mysql.sql
Теперь скачиваем
модули erlang для работы с MySQL
Распаковываем файлы архива в /usr/lib/erlang/lib/ejabberd-<номер_версии>/ebin/ и меняем их владельца:
После всего запускаем сервис и смотрим логи. Должно заработать.
и наслаждаемся жизнью.
Для продвинутых настроек и статистики используйте web-admin
https://hostname:5280/admin/
Логин и пароль ваши, логин должен быть полный JID.
Установка ICQ-транспорта.
cd /usr/ports/net-im/jabber-pyicq/
make install clean
Далее идём редактировать конфигурационный файл pyICQt:
cd /usr/local/etc/
ee jabber-pyicq.xml
Имя траспорта. Обычно оно строится на базе домена непосредственно jabber с добавлением icq. в начале. К примеру, у jabber домен jabber.tsure.ru, транспорт будет называться icq.jabber.tsure.ru.
<!-- The JabberID of the transport. -->
<jid>icq.jabber.tsure.ru</jid>
Адрес, где находится jabber-сервер. Если находится на той же машине, где и сам jabber, то 127.0.0.1
<!-- The IP address of the main Jabberd server -->
<mainServer>127.0.0.1</mainServer>
Имя jabber-сервера:
<!-- The JID of the main Jabber server -->
<mainServerJID>jabber.tsure.ru</mainServerJID>
Сайт сервера. Можно написать что угодно, на работе оно не сказывается.
<!-- The website of the Jabber service -->
<website>http://jabber.tsure.ru/</website>
Порт, по которому ejabberd и pyicqt будут обмениваться информацией.
<!-- The TCP port to connect to the Jabber server on -->
<!-- (this is the default for Jabberd2) -->
<port>5347</port>
Пароль, используемый для аутентификации на сервере. Скопируйте куда-нибудь или запомните — он ещё пригодится для конфиругирования ejabberd.cfg
<!-- The authentication token to use when connecting to the Jabber server -->
<secret>FkJ32dksd67f54_fvi21</secret>
Без комментариев.
<!-- The default language to use (for error/status messages) -->
<lang>ru</lang>
Кодировка. Обычно это cp1251. Так и запишем.
<!-- Default message encoding to use -->
<encoding>cp1251</encoding>
Адрес ICQ-сервера для коннекта транспорта. Какой больше нравится, такой и устанавливаем.
<!-- The hostname of the ICQ server you wish to connect to -->
<icqServer>login.icq.com</icqServer>
Порт. Обычно это 5190. Если сервер использует другой порт, то меняем.
<!-- The port of the ICQ server you wish to connect to -->
<icqPort>5190</icqPort>
Ну и всё, пожалуй, — остальные настройки являются опциональными.
Подключение транспорта.
Открываем уже известный ejabberd.cfg.
Убираем комментарии со следующего блока:
%%{8888, ejabberd_service, [
%% {access, all},
%% {shaper_rule, fast},
%% {ip, {127, 0, 0, 1}},
%% {hosts, ["icq.example.org", "sms.example.org"],
%% [{password, "secret"}]
%% }
%% ]},
Ставим свой порт.
{5347, ejabberd_service, [
Хосты.
{hosts, ["icq.jabber.tsure.ru", "sms.jabber.tsure.ru"],
Ранее придуманный пароль аутентификации.
[{password, "FkJ32dksd67f54_fvi21"}]
Всё. Сохраняем. Перезапускаем.
jabber-pyicq-transport restart && ejabberdctrl restart
Послесловие. Идея написать данную статью родилась после суток шаманства над ejabberd`ом, который никак не хотел заводиться с MySQL. И все таки был поднят jabber.tsure.ru с базой на мускле.
Авторы: Kult и
Groall28 мая 2009