|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> программы
—> ejabberd+mysql+icq
Установка и настройка ejabberd + mysql и в подарок icq transport
Автор: stopka.
И так всем доброго времени суток!
Задался целью выложить подробнейший ман по настройке стабильного, легкого jabber сервера.
Рекламировать не собираюсь, но скажу следующее. Ejabberd сервер обслуживает пользователей ресурса jabber.ru - Популярного российского центра мгновенных сообщений, а это ОЧЕНЬ серьёзный показатель, правда у них всё стоит на Debian, ну да ладно...
И так для успешной работы ejabberd с поддержкой mysql нужно три вещи:
1) сам ejabberd
2) erlang
3) erlang-mysql
Со вторым пунктом есть куча подводных камней с которыми мы познакомимся позже.
Начнём пожалуй с самого геморного тоесть со второго пункта, а всё "сладкое" на потом.
Ни чего лишнего нам от erlang не надо, так что будем ставить erlang-lite
Но для начала уясним такую весч, что ejabberd (2.0.5 и ниже) работает только с erlang ветки r12 и ниже, а уже выпущена ветка r13, так что многие столкнуться с проблемой: что "не стартует" ejabberd, точнее не слушает указаные порты, то есть не работает и то есть FAIL, по этому идём в порты:
# cd /usr/ports/lang/erlang
| Смотрим Makefile, а именно версию порта: PORTVERSION, если она ветки r12 или ниже, то всё замечательно.
Если нет, идём в эту статью и откатываем порт до r12 ветки.
И так будем думать что всё у нас хорошо с версией erlang, то есть поехали дальше:
# cd /usr/ports/lang/erlang-lite
| Правим Makefile, меняем: WITHOUT_ODBC=YES, на WITH_ODBC=YES и продолжаем установку:
Для пущей уверенности подтверждаем поддержку ODBC.
Далее ждём пока соберётся эрлэнг.
Эрлэнг собран, идём собирать модуль для mysql, тут проблем не возникнет:
# cd /usr/ports/databases/erlang-mysql
# make install clean
| Ну что, самое главное собрали, осталось дело за малым, идём собирать ejabberd c поддержкой ДБ.
А чтобы ejabberd непотащил с интернета всякой лабуды типа явы и заодно подстрахуемся что соберём всё с поддержкой ДБ, идём в make.conf
Добавляем:
PORTSDIR?= /usr/ports
.if ${.CURDIR} == ${PORTSDIR}/net-im/ejabberd
WITHOUT_JAVA=yes
WITH_ODBC=yes
.endif
| Далее идём собирать ejabberd.
# cd /usr/ports/net-im/ejabberd
# make install clean
| Подтверждаем выбор ODBC и ждём пока соберётся.
И так всё собрали, идем конфигурить.
Начнём с того, что хороший сервер это всегда поддержка ssl. Приступим к сборке ssl сертификата:
# cd /usr/local/etc/ejabberd/
# openssl req -new -x509 -nodes -newkey rsa:1024 -days 3650 \
-keyout privkey.pem -out server.pem -subj \
"/C=XX/ST=XX/L=XX/O=XX/OU=XX/CN=jabber.имя_хоста.ru/emailAddress="mail@jabber.имя_хоста.ru
# cat privkey.pem >> server.pem
# rm privkey.pem
# mv server.pem ssl.pem
|
И так в /usr/local/etc/ejabberd у нас уже есть готовый сертификат(ssl.pem), продолжим конфигурить.
Редактируем inetrc, велосипед придумывать не стал, смотрите:
{lookup,["file","native"]}.
{host,{}, ["jabber.ionitcom.ru","hostalias"]}.
{file, resolv, "/etc/resolv.conf"}.
| Кто чего умнее скажет, с удовольствием поправлю в статье и скажу спасибо.
Далее самое интересное, ejabberd.cfg:
{acl, admin, {user, "stopka"}}.
{acl, local, {user_regexp, ""}}.
{access, pubsub_createnode, [{allow, all}]}.
{access, register, [{allow, all}]}.
{welcome_message, {"Welcome!", "Welcome to Jabber Service. " "For information about Jabber visit http://jabber.ionitcom.ru"}}.
{access, c2s, [{deny, blocked}, {allow, all}]}.
{shaper, normal, {maxrate, 128000}}.
{shaper, fast, {maxrate, 256000}}.
{access, c2s_shaper, [{none, admin}, {normal, all}]}.
{access, s2s_shaper, [{fast, all}]}.
{access, announce, [{allow, admin}]}.
{access, configure, [{allow, admin}]}.
{access, muc_admin, [{allow, admin}]}.
{access, muc, [{allow, all}]}.
{auth_method, odbc}.
{odbc_server, {mysql, "mysql_сервер", "имя_бд", "учётка_бд", "пароль_учётки"}}.
{odbc_pool_size, 3}.
{hosts, ["jabber.имя_хоста.ru"]}.
{max_user_sessions, 10000}.
{language, "en"}.
{listen,
[{5222, ejabberd_c2s, [{access, c2s}, {shaper, c2s_shaper}, {max_stanza_size, 65536}, starttls,
{certfile, "/usr/local/etc/ejabberd/ssl.pem"}]},
{5223, ejabberd_c2s, [{access, c2s}, {max_stanza_size, 65536}, tls, {certfile, "/usr/local/etc/ejabberd/ssl.pem"}]},
{5269, ejabberd_s2s_in, [{shaper, s2s_shaper}, {max_stanza_size, 131072} ]},
{5247, ejabberd_service, [{access, all}, {hosts, ["icq.jabber.ionitcom.ru"], [{password, "пароль_для_icq_транспорта"}]}]}
]}.
{s2s_use_starttls, true}.
{s2s_certfile, "/usr/local/etc/ejabberd/ssl.pem"}.
{outgoing_s2s_port, 5269}.
{modules,
[
{mod_register, [{welcome_message, {"Welcome!","Welcome to this Jabber server."}},{registration_watchers,
["stopka@jabber.ionitcom.ru"]},{access, register}]},
{mod_roster_odbc,[]},
{mod_privacy, []},
{mod_adhoc, []},
{mod_announce, [{access, announce}]},
{mod_configure, []},
{mod_caps, []},
{mod_disco, []},
{mod_stats, []},
{mod_vcard_odbc, [{search, true},{matches, infinity},{allow_return_all, true}]},
{mod_offline_odbc,[]},
{mod_private, []},
{mod_pubsub, [{access_createnode, pubsub_createnode},{plugins, ["default", "pep"]}]},
{mod_muc, [{access, muc},{access_create, muc},{access_admin, muc_admin}]},
{mod_time, []},
{mod_last_odbc, []},
{mod_version, []}
]}.
|
Кто более менее с Английским дружит - всё поймет, кому надо подробнее описание - говорите.
Далее, ejabberdctl.cfg я не трогал вообще, всё оставил по умолчанке.
Далее, идём думать на счет БД, создаем бд, даём на неё права, в общем всё по старинке, тут останавливаться не буду. Манов по работе с mysql есть в интернете до хохоту.
И берём закидываем начальный дамп базы для ejabberd, берём его из сорцев ежабера, в /usr/ports/distfiles/ejabberd
И так, имеем настроенный ejabberd и готовую mysql базу для него.
Пойдем стартовать его:
# echo 'ejabberd_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/ejabberd start
| И смотрим на успехи:
# /usr/local/etc/rc.d/ejabberd status
ejabberd is running
| Значит всё отлично, ejabberd встал и уже готов к работе. Можно посмотреть для уверенности sockstat и убедиться что нужный софт слушает нужные порты.
Если мы видим другой результат, то топаем в логи: /var/log/ejabberd
Устранили проблему и пробуем снова, если в /var/log/ejabberd видим файлы вида: *.dump тоесть дампы на сколько я понимаю ejabberd`a
То убиваем эрленговый демон:
И заного пробуем стартовать ejabberd.
Далее поговорим об установке icq-транспорта.
С транспортом проблем ни каких не будет, поехали:
# cd /usr/ports/net-in/jabber-pyicq
# make install clean
| Там мы выбираем, что мы будем работать в паре с ejabberd, НО без поддержки ДБ, почему "без" сейчас объясню пока собирается транспорт.
Времени не хватило разобраться кто виноват, но суть беды в том, когда я прикручивал транспорт к mysql, после старта транспорт работал нормально, юзверы добавлялись и слизывали в базу свои контакт листы и т.д. Но стоит лишь потушить демон транспорта или ребутнуть его, вся база уходит в ноль и всем приходиться заного добавлять свои данные в ростер, кароче ерунда какая то. По этому остался на локальной базе, она не слетает с ней всё в порядке.
И так идём конфигурить jabber-pyicq.xml
Конфиг очень простой, не забудьте вписать пароль для слинковки транспорта с ejabberd и выкину кусок конфга в конце, чтобы вы не мучались дня два, за это уже отмучался я :)
Вот важный вам кусок:
<adhocDefaults>
<user>
<xstatus_receiving_mode>3</xstatus_receiving_mode>
<xstatus_sending_mode>3</xstatus_sending_mode>
<xstatus_saving_enabled>0</xstatus_saving_enabled>
<xstatus_option_smooth>1</xstatus_option_smooth>
<xstatus_display_icon_as_PEP>1</xstatus_display_icon_as_PEP>
<xstatus_display_text_as_PEP>0</xstatus_display_text_as_PEP>
<xstatus_icon_for_transport>1</xstatus_icon_for_transport>
<away_messages_receiving>0</away_messages_receiving>
<away_messages_sending>0</away_messages_sending>
<clist_show_phantombuddies>0</clist_show_phantombuddies>
<clist_deny_all_auth_requests>0</clist_deny_all_auth_requests>
<utf8_messages_sendmode>2</utf8_messages_sendmode>
<offline_messages_sendenc>2</offline_messages_sendenc>
<msgconfirm_sendmode>2</msgconfirm_sendmode>
<msgconfirm_recvmode>1</msgconfirm_recvmode>
<user_mood_receiving>1</user_mood_receiving>
<user_activity_receiving>1</user_activity_receiving>
<user_mood_receiving>1</user_mood_receiving>
</user>
</adhocDefaults>
| И так идём стартовать:
# echo 'jabber_pyicq_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/jabber-pyicq-transport start
| При первом старте может заругаться что нету прав на /var/spool/jabber
На самом деле это директории нету, так что тупо создаем и даём права от ejabberd и снова стартуем.
И далее заходим в клиент, регистрируемся и видим всю прелесть в сервисах сервера.
Веб админку описывать не хочу, больно она убогая, да и малофункциональная, всё как админ всё сможете сделать через управление в сервисах.
Так что на этом всё, эта статья написана по реальным событиям поднятия сервера: jabber.ionitcom.ru
Так же создан мною ресурс(jabber.ionitcom.ru) для школьников в jabber среде, чтобы понятно было что за чем и как переходить плавно с Аськи...
Касаемо настроек ejabberd и транспорта - спрашивайте, информации очень много не хочу всё описывать в этой статье, а то получиться полный хлам.
Вот и всё, жалуйте, хвалите, вы можете связаться со мной через жабу: stopka@jabber.ionitcom.ru или в аську 490977 я через транспорт сижу или написать в личку на форуме Лиссяры, я там тоже как "stopka".
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=8&t=18910.
размещено: 2009-07-01,
последнее обновление: 2009-07-04,
автор: stopka
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
2010-12-13, Al
IPSec
Описание принципов работы IPSEC и способов аутентификации.
2010-12-07, manefesto
FreeBSD on flash
Было принято решении переехать на USB Flash и установить минимальный джентельменский набор для работы своего роутера. Делаем =)
2010-12-05, Fomalhaut
root ZFS, GPT
Инструкция по установке FreeBSD с использованием в качестве таблицы разделов GPT и в качестве основной файловой системы - ZFS
2010-09-05, Cancer
Настройка аудиоплеера на ximp3
Цели: Простенький аудиоплеер, для того что бы тетя продавец в магазине утром пришла нажала на кнопку Power и заиграла в зале музыка, так же был доступ по сети, общая шара куда можно заливать музыку, к
2010-08-31, Cancer
Установка и настройка OpenVPN
На днях появилась задача - объединить головной офис и 3 филиала в одну сеть через интернет посредством OpenVPN, чтобы люди могли подключаться через RDP к базам 1С на серверах.
2010-08-25, manefesto
freebsd lvm
Использование linux_lvm для работы с LVM разделами из-под FreeBSD. Проблемы которые возники при монтирование lvm раздела
2010-04-30, gonzo111
proftpd file auth"a
Proftpd - квоты и авторизация из файлов, без использования базы данных и/или системных пользователей
2010-04-22, lissyara
tw_cli
Пошаговая инструкция по восстановлению RAID на контроллере 3ware, из которого выпал один диск. Настройка мониторинга состояния рейда и отчётов о его состоянии на email.
2010-04-14, fox
MySQL Master+Master
MySQL (Master Master) and (Master Slave) Как настроить репликацию…
2010-03-09, terminus
DNS zones
Краткий ликбез про управление DNS зонами. Примеры проведения делегирования прямых и обратных DNS зон.
2010-03-09, aspera
Squid+AD (group access)
Настройка прокси сервера SQUID с автроризацией пользователей в AD. Разделение пользователей на группы
|
Комментарии пользователей [10 шт.]