Ключевые слова: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.
Вобщем статья написана на скорую руку при сильном волнении видимо
Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке,
посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных
администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости
индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.
Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из
первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную
версию журнала в pdf-формате.
Подробнее о проведении акции вы можете прочитать на
странице сайта.