From: Groall и Kult <groall@tsure.ru.>
Newsgroups: email
Date: Mon, 31 May 2009 17:02:14 +0000 (UTC)
Subject: Установка ejabberd с базой на MySql и установка ICQ транспорта PyICQt
В данной статье мы расскажем,как установить и настроить ejabberd с
авторизацией через MySQL. В дополнение будет приведен раздел по
установке и настройке pyICQ-t - транспорта ICQ для ejabberd.
Процедуры установки ejabberd и mysql приведены в двух вариантах:
установка из портов и установка из исходных текстов. Многие скажут "ставить из
исходных текстов на FreeBSD плохо" - однако, когда у вас не установится
из портов или установится, но не заработает, то Вам придется ставить из
исходников. Поэтому, расскажем и про них.
1. Установка erlang
Для начала нам нужно установить erlang. Чтобы не ставить много лишнего,
достаточно установить erlang-lite.
В /usr/ports/lang/erlang-lite/Makefile
WITHOUT_ODBC=yes
меняем на
WITH_ODBC=yes
Выполняем
cd /usr/ports/lang/erlang-lite
make install clean
2. Установка ejabberd
Установка ejabberd из портов
В /etc/make.conf прописываем
WITHOUT_JAVA=yes
WITH_ODBC=yes
Это нужно чтобы ejabberd собрался без Java и с поддержкой ODBC.
Далее как всегда
cd /usr/ports/net-im/ejabberd/
make install clean
Установка ejabberd из исходных текстов
Скачиваем последний релиз с официального сайта.
Распаковываем архив и конфигурируем ejabberd с поддержкой ODBC
./configure --enable-odbc
gmake
Устанавливаем его командой
gmake install
Объясним назначение созданных после установки из исходников файлов и каталогов:
/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
Запуск ejabberd, установленного из исходных текстов
ejabberdctl start
Проверка статуса
ejabberdctl status
Node ejabberd@localhost is started. Status: started
ejabberd is running
Остановка ejabberd
ejabberdctl stop
Запуск ejabberd, установленного из портов
ejabberd start
Проверка статуса
ejabberd status
Node ejabberd@localhost is started. Status: started
ejabberd is running
Остановка ejabberd
ejabberd stop
4. Установка и настройка MySQL
Установка MySQL из портов
cd /usr/ports/databases/mysql50-server/
make install clean
Запуск и настройка MySQL.
Запуск производится командой
/usr/local/etc/rc.d/mysql-server start
Запускаем утилиту 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", "localhost"}}.
Меняем авторизацию средствами ejabberd на авторизацию с помощью odbc.
Комментируем строчку
{auth_method, internal}.
И расскоментируем
{auth_method, odbc}.
Ищем строку начинающаюся с
%%{odbc_server, {mysql,
Убираем комментарий и прописываем в неё данные для подключения к базе jabber. Например,
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/
и меняем их владельца:
После всего запускаем сервис и смотрим логи. Должно заработать.
Регистрируем своего админа из любимого клиента или командой на сервере
ejabberdctl register admin_name hostname password
и наслаждаемся жизнью.
Для продвинутых настроек и статистики используйте web-admin https://hostname:5280/admin/
Логин и пароль ваши, логин должен быть полный JID.
6.Установка ICQ-транспорта
cd /usr/ports/net-im/jabber-pyicq/
make install clean
Далее идём редактировать конфигурационный файл pyICQt:
cd /usr/local/etc/
vi 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 -->
<!-- The hostname of the ICQ server you wish to connect to -->
<icqServer>login.icq.com</icqServer>Jabberd2) -->
<port>5347</port>
Пароль, используемый для аутентификации на сервере. Скопируйте
куда-нибудь или запомните - он ещё пригодится для конфиругирования ejabberd.cfg
<!-- The authentication token to use when connecting to the Jabber server -->
<secret>FkJ32dsdfsf3322_523424</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>
Ну и всё, пожалуй, - остальные настройки являются опциональными.