UPD: Памятка мне не забыть вникнуть в -DWITHOUT_JAVA
Ставим erlang:
cd /usr/ports/lang/erlang-lite && make install clean
┌────────────────────────────────────────────────────────────────────┐ │ Options for erlang-lite r13b04_2,1 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [ ] JAVA Enable Java applications │ │ │ │ [ ] X11 Enable X11 support │ │ │ │ [ ] WX Enable WX Extensions │ │ │ │ [X] ODBC Enable ODBC │ │ │ │ [X] SMP Enable SMP │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘
Enable ODBC — разрешили поддержку работы с базами данных (нас интересует MySQL)
cd /usr/ports/net-im/ejabberd && make install clean
echo ejabberd_enable=YES>>/etc/rc.conf
cp /usr/local/etc/ejabberd/ejabberd.cfg.example /usr/local/etc/ejabberd/ejabberd.cfg && cp /usr/local/etc/ejabberd/ejabberdctl.cfg.example /usr/local/etc/ejabberd/ejabberdctl.cfg && cp /usr/local/etc/ejabberd/inetrc.example /usr/local/etc/ejabberd/inetrc
В файле inetrc отредактируйте имя домена.
В файле ejabberd.cfg отредактируйте:
- {hosts, ["jabber.domain.tld"]}.
- {auth_method, internal}. -> {auth_method, odbc}.
- {odbc_server, {mysql, "localhost", "ejabberd", "ejabberd", "ejabberd"}}.
- {acl, admin, {user, "имя_пользователя_админа", "jabber.domain.tld"}}.
- Меняем значения:
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
Сгенерируем самоподписанный сертификат на 10 лет (Внимание! Не забудьте заменить имя домена на своё):
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.domain.tld/emailAddress="mail@jabber.domain.tld && cat privkey.pem >> server.pem && rm privkey.pem && mv server.pem ssl.pem
Выдержка из секции listen:
{5222, ejabberd_c2s, [ %% %% If TLS is compiled in and you installed a SSL %% certificate, specify the full path to the %% file and uncomment this line: %% {certfile, "/usr/local/etc/ejabberd/ssl.pem"}, starttls, {access, c2s}, {shaper, c2s_shaper}, {max_stanza_size, 65536} ]}, {5223, ejabberd_c2s, [ {access, c2s}, {certfile, "/usr/local/etc/ejabberd/ssl.pem"}, tls, {max_stanza_size, 65536} ]}, {5269, ejabberd_s2s_in, [ {shaper, s2s_shaper}, {max_stanza_size, 131072} ]},
Теперь необходимо создать одноимённую БД для ejabberd (я это делал через ISPmanager) и загрузить в неё все таблицы для работы ejabberd. Это можно сделать через консоль или же PHPMyAdmin.
cd /usr/local/etc/ejabberd && fetch http://dl.dropbox.com/u/958658/Misc/ejabberd/mysql.sql && mysql -u root -p -D ejabberd
mysql>\. mysql.sql
mysql> EXIT
Bye
mysql> EXIT
Bye
Теперь необходимо установить модуль Erlang, необходимый для работы с MySQL. Узнаём версию ejabberd:
pkg_info | grep ejabberd
У меня была 2.1.
cd /usr/local/lib/erlang/lib/ejabberd-2.1.5/ebin/ && fetch http://dl.dropbox.com/u/958658/Misc/ejabberd/mysql_r13.tar.gz && tar -xzvf mysql_r13.tar.gz && mv ./mysql_r13/mysql* ./ && rm -rf mysql_r13.tar.gz mysql_r13 && chown -R ejabberd:ejabberd /usr/local/lib/erlang/lib/ejabberd-2.1.5/ebin/mysql*
Внимание! Для ejabberd версии 2.1.3 требовался модуль mysql_r12.tar.gz. Свежую версию я скачал на support.process-one.net.
Запуск:
/usr/local/sbin/ejabberdctl start
Теперь необходимо зарегистрировать указанный выше административный аккаунт. Для управления через web-интерфейс авторизуйтесь полным JID администратора.
Если у вас возникает ошибка Kernel pid terminated (application_controller) ({application_start_failure,kernel,{shutdown,{kernel,start,[normal,[]]}}}) и в /var/log/ejabberd создаётся файл erl_crash_день-время.dump, убедитесь что запускаете ejabberd именно командой /usr/local/sbin/ejabberdctl start
UPDATE Установка mod_logdb, записывающего сообщения в базу данных. Идём в /usr/ports/distfiles/ находим там архив ejabberd-2.1.5, распаковываем его, переходим в получившуюся папку ./ejabberd-2.1.5/src/ и загружаем туда patch-src-mod_logdb-2.1.3.diff. Это — файл патча, применяем его:
cd /usr/ports/distfiles/ejabberd-2.1.5/src && patch -p0 < patch-src-mod_logdb-2.1.3.diff
Устанавливаем:
./configure
gmake install
gmake install
В конфиг дописываем:
{access, mod_logdb, [{allow, all}]}.
Там, где модули добавляем:
{mod_logdb, [ {dbs, [{mysql5, [{user, "%пользователь_бд%"},{password, "%пароль%"},{server, "localhost"},{port, 3306},{db, "%имя_бд%"}]}]}, {vhosts, [{"localhost", mysql5}]} ]},
2 comments:
автору большое спасибо. редко встретишь такое хауту, которое работает с колёс. единственное дополнение. пропущено описание создания БД ejabberd и назначение прав на неё. что-то типа create database ejabberd; GRANT ALL PRIVILEGES ON ejabberd.* TO "ejabberd"@"localhost" IDENTIFIED BY "password"; FLUSH PRIVILEGES; иначе у копипастеров сходу не получится.
не, поспешил. после пересборки с патчем для mod_logdb, после первой же перезагрузки работать не будет. и стартовый скрипт в rc.d тоже. найти причину легко. достаточно разобраться почему в системе два управляющих скрипта ejabberdctrl. один в /sbin и второй в /usr/local/sbin. также советую найти beam файл, отвечающий для запись сообщений в базу.
Post a Comment