Установка и настройка ejabberd + mysql и в подарок icq transport [2009]
И так всем доброго времени суток!
Задался целью выложить подробнейший ман по настройке стабильного, легкого 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 и продолжаем установку:
# make install clean
ля пущей уверенности подтверждаем поддержку ODBC.
Далее ждём пока соберётся эрлэнг.
Эрлэнг собран, идём собирать модуль для mysql, тут проблем не возникнет:
# cd /usr/ports/databases/erlang-mysql # make install clean
у что, самое главное собрали, осталось дело за малым, идём собирать ejabberd c поддержкой ДБ.
А чтобы ejabberd непотащил с интернета всякой лабуды типа явы и заодно
подстрахуемся что соберём всё с поддержкой ДБ, идём в make.conf
Добавляем:
так в /usr/local/etc/ejabberd у нас уже есть готовый сертификат(ssl.pem), продолжим конфигурить.
Редактируем inetrc, велосипед придумывать не стал, смотрите:
Кто более менее с Английским дружит - всё поймет, кому надо подробнее описание - говорите.
Далее, ejabberdctl.cfg я не трогал вообще, всё оставил по умолчанке.
Далее, идём думать на счет БД, создаем бд, даём на неё права, в общем
всё по старинке, тут останавливаться не буду. Манов по работе с mysql
есть в интернете до хохоту.
И берём закидываем начальный дамп базы для ejabberd, берём его из сорцев ежабера, в /usr/ports/distfiles/ejabberd
И так, имеем настроенный ejabberd и готовую mysql базу для него.
Пойдем стартовать его:
# /usr/local/etc/rc.d/ejabberd status ejabberd is running
Значит
всё отлично, ejabberd встал и уже готов к работе. Можно посмотреть для
уверенности sockstat и убедиться что нужный софт слушает нужные порты.
Если мы видим другой результат, то топаем в логи: /var/log/ejabberd
Устранили проблему и пробуем снова, если в /var/log/ejabberd видим
файлы вида: *.dump тоесть дампы на сколько я понимаю ejabberd`a
То убиваем эрленговый демон:
# killall epmd
заного пробуем стартовать ejabberd.
Далее поговорим об установке icq-транспорта.
С транспортом проблем ни каких не будет, поехали:
# cd /usr/ports/net-in/jabber-pyicq # make install clean
ам
мы выбираем, что мы будем работать в паре с ejabberd, НО без поддержки
ДБ, почему "без" сейчас объясню пока собирается транспорт.
Времени не хватило разобраться кто виноват, но суть беды в том, когда я
прикручивал транспорт к mysql, после старта транспорт работал
нормально, юзверы добавлялись и слизывали в базу свои контакт листы и
т.д. Но стоит лишь потушить демон транспорта или ребутнуть его, вся
база уходит в ноль и всем приходиться заного добавлять свои данные в
ростер, кароче ерунда какая то. По этому остался на локальной базе, она
не слетает с ней всё в порядке.
И так идём конфигурить jabber-pyicq.xml
Конфиг очень простой, не забудьте вписать пароль для слинковки
транспорта с ejabberd и выкину кусок конфга в конце, чтобы вы не
мучались дня два, за это уже отмучался я :)
Вот важный вам кусок:
ри первом старте может заругаться что нету прав на /var/spool/jabber
На самом деле это директории нету, так что тупо создаем и даём права от ejabberd и снова стартуем.
И далее заходим в клиент, регистрируемся и видим всю прелесть в сервисах сервера.
Веб админку описывать не хочу, больно она убогая, да и
малофункциональная, всё как админ всё сможете сделать через управление
в сервисах.
Так что на этом всё, эта статья написана по реальным событиям поднятия сервера: jabber.ionitcom.ru
Так же создан мною ресурс(jabber.ionitcom.ru) для школьников в jabber среде, чтобы понятно было что за чем и как переходить плавно с Аськи...
Касаемо настроек ejabberd и транспорта - спрашивайте, информации очень
много не хочу всё описывать в этой статье, а то получиться полный хлам.
Вот и всё, жалуйте, хвалите, вы можете связаться со мной через жабу: stopka@jabber.ionitcom.ru или в аську 490977 я через транспорт сижу или написать в личку на форуме Лиссяры, я там тоже как "stopka".