Установка і настройка ejabberd (xmpp)
- модульна архітектура сервера;
- підтримка роботи групи ejabberd серверів в кластері;
- присутній веб-інтерфейс для адміністрування;
- підтримка різних мов (в тому числі український);
- підтримка великої кількості стандартів протоколу XMPP;
- можливість використання зовнішніх сховищ через ODBC для зберігання даних (PostgreSQL, LDAP і т.д.);
- підтримка SASL і StartTLS на клієнтських і межсерверних з'єднаннях.
Установка і настройка сервера, описана в цій статті, відбувалася на базі операційної системи FreeBSD версії 9.1, а зберігання всієї службової інформації було покладено на СУБД PostgreSQL 9.1. У даній статті нічого не буде сказано про установку PostgreSQL, оскільки на сайті вже є відповідний матеріал.
На першому етапі необхідно оновити порти і встановити Erlang. Оскільки Erlang потрібен тільки для роботи ejabberd, у вікні вибору опцій я вказав самий мінімум.
Із запропонованих опцій обрані були наступні:
Після завершення установки Erlang можна переходити установці ejabberd. На момент написання статті в портах доступна версія ejabberd 2.1.11.
Із запропонованих опцій я вибрав лише одну - ODBC. Для забезпечення зв'язку ejabberd з PostgreSQL необхідно встановити відповідний драйвер ODBC, якого в портах, на жаль немає. У зв'язку з цим доведеться SVN, ом викачати вихідні коди модуля, скомпіліть його і встановити руками. Subversion встановлюється через порт / usr / ports / devel / subversion (в опціях обов'язково поставте галку навпроти NEON). Кому не охота займатися установкою Subversion, в кінці статті прикріплений архів з вихідними кодами (остання актуальна версія на момент написання статті).
На другому етапі в першу чергу необхідно створити базу даних, користувача бази даних і зробити імпорт схеми БД, з якою буде працювати ejabberd. Створити базу даних можна будь-яким зручним для вас способом, я зробив це консольним клієнтом psql.
P.S. У PostgreSQL версії 9.1 і вище за замовчуванням включений параметр standard_conforming_strings. через якого в ejabberd відвалюється сервіс MUC з помилкою: 503 service unavailable. Тому для створеної бази даних необхідно відключити даний параметр:
Тепер можна імпортувати схеми бази даних.
На даному етапі залишилося тільки ріхтануть конфіги і можна запускати сервер в роботу. Файли сервера зберігаються в директорії - / usr / local / etc / ejabberd. Після чистої установки в директорії буде три файли з розширенням * .exaxmple, перейменуйте / скопіюйте файли прибравши розширення. Таким чином, в директорії / usr / local / etc / ejabberd повинні бути наступні конфігураційні файли:
- ejabberd.cfg - головний конфігураційний файл;
- ejabberdctl.cfg - конфігураційний файл утиліти ejabberdctl;
- inetrc - конфігураційний файл для DNS.
Файл ejabberd.cfg у мене виглядає так:
Файл ejabberdctl.cfg у мене виглядає так:
Якщо при редагуванні конфігов помилок допущено не було, то проблем виникнути не повинно і ви зможете побачити на екрані приблизно наступне:
Якщо ж сервіс не стартував, то дивіться логи в / var / log / ejabberd. На жаль, формат випльовує помилок сервером дико незручний, але розібратися все ж можна. Зазвичай проблеми виникають через некоректні прав доступу або помилок в файлі конфігурації. Для налагодження буде корисна команда ejabberdctl live. яка запускає сервер не отсоединяя його від терміналу і всі повідомлення виводяться на консоль. Тільки врахуйте, що сервер буде запущений з правами користувача виконав цю команду і всі створювані сервером файли будуть мати відповідні права (я перший раз довго вовтузився з проблемою запуску сервера командою service ejabberd start після налагодження). Тому можна використовувати таку команду для налагодження: