EJabberd + JWChat + Apache2

Создан: 14.07.2008
Иванов Аркадий.

 

    Технология Jabber-а очень удобна для построения офисных систем мгновенной передачи сообщений. В отличие от ICQ и ей подобных, ваш сервер работает в вашей сети, а не где-то там далеко на другом краю света. И вы не зависите от причуд работы этих серверов, от Internet-провайдеров, от каналов связи за пределами офиса и вас никто не может заставить получать назойливый спам, как в ICQ, и вас никто не заставит менять версию софта насильственным образом в самый неподходящий момент, как это сделали разработчики ICQ со своими пользователями 1 июля 2008 года.

Программы-клиенты есть для всех операционных систем, например PSI.

 

Установка и настройка ejabberd.

Сам сервер мгновенной передачи сообщений устанавливается из пакета ejabberd. Инсталлятор для Linux для архитектуры x86 я брал с сайта разработки: www.ejabberd.im/download . На момент написания этой статьи я использовал версию сервера 2.0.0. В версии 2.0.1 содержались непреодолимые достоинства для того, что я описываю в этой статье, так что, её не рекомендую.

1. Запуском файла инсталлятора  ejabberd-2.0.0-rc1-linux-x86-installer.bin (не забудьте сделать его исполняемым) и доведением процедуры до победного конца, получаем каталог /opt/ejabberd-2.0.0 со всем полезным содержимым сервера.


Предположим, что наш  компьютер называется jabber.mycompany.ru.

2. Редактируем conf/ejabberd.cfg:

Оно должно содержать теперь следующие строки:

...
{hosts, ["jabber.mycompany.ru"]}.
...


 

В секции listen:

....
{5280, ejabberd_http, [
        {request_handlers, [
                   {["web"], mod_http_fileserver}
        ]},
         http_bind,
         http_poll,
         web_admin
        ]}
]}.
...


 

В секции modules:

...
  {mod_http_fileserver, [
                        {docroot, "/var/lib/ejabberd/www"},
                        {accesslog, "/var/log/ejabberd/webaccess.log"}
                        ]},
...



3. Запускаем jabber-сервер из каталога bin:

./ejabberdctl start


Если захотим в будущем прибить сервер, то:

./ejabberdctl stop
killall -9 epmd


4. Запускаем какого-либо клиента, например, PSI,  проверяем, что можем зарегистрироватьcя на jabber.mycompany.ru.

 

Установка и настройка jwchat.

Мелким недостатком многих систем мгновенной передачи сообщений является то, что для работы с ними необходимо устанавливать отдельную программу-клиента. Для многих таких систем, например для YAHOO, AOL, MSN, ... уже разработан доступ через броузер. Вот JWCHAT и является такой системой доступа к JABBER-серверу через броузер.

1. Скачиваем jwchat с jwchat.sourceforge.net/download.shtml
В момент написания этой статьи это был файл jwchat-1.0beta3.tar.gz

2. Создаём каталог /var/lib/ejabberd/www, раскрываем скачанный файл в этот каталог:

mkdir -p /var/lib/ejabberd/www
cd /var/lib/ejabberd/www
tar xzf  jwchat-1.0beta3.tar.gz

3. Переименовываем получившийся каталог:

mv jwchat-1.0beta3 jwchat



4. Переходим в каталог и переписываем все файлы с суффиксом ".ru" в такие же без суффикса, т.е. проводим руссификацию пакета:

cd jwchat
for a in $(ls *.ru); do b=${a%.ru}; cp $a $b; done

 

5. Редактируем config.js. Указываетм название нашего сайта:

var SITENAME = "jabber.mycompany.ru";

 

6. Редактируем config.js. Оставляем там только режим подключения к Jabber-серверу "http-bind":

var BACKENDS =
[
                {
                        name:"Native Binding",
                        description:"Ejabberd's native HTTP Binding backend",
                        httpbase:"/http-bind/",
                        type:"binding",
                        servers_allowed:[SITENAME]
                }
];

 

 

Настройка Apache2.

Для того, чтобы удобно обращаться к нашему jabber-серверу из броузера, в Apache2 надо сделать некоторые переделки:

1. Разрешим mod_proxy и mod_rewrite. Тут изобретатели дистрибутивов стараются кто во что горазд. Для этого у себя
в Alt Linux Master 4.0 в каталог  /etc/httpd2/conf/mods-enabled из каталога mods-available я переписал файлы:
proxy.conf
proxy.load
proxy_http.load
rewrite.load

2. В proxy.conf редактируем: 

 

      ProxyRequests Off

        <Proxy *>
                AddDefaultCharset off
                <IfModule authz_host_module>
                        Order deny,allow
                        Deny from all
                        Allow from all
               </IfModule>
        </Proxy>

 

3. В конфигурации для виртуального хоста с jabber-ом написал следующее:

<VirtualHost *:80>
    ServerName jabber.mycompany.ru
    DocumentRoot /var/lib/ejabberd/www/jwchat
    ErrorLog /var/log/httpd2/jabber-error_log
    CustomLog /var/log/httpd2/jabber_log common
    <Directory /var/lib/ejabberd/www/jwchat>
       Options  +Indexes +MultiViews
    </Directory>
    AddDefaultCharset UTF-8
    ProxyRequests Off
    ProxyPass /http-bind/ http://127.0.0.1:5280/http-bind/
    ProxyPassReverse /http-bind/ http://127.0.0.1:5280/http-bind/
    Alias /jwchat /var/lib/ejabberd/www/jwchat
    RewriteEngine on
    RewriteRule http-bind/ http://127.0.0.1:5280/http-bind/ [P]
</VirtualHost>

4. Не забываем рестартовать Apache2:

service httpd2 restart

 

Проверка.

 

Осталось только запустить браузер и в адресе указать: http://jabber.mycompany.ru