Был у нас джаббер сервер, древний 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.
Теперь точно все.