Установка ejabberd из исходного кода на freebsd

Установка ejabberd из исходного кода на freebsd

Скачиваем архив с сайта или сразу скачиваем по моей ссылкеejabberd 13.12:

Для начала качаем:
# wget http://www.erlang.org/download/otp_src_R16B03-1.tar.gz
# gunzip -c otp_src_R16B03-1.tar.gz | tar xf -
# cd otp_src_R16B03-1
Нужно проконфигурировать OTP:

# Bourne shell
$ LANG=C; export LANG

или можно:

# C-Shell
$ setenv LANG C

Но чтобы понять с какими параметрами нужно компилировать, читаем README или документацию на официальном сайте, я приведу пару примеров сборки:

$ ./configure --prefix=/opt/local
$ make
$ make DESTDIR=/tmp/erlang-build install
$ cd /tmp/erlang-build/opt/local
$     # gnu-tar is used in this example
$ tar -zcf /home/captain/my-erlang-build.tgz *
$ su -
Password: *****
$ cd /opt/local
$ tar -zxf /home/me/my-erlang-build.tgz
или
$ ./configure
$ make
$ make RELEASE_ROOT=/home/me/OTP release
$ cd /home/captain/OTP
$ ./Install -minimal /home/captain/OTP
$ mkdir -p /home/camptain/bin
$ cd /home/captain/bin
$ ln -s /home/captain/OTP/bin/erl erl
$ ln -s /home/captain/OTP/bin/erlc erlc
$ ln -s /home/captain/OTP/bin/escript escript
...
Скачиваем и компилируем сам ejabberd:
# mkdir /usr/local/src/ejabberd
# cd /usr/local/src/
# wget http://www.process-one.net/downloads/ejabberd/13.12/ejabberd-13.12.tgz
Распаковываем архив с исходным кодом ejabberd:

# tar -xf ejabberd-13.12.tgz

Переходим в папку и начинаем конфигурировать:

# cd /usr/local/src/ejabberd-13.12
# ./configure --enable-odbc
# gmake && gmake install

Джаббер сервер установлен, запустим его и проверим его запуск:

# ejabberdctl start
# ejabberdctl status

Остановить можно так:

# ejabberdctl stop

Для ejabberd нужно установить MySQL, подробная информацию можно найти на моем сайте:
Установка MySQL на FreeBSD

Нам нужно создать базу данных, я ее так и назову- ejabberd, но для начала зайдем в MySQL из под рута:
# mysql -u root -p
mysql> CREATE DATABASE 'ejabberd' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;Создаем так же пользователя:
mysql> 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;

БД мы создали, но необходимо  еще создать саму структуру базы. sql файл можно взять из архива /usr/ports/distfiles/ejabberd. Темплейт mysql.sql естественноГенерируем sslсертификат:

# opensslreq -new -x509 -nodes -newkeyrsa:1024 -days 3650 -keyout privatekey.pem -out server.pem cat privatekey.pem >> server.pem
# rm privatekey.pem
# mv server.pem ssl.pem
Теперь нужно настроить сам конфиг который лежит в /etc/ejabberd/ejabberd.cfg:
Коментарии начинаются со знака %. Для начала нужно прописать хосты, желательно что бы они совпадали с названием самого домена. Например jabber.linux-notes.org это будет  
{hosts, [[«jabber.linux-notes.org»]]}Прописываем теперь кто будет админом на сервере,если будет более 1, то пишем через запятую. Где 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

Добавляем сервис в rc.conf:
ejabberd_enable=»YES»
или простой командой:

# echo 'ejabberd_enable="YES"' >> /etc/rc.conf
# /usr/local/etc/rc.d/ejabberd start
ejabberd.cfg
{loglevel, 4}.
{hosts, ["jabber.linux-notes.org"]}.
{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, "/path/to/ssl.pem"}, starttls,
{access, c2s},
{shaper, c2s_shaper},
{max_stanza_size, 65536}
]},
%%
%% To enable the old SSL connection method on port 5223:
%%
%%{5223, ejabberd_c2s, [
%%                    {access, c2s},
%%                    {shaper, c2s_shaper},
%%                    {certfile, "/path/to/ssl.pem"}, tls,
%%                    {max_stanza_size, 65536}
%%                   ]},
{5269, ejabberd_s2s_in, [
{shaper, s2s_shaper},
{max_stanza_size, 131072}
]},
%%
%% ejabberd_service: Interact with external components (transports, …)
%%
%%{8888, ejabberd_service, [
%%                        {access, all},
%%                        {shaper_rule, fast},
%%                        {ip, {127, 0, 0, 1}},
%%                        {hosts, ["icq.example.org", "sms.example.org"],
%%                         [{password, "secret"}]
%%                        }
%%                       ]},
%%
%% ejabberd_stun: Handles STUN Binding requests
%% Установка ejabberd из исходного кода на freebsd 
%%{{3478, udp}, ejabberd_stun, []},
{5280, ejabberd_http, [
%%{request_handlers,
%% [
%%  {["pub", "archive"], mod_http_fileserver}
%% ]},
captcha,
http_bind,
http_poll,
web_admin
]}
]}.
{s2s_certfile, «/usr/local/etc/ejabberd/ssl.pem»}.
{auth_method, odbc}.
{odbc_server, {mysql, «localhost», «jabber», «jab», «jabber»}}.
{shaper, normal, {maxrate, 1000}}.
{shaper, fast, {maxrate, 50000}}.
{max_fsm_queue, 1000}.
{acl, admin, {user, «admin», «jabber.linux-notes.org»}}.
{acl, local, {user_regexp, «»}}.
{access, max_user_sessions, [{10, all}]}.
{access, max_user_offline_messages, [{5000, admin}, {100, all}]}.
{access, local, [{allow, local}]}.
{access, c2s, [{deny, blocked},
{allow, all}]}.
{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_create, [{allow, local}]}.
{access, muc, [{allow, all}]}.
{access, pubsub_createnode, [{allow, local}]}.
{access, register, [{allow, all}]}.
{language, «en»}.
{modules,
[
{mod_adhoc,    []},
{mod_announce, [{access, announce}]}, % recommends mod_adhoc
{mod_caps,     []},
{mod_configure,[]}, % requires mod_adhoc
{mod_disco,    []},
%%{mod_echo,   [{host, "echo.localhost"}]},
{mod_irc,      []},
{mod_http_bind, []},
%%{mod_http_fileserver, [
%%                       {docroot, "/var/www"},
%%                       {accesslog, "/var/log/ejabberd/access.log"}
%%                      ]},
{mod_last,     []},
{mod_muc,      [
%%{host, "conference.@HOST@"},
{access, muc},
{access_create, muc_create},
{access_persistent, muc_create},
{access_admin, muc_admin}
]},
%%{mod_muc_log,[]},
{mod_offline,  [{access_max_user_messages, max_user_offline_messages}]},
{mod_ping,     []},
{mod_privacy,  []},
{mod_private,  []},
%%{mod_proxy65,[]},
{mod_pubsub,   [
{access_createnode, pubsub_createnode},
{ignore_pep_from_offline, true}, % reduces resource comsumption, but XEP incompliant
%%{ignore_pep_from_offline, false},  % XEP compliant, but increases resource comsumption
{last_item_cache, false},
{plugins, ["flat", "hometree", "pep"]}  % pep requires mod_caps
]},
{mod_register, [
%%
%% After successful registration, the user receives
%% a message with this subject and body.
%%
{welcome_message, {"Welcome!",
"Hi.nWelcome to this XMPP server."}},
%%
%% When a user registers, send a notification to
%% these XMPP accounts.
%%
%%{registration_watchers, ["admin1@example.org"]},
{access, register}
]},
{mod_roster,   []},
%%{mod_service_log,[]},
{mod_shared_roster,[]},
{mod_stats,    []},
{mod_time,     []},
{mod_vcard,    []},
{mod_version,  []}
]}.
Установка ejabberd из исходного кода на freebsd завершена, у меня не получилось поставить именно из сорцов (исходников), но установил из портов. А не получилось все из-за того что я не смог нормально установить язык программирования ЕРЛАНД.

2 thoughts on “Установка ejabberd из исходного кода на freebsd

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.