Автор: Правдин Владимир Юрьевич
Для справки:
Jabber - открытый протокол для быстрого обмена сообщениями и
информацией о присутствии между любыми двумя абонентами в Интернет. Первым применением
технологии Jabber стало появление асинхронной и расширяемой платформы для обмена мгновенными
сообщениями и сети обмена мгновенными сообщениями (англ. IM - Instant Messaging), cходной по
возможностям c коммерческими системами IM, такими, как AIM, ICQ, MSN и Yahoo, также на базе
использования технологии Jabber построена новая система обмена мгновенными сообщениями компании
Google - Google Talk. В основе открытого и постоянно улучшаемого протокола XMPP лежит язык XML,
а основным преимуществом этой технологии является распределённость, как в SMTP, и поддержка шлюзов в другие IM-сети.
Wikipedia
Для установки понадобится:
Packages:
- readline-5.1pl1nb1.tgz
- libidn-0.6.3.tgz
- postgresql-8.1.4.tgz
- gmake-3.80nb5.tgz
- perl-5.8.7nb8.tgz
- postgresql81-plperl-8.1.4.tgz
- pcre-6.6.tgz
Source:
- jabberd-2.0s11.tar.gz
Также возникнет необходимость в двух паролях -
Password1 и
Password2.
Сервер
Jabber был взят не из пакетов, потому что по умолчанию пакет скомпилирован на
использования MySQL и при установке через ftp тянет за собой всё ему необходимое, в том числе и MySQL.
Для чего нужно два пароля поймём при редактировании конфигурационных файлов jabberd.
Итак, начнём. Сначала необходимо установить packages:
pkg_add readline-5.1pl1nb1.tgz
pkg_add libidn-0.6.3.tgz
pkg_add gmake-3.80nb5.tgz
...
pkg_add postgresql81-plperl-8.1.4.tgz
Теперь принимаемся за source:
gunzip jabberd-2.0s11.tar.gz
tar -xvf jabberd-2.0s11.tar
cd ./jabber-2.0s11
./configure -disable-mysql -enable-pgsql -whit-extra-include-path=/usr/pkg/include \
-with-extra-library-path=/usr/pkg/lib -exec-prefix=/usr/pkg -prefix=/usr/pkg
make
make check
make install
Вообщем-то с установкой всё.
Теперь перейдём к конфигурации нашего сервера.
Для начала необходимо запустить
PostgreSQL. Сделаем так как советуют в [1]:
- Напишем небольшой скрипт (MyPostgreSQL) для запуска и остановки PostgreSQL.
Добавим его в /etc/rc.d
- Инициализируем БД:
su -l pgsql
initdb -D -i /usr/pkg/pgsql/data
- Запустим с помощью нашего скрипта PostgreSQL:
/etc/rc.d/MyPostgreSQL start
Работа с
PostgreSQL:
- Создадим нового пользователя (jabberd2) базы данных (jabberd2):
su pgsql
createuser jabberd2 -W
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) n
Password:"Password2"
Retype password:"Password2"
- Создадим необходимые таблицы для нормальной работы Jabberd:
psql -h localhost -U jabberd2 -d template1
Welcome to psql 8.1.4, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
template1=> \i /path_to_source/jabber-2.0s11/tools/db-setup.pgsql;
...
Jabberd2=>\q
Отредактируем конфигурационные файлы
Jabberd:
-
router-user.xml
<secret>secret</secret> изменим на <secret>Password1</secret>
Обратите внимание, что <name>jabberd</name> должно быть именно jabberd, а не jabberd2.
-
router.xml
<secret>secret</secret> изменим на <secret>Password1</secret>
-
resolver.xml
<secret>secret</secret> изменим на <secret>Password1</secret>
-
sm.xml
<id>localhost</id>изменим на <id>jabber.pupkin.ru</id>
<!-- Username/password to authenticate as -->
<user>jabberd</user> <!-- default: jabberd -->
<pass>Password1</pass> <!-- default: secret -->
<driver>mysql</driver><driver>pgsql</driver>
В секции <pgsql> пропишем Password2.
<!-- Database username and password -->
<user>jabberd2</user>
<pass>Password2</pass>
-
s2s.xml
<secret>secret</secret> изменим на <secret>Password1</secret>
-
c2s.xml
<secret>secret</secret> изменим на <secret>Password1</secret>
<id>localhost</id>изменим на <id>jabber.pupkin.ru</id>
<module>mysql</module> изменим на <module>pgsql<module>
С редактированием файлов конфигурации покончено. Осталось только добавить группу и пользователя jabberd:
vi /etc/group
mkdir /var/jabber
chmod 700 /var/jabber
useradd -g jabberd -d /var/jabber -s /bin/sh
chown jabberd /var/jabber
Раскомментируем строку
su -l jabberd -c "/usr/pkg/bin/jabberd &" из файла MyPostgreSQL.
Файл MyPostgreSQL
#!/bin/sh
#To start/stop PostgreSQL 8.1.4 + Jabberd-2.0
SERVER=/usr/pkg/bin/postmaster
PG_CTL=/usr/pkg/bin/pg_ctl
PGDATA=/usr/pkg/pgsql/data
OPTIONS=-i
LOGFILE=/usr/pkg/pgsql/data/postmaster.log
case "$1" in
start)
echo "Starting PostgreSQL..."
su -l pgsql -c "nohup $SERVER $OPTIONS -D $PGDATA >$LOGFILE 2>&1 &"
#su -l jabberd -c "/usr/pkg/bin/jabberd &"
;;
stop)
echo -n "Stopping PostgreSQL..."
su -l pgsql -c "$PG_CTL -D $PGDATA stop"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0
Литература:
Стоунз Р., Мэтью Н.
- PostgreSQL. Основы. - Пер. с англ. - СПб: Символ-Плюс, 2002. - 640с., ил.
ISDN 5-93286-043-X