Как я обновлял Openfire

Был у нас джаббер сервер, древний Openfire, работал еще на RHEL3. Работал около 7 лет, пришло время обновить и железо (которое стало пару лет назад виртуальным), ОС и всю начинку.

Так как сервер не критичный для работы, решил потестить заодно и Ubuntu 16.

Проблемы начались почти сразу. Openfire приложение на Java и требует OpenJDK 7. В репозиториях только 8 и 9. В пакете Openfire жесткая проверка на версию, и если не 7 — то отбой, кина не будет. Пришлось сделать фейковый deb пакет который говорил что он openjdk7, а фактически работала 8 версия.
Пакет встал. Немного позже, появился репозиторий с реальной openjdk-7 для 16 версии.

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-7-jdk

Так как опыт работы с Openfire был большой, решил отказаться от его внутренней базы HSQLDB. В практике были моменты, когда надо ручками в базе пошерстить, но база для меня экзотическая в консоли работать с ней я не смог комфортно. Решил в этот раз вынести все на класический MySQL. Если все делать, как предлагает инсталятор, то у вас хоть и будет работать пересылка сообщений, но поддержка русского будет критически кастрированной.

  • В базе будут лежать одни вопросики
  • Message Archiving не будет работать
  • Названия групп будут вопросиками

Поэтому. Первые шаги при установке.

1. Создать базу данных

create database openfire;

2. Сменить ей кодировку, сам Openfire этого делать не будет. И будет все в latin1, даже если вы выберете Russian.

use openfire;
alter database character set utf8;
alter database collate utf8_general_ci;

3. Когда инсталлятор запросит строку подключения к БД. Укажите\измените в ней опции для поддержки юникода.

jdbc:mysql://127.0.0.1:3306/openfire?rewriteBatchedStatements=true&encoding=UTF-8&useUnicode=true&characterEncoding=UTF-8

Еще замечание. Если вы захотите использовать только openjdk-7 из указанного выше репозитория, то Openfire будет чудить и практически не работать. Я сменил JAVA_HOME в стартовом скрипте (/etc/init.d/openfire) и указал на 8 версию. Все работает отлично.

Далее. Плагин User Import/Export.
Из коробки перестал работать. При импорте верного XML в ответ вам будет только «The import file does not match the user schema.»

А проблема в том, что в файле /var/lib/openfire/plugins/userimportexport/classes/wildfire-user-schema.xsd.xml в описании схемы 1 «ненужная» буква.

Было

<xs:schema xmlns:xs="http://www.w3c.org/2001/XMLSchema" elementFormDefault="qualified">

Стало

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

После этого все работает.)

Ну и еще, если у вас несколько серверов openfire в сети, и если они были подружены между собой, и если они разных версий (3.x и 4.x), то скорее всего они перестанут друг друга понимать ((. Либо понимают в одну сторону, пришлось апгрейдить всех до 4.0.2.

Теперь точно все.