Tags: openfire

Робот

Молодец и умничка или как корректно скопировать Openfire на новый сервер

Это я сегодня такой хороший :-)
А всё потому, что добил таки давно мучивший меня вопрос: "Как корректно скопировать jabber-сервер Openfire на другой компьютер (или обновить на нынешнем компьютере), и не потерять при этом настроек?"
В руководстве написано кратко, ну, для умных: "1. Остановите сервер командой stop. 2. Скопируйте установочный каталог Openfire. 3. Сделайте копию базы данных (Примечание: если вы используете встроенную базу данных, то это уже выполнено в п.2)."

И вот с этим-то я и бился. Сначала искал, где же он, этот установочный каталог? Не-ет, не C:\Program Files\Openfire! Мало того, что /usr/share/openfire, так ещё и компоненты раскиданы по разным каталогам, а в установочном только линки на них. Ну, ничего, это я понял, заодно понял, что линки обозначаются в консоли красивеньким голубым цветом, в mc они обозначаются тильдой (это вот такая: "~"). До кучи выяснил, куда писать настройки прокси, чтобы apt-get мог ходить в интернет за пакетами.

Копируется всё, кстати, одной простой командой:
cp -LRp ./openfire/ /home/%username%/arhiv/
(L - следовать линкам, R - рекурсивно, с подкаталогами, p - сохранять права на файлы и каталоги)

Как же я намаялся с этими пермишенами! Это вот которые должны сохраняться ключом -р.
Конечно, просветлённые гуру вполне могут обозвать меня идиотом, но я таскал скопированные файлы сначала к себе на комп, а потом уже со своего на целевой, на котором ставится эксперимент по "поднятию" новой копии Openfire. И в процессе переезда все права у файлов заменялись на что-то непотребное! Во-первых, у них у всех владелец смненился с openfire на мою учётку, во-вторых все файлы стали исполняемыми! А это непорядок.

Но и это, оказывается, можно победить, если предварительно затолкать всё в архив на исходном компьютере. Правда, zip-а там не нашлось, но меня и tar вполне устроил.

Значит, что мне пришлось сделать в итоге:
1. Логинимся на компьютер источник ssh username@jabber
2. Даём команду остановить наш маленький, но гордый джаббер-сервер: sudo /etc/init.d/openfire stop
3. Переходим в каталог Openfire: cd /usr/share/openfire
4. Копируем весь Открытый Огонь (яндекс перевёл, я-то чё?): cp -LRp ./openfire/ /home/username/arhiv/
5. Запускаем сервер обратно, а то народ не сможет общаться: /etc/init.d/openfire start
6. Переходим в каталог с архивом: cd /home/username/arhiv
7. Создаём архивный файл: sudo tar -cf openfire.tar ./openfire/ (sudo - потому что владельцем является openfire и простому пользователю архив создать не удастся)
8. Можно отключаться от компьютера-источника.
9. Перенести архив .tar на целевой компьютер. У меня получилось только подключиться по samba к источнику, скопировать к себе. Потом по samba же скопировать на целевой.
10. Остановить Openfire на целевом компьютере: sudo /etc/init.d/openfire stop (естественно, предварительно его надо там установить, но это почти просто)
11. Распаковать .tar архив. Мне помог Midnight Commander, но можно и в консоли, там не сложно.
12. Владелец у файлов всё-таки слетел, но это чинится одной командой: sudo chown -R openfire: openfire (выполнять в каталоге с распакованным openfire)
13. Скопировать все каталоги по местам. МС в этом вопросе рулит.
14. Запустить Openfire командой: /etc/init.d/openfire start

Всё. Правда, я на всякий случай перезагрузил целевой компьютер полностью. И получил рабочую копию своего сервера, но уже не 3.6.4, а 3.7.0, что не может не радовать.

Теперь можно и на живой сервер накатывать новую версию. Хотя, если честно, не мешало бы там обновить всё, начиная с операционной системы. А то у меня там до сих пор Ubuntu 7.04, а это 2007 год. Может, стоит попробовать?

Так, поправочка в п. 13. Скопировать толкьо каталог "embedded-db", этого достаточно для восстановления списка пользователей, групп и даже чат-комнат.

Поэтому, с учётом поправки, лучше установить Openfire, провести первоначальную его настройку с помощью мастера и только потом залить базу пользователей. И ещё важное дополнение - в мастере первоначальной настройки дать серверу имя то же, что было изначально, иначе клиенты не смогут коннектиться. По другому я решить не смог эту проблему.
Собачка

После сборки обработать напильником

Продолжаю рассказыввать про свой карманный сервер мгновенных сообщений.

Сегодня я его унёс со стола в кабинете в серверную, чтобы он мне постоянно под ухом не жужжал. Пусть теперь жужжит вместе с остальными, может, ему там лучше будет. Мне-то точно лучше.

Сервер Openfire, к счастью, оказался достаточно прост в установке и настройке, даже несмотря на английский язык. Запустил установочный пакет, он чего-то пошуршал, поморгал буковками на экране, потом сказал, что установился и предложил пойти мне для настройки в веб-интерфейс. То есть настраивать его можно с другой машины в сети через любимый браузер. Что я и сделал. Настройки там достаточно простые, а, главное, понятные. Что непонятно, можно просто не трогать, оно и так работает. Видимо, это для более сложных случаев, не таких, как у меня.

Пользователей можно создавать на сервере, а можно регистрироваться прямо из любого джаббер-клиента. Например Pidgin, которым я пользуюсь. Потом можно этих пользователей объединять в группы и с помощью одной хитрой галочки в настройках сервера эти группы будут сразу подгружаться в ростер новым (и существующим тоже) пользователям. То есть всё красиво и хорошо.

Всё, кроме одной закавыки. У нас пользователи привыкли пересылать друг другу файлы прямо через локальную аську. Причём, как выяснилось, шлют целыми каталогами, сотнями мегабайт. То есть берут компашку с музыкой - и отправляют. Хотя, когда я ставил асько-сервер, я такого даже и не предполагал. Задача была сделать систему обмена сообщениями, а файлы, я думал, можно и по почте послать. По локальной разумеется. Но... В общем, обмен файлами стал едва ли не более важной фичей локальной аськи.

Джаббер тоже умеет передавать файлы. В теории. На практике всё немного сложнее, как я поонял из различных текстов в интернете. Но, вроде как внутри локальной сети проблем возникнуть не должно было, так как у каждого компьютера свой реальный адрес и можно передавать файлы напрямую между клиентами. Угу... Чтобы всё получилось с первого раза? Соединение-то они устанавливали, да вот только файлы не передавались. Я и разными клиентами пробовал, точнее, двумя - Pidgin и Gajim. В разных сочетаниях: с Пиджина на Пиджин, с Гаджима на Гаджим, с Пиджина на... Ну, вы поняли. Всё бесполезно.

Это вчера. А сегодня решил поменять направление передачи. Не с моего компьютера (Linux) на тестовый (Windows), а наоборот. И файлик передался! То есть передача в одну сторону работала - с Windows на Linux. А наоборот никак :(

Чтобы не развозить тут всё слишком долго, скажу коротко - “виноват” оказался линуксовый фаайервол, iptables. По умолчанию входящие соединения запрещены. Пока не разрешил входящие с нашей локалки - файлы не передавались. Оказывается, когда я пытаюсь отправить файл на другой компьютер, соединение открывается не с моей стороны. Принимающая сторона пытается открыть порт на передающем компьютере. А iptables отрубал соединение. Вот оно как, оказывается...

Теперь зато всё работает, всё передаётся.
Собачка

Openfire и все, все, все

Вообще говоря, локальный сервис сообщений у нас есть. В своё время я его запустил на машинке с Windows 2000, программа называется SIQ. Это такой карманный сервер сообщений на базе ICQ, то есть протокола Oscar. Работает он себе уже который год, все довольны. Но, вот незадача, нормально им пользоваться можно только используя специально заточенную версию Миранды, которая идёт в комплекте с сервером. Заточена она автором для каких-то непонятных целей.

Всё бы ничего, но в Linux это счастье (Miranda) работает, естественно, только через WINE. Поэтому работает немножко странно. Например, может молча вылететь, оставив в трее “зелёного человечка”. И всё. То есть я думаю, что Миранда запущена, а мне просто никто не пишет, а на самом деле никто до меня и достучаться не может.

Поэтому (ну и не только) подумалось - а не завести ли свой карманный джаббер-сервер? Завести. Тем более, что недавно у меня завёлся бесхозный компик. Старый, конечно, P II 350 МГц процессор, 128 Мб памяти, 4 Гб жёсткий диск. GUI, конечно., не потянет, но для небольшого сервера и работы в консоли, говорят, должно хватить.

Первым дистрибутивом, который я туда пытался поставить, была Русская Федора 10.1. Она у меня теперь просто текущая на рабочей машине, ну и самый новый дистр из имеющихся в наличии. Не завёлся даже на самом начале установки.

Второй был АСП 12 Карбон, в девичестве Федора 7. Предыдущий дистриб, с которым я общался и дома, и на работе. Вполне нормально, кстати, общался, он мне нравился. Он даже установился, но после перезагрузки написал “GRUB” и молча моргал курсором. Грустно.

Наконец дошла очередь и до Убунту. Вообще говоря, именно на Убунту-сервере работает Openfire у человека, который меня и подтолкнул к экспериментам. После его фразы о том, что на такой же машинке бежит джаббер-сервер и я решил попробовать. Убунта не сказать, что шустро (на таком железе-то), но установилась. А после перезагрузки... Правильно! Тоже сказала, что я с ней груб и молча моргала курсором. Хотя, нет, не молча. Еще было написано “error 2”. Оказывается, надо было жёсткий диск ставить как Primary Master, а он был Slave. Хотя, казалось бы...

Первый день построения собственного Linux-сервера закончился моим воплем: “Кто я? Где я, чёрт возьми?!”
whoami && pwd

Это было вчера. Сегодня я для начала решил настроить удалённый доступ к своему серверочку, чтобы можно было спрятять его куда-нибудь в дальний угол, подальше от недобрых глаз начальства. Почему-то я думал, что эта возможность должна быть по умолчанию. Ну это же сервер! Наивный, ssh мне ответил “connection refused”. Оказывается, нужно постваить ssh-server:

sudo aptitude install openssh-server

И он ещё попросил подключить обратно установочный диск, без него отказывался работать. Но зато теперь я могу подключиться к консоли сервера практически с любой машины в сети.

Вот и добрались, собственно, до основного. Как объяснили мне более опытные в этом деле люди, сначала нужно установить в систему Java Runtime Environment, а потом уже сам джаббер-сервер Openfire. Вот с явой-то я и попрыгал, если честно. Посоветовали мне ставить её из репозитория, но забыли сказать как :)Выяснилось, что примерно так:

sudo aptitude install sun-java5-jre

Вот только в репозиториях такого пакета, как я не бился, не нашлось. И даже похожего на него. Добавление специального репозитория

deb http://dk.archive.ubuntu.com/ubuntu/ feisty universe multiverse

не помогло. Видимо, Ubuntu 7.04 уже не поддерживается.

Добрые люди на джуйке подсказали, где можно скачать готовый пакет явы специально для убунты: https://launchpad.net/ubuntu/feisty/i386/sun-java5-jre/1.5.0-11-1ubuntu2
Вот отсюда я его при помощи wget (первый раз, кстати, тоже пользовался) и взял. На этом свои развлечения в консоли на сегодня закончил. Завтра, если руководство злобное не озадачит чем-нибудь неприятным, продолжу свои изыскания.