Ключевые слова:jabber, icq, freebsd, (найти похожие документы)
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. Например,
{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/
и меняем их владельца:
chown ejabberd:ejabberd /usr/lib/erlang/lib/ejabberd-<номер_версии>/ebin/mysql*
После всего запускаем сервис и смотрим логи. Должно заработать.
Регистрируем своего админа из любимого клиента или командой на сервере
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>
Ну и всё, пожалуй, - остальные настройки являются опциональными.
7. Подключение транспорта
Открываем уже известный 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 из портов
В /etc/make.conf прописываем
WITHOUT_JAVA=yes
WITH_ODBC=yes
Это нужно чтобы ejabberd собрался без Java и с поддержкой ODBC.>
ejabberd от java никак не зависит и с ней уж точно не собирается, а вот erlang-lite как раз таки собирается без java (поэтому и light)
Во вторых совсем не расскрыта тема запуска ejabber не от пользователя root.
Вобщем статья написана на скорую руку при сильном волнении видимо
1. Конфиг находится не в /etc/ejabberd а в /opt/ejabberd/conf/ejabberd.yml
2. Ссылки все, которые указаны в статье, битые.
3. Киньте ссылку на готовые бинарные модули mod_mysql.beam и mod_odbc.beam (не исходные коды). Компилировать модули из исходных кодов нет ни времени, ни желания. Это надо ставить Erlang, который за собое еще тонну других пакетов потянет. Естественно при компиляции вылезет куча ошибок, которые разгребать тоже не хочется. Проще готовые бинарники скачать.