Jabber-сервер для локальной сети. Openfire + MySQL под Windows
Почти в каждом офисе, насчитывающем 30 и более сотрудников, рано или поздно возникает необходимость реализовать систему мгновенного обмена сообщениями. Причем, желательно со списком контактов, хранящимся централизованно, на сервере, структурированном по отделам, с сохранением истории сообщений, удобным русскоязычным интерфейсом и прочими рюшечками, которые так ценит руководство. Что ж, это задача не из числа неподъемных. Я расскажу как ее реализовать на базе связки jabber-сервера Openfire и СУБД MySQL под управлением Windows.
Нам нужна выделенная машина с Windows (версии XP и старше), дистрибутивы Openfire и MySQL. Начнем с установки и настройки MySQL.
Установка MySQL
Выбор MySQL продиктован, по большей части, ее бесплатностью и надежностью. Это важные характеристики как для руководства (которое не хочет выделять деньги на удовлетворение своих прихотей потребностей организации в ИТ), так и для системных администраторов (которые не хотят использовать неблагонадежные системы, находящиеся в "группе риска").
Берем дистрибутив MySQL с сайта Sun (http://www.sun.com/software/products/mysql/getit.jsp) и запускаем установщик.
Мы видим типичный диалог между пользователем и ПО. Жмем "Next"
Выбираем тип установки "Typical"
и запускаем инсталляцию.
По ее окончании, установщик предложит немедленно приступить к настройке и регистрации сервера в Sun. Первое жизненно необходимо, второе – по желанию.
Конфигуратор сервера MySQL – опять же привычный нам Wizard.
Так как мы создаем решение, которое будет годами радовать сотрудников нашей организации, настраивать сервер мы будем детально.
Мастер спросит нас о типе машины, на котором будет работать сервер MySQL. Выбираем вариант "Server Machine". Вариант для разработчика не подойдет, т.к. при росте базы и количестве обращений к ней, сервер будет "захлебываться" от недостатка памяти, отводимой для него. Выделенный сервер MySQL, в свою очередь, радостно съест все системные ресурсы вне зависимости от реальной нагрузки на него.
Тип базы — "Multifunctional".
Я устанавливаю MySQL на виртуальную машину с одним жестким диском, поэтому выбор места хранения баз данных у меня ограничивается системным разделом. В общем случае (при установке MySQL на отдельный сервер) рекомендуется хранить базы данных в отдельной директории на несистемном разделе.
Мастер спросит о планируемом количестве конкурентных соединений с базой данных. По большому счету, для jabber-сервера более чем достаточно варианта DSS, но в расчете на рост организации лучше перестраховаться и установить вручную сотню-другую допустимых соединений. Это употребит больше памяти, но обеспечит стопроцентную доступность базы данных для клиентов.
Далее мастер спросит, следует ли разрешить соединяться с базой данных по сети и, если да, то какой порт использовать для соединения. Безусловно следует. Причем, рекомендуется использовать порт по умолчанию, т.е. 3306. Можно сразу же добавить этот порт в исключения для брандмауэра (чекбокс "Add firewall exception for this port"). У меня на виртуальной машине брандмауэр отключен, так что я оставил опцию нетронутой. Чекбокс "Enable Strict Mode" рекомендуется включить. Включаем не вникая.
Следующий остановочный пункт – кодировка, в которой будут храниться таблицы данных. Весь цивилизованный мир планомерно переходит на UTF-8. Мы не будем отставать.
После выбора кодировки баз данных, мастером будет предложено установить MySQL как службу Windows и инициировать его автоматический запуск при загрузке системы, а также добавить в переменную PATH пути с исполняемыми файлами MySQL. Первое нам нужно для того, чтобы не сосредотачивать внимание на запуске MySQL после каждых выключения или перезагрузки сервера, а второе для того, чтобы иметь возможность выполнять команды MySQL из командной оболочки Windows, не утруждая себя указывать расположение исполняемых файлов MySQL вручную.
Наконец, настало время выбрать пароль для root.
И выполнить сценарий конфигурирования.
Установка закончена, сервер MySQL готов!
Создание базы данных MySQL
Управлять MySQL можно как из командной строки, так и с помощью графических средств администрирования (например, phpMyAdmin). Так как нам предстоит всего-навсего создать базу данных, ограничимся командной строкой:
Для любителей смотреть сайты без графики:
mysqladmin –user=root —password=ваш-надежный-пароль create im
Я создал базу данных под названием "im" (от англ. instant messaging). Вы же вольны придумать ей любое название.
Установка Openfire
Пришло время устанавливать непосредственно сам jabber-сервер. Вообще-то их выбор не ограничивается одним вариантом, но Openfire на голову выше остальных по простоте развертывания и удобству администрирования. Поэтому качаем дистрибутив с http://www.igniterealtime.org/projects/openfire/ и приступаем к установке:
Этот процесс настолько тривиален, что приводить больше двух скриншотов не вижу смысла.
Запускаем…
Итак, открылась консоль Openfire. В ней выводится информация о состоянии сервера.
Запускаем браузер и заходим на http://127.0.0.1:9090
Нас приветствует установщик сервера Openfire. Выбираем язык (да-да, English. Официальной русификации Openfire пока не существует. Да и не очень-то она нужна) и жмем "Continue".
В настройках сервера необходимо указать домен (обычно указывается имя или IP-адрес компьютера, на котором установлен Openfire, но можно сделать красивее, и обозвать домен вычурным вариантом вроде Corporate-Messaning-System.local).
Примечание: на скриншоте я указал домен "workspace", а потом изменил его на "test", но напрочь позабыл переснять скриншот. А, между прочим, эта информация нам еще пригодится при настройке клиентов. Так что запоминайте: я выбрал домен "test"!
Далее нужно выбрать базу данных: стандартный вариант (наш, с внешней базой данных) или корявый (использовать встроенную базу данных Openfire. Однажды я так уже делал. Через 3 месяца пришлось переустанавливать Openfire вместе с базой данных, так как она перестала инициализироваться).
Так как мы выбрали вариант с внешней базой, необходимо настроить коннектор.
Database Driver Presets – MySQL
JDBC Driver Class – по умолчанию
Database URL – jdbc:mysql://127.0.0.1:3306/im
Вот где нам пригодился порт подключения к базе, выбранный при настройке MySQL, а также имя базы данных (у меня — "im", как упоминалось выше).
Связка username/password – это учетная запись root сервера MySQL, настроенная мастером конфигурирования MySQL.
Также меняем значение "Maximum Connections" на 100.
Если вы все сделали верно, то вам будет предложено выбрать способ заведения пользовательских аккаунтов и групп для клиентов сервера Openfire. Вариантов всего 3:
1) Ручное управление. Вариант хорош тем, что список контактов будет максимально "чист": никто не появится на сервере просто так, без вашего ведома. Кроме того, имена пользователей и их логины тоже можно будет гибко настраивать. Да, это создаст еще один поинт, на который администратор будет отвлекаться по мере необходимости. С другой стороны… читаем дальше.
2) LDAP. Моя сеть построена на базе Active Directory. Конечно, было бы очень удобно подтягивать пользователей и группы из AD, имея только одну точку администрирования. Но, к сожалению, Openfire подтягивает их… кривовато. Кроме учетных записей пользователей, регистрируются доменные компьютеры, Builtin-группы и прочий трэш. В итоге одна точка администрирования оборачивается в те же две, только без права вычистить мусор из базы Openfire. Таким образом, сложная AD хоть и интегрируется в Openfire, но неудобоваримо.
3) Интеграция из Clearspace. Маловероятно, что в вашей организации есть подписчики Clearspace, поэтому вариант даже не рассматриваем.
Указываем e-mail и пароль администратора…
и завершаем установку.
Настройка Openfire
После окончания установки сервера Openfire, необходимо вернуться в консоль (значок лампочки в трее) и перезапустить сервер (Stop – Start). Если этого не сделать, вас может не пустить в веб-интерфейс управления сервером: будет высыпаться сообщение об ошибке авторизации. После перезапуска заходим в админку Openfire в браузере:
Логинимся и попадаем в консоль администратора.
Я не буду вдаваться в тонкости настройки сервера. Нам нужно максимально быстро развернуть корпоративное решение для обмена мгновенными сообщениями, чем мы и займемся. Первым делом создадим пользователя. Я создал учетную запись воображаемому Иванову Ивану.
К слову, советую серьезно отнестись к полю "Name", т.к. именно его значение будет использоваться в контакт-листе клиента jabber.
Теперь создадим группу. Скажем, для бухгалтерии.
Добавим в нее пользователя IvanovII.
И расшарим группу для всех клиентов нашего сервера. Это лишит пользователей необходимости вручную заполнять контакт-листы.
В принципе, процесс можно продолжать, пока на сервере не будут организованы все целевые пользователи и группы.
Подключение клиентов
Самое время приступать к подключению пользователей к нашему серверу. Для этого необходим jabber-клиент, коих существует более чем много. Однако, 3 варианта все же предпочтительнее. 1-й – Spark (http://www.igniterealtime.org/projects/spark/index.jsp) от авторов самого Openfire. По правде говоря, я ожидал от него большего. Но он оказался громоздким и нестабильным. То есть именно таким, который мне не подходит. 2-й – QIP Infinum (http://qip.ru/ru/pages/download_infium_ru/). Главное преимущество QIP – привычный интерфейс. Он уже пару лет является стандартом де-факто в качестве клиента ICQ для русскоязычных пользователей, поэтому большинству сотрудников вашей организации не придется изучать новый продукт. Но на этом его плюсы заканчиваются, и начинаются минусы: навязчивая реклама, не совсем корректная работа (часто отваливается от сервера на базе Openfire) и неумение делить контакт-лист личной ICQ и корпоративного jabber’а. 3-й – Pandion (http://www.pandion.be/). ИМХО, идеальный клиент для организации корпоративного обмена сообщениями. Бесплатный, компактный, дружелюбный, симпатичный, Pandion делает именно то, что от него требуется. Я буду рассматривать подключение к серверу именно Pandion-клиентов.
Установка клиента тривиальна. В самом конце рекомендую поставить галочку в чекбоксе на автоматический запуск клиента при загрузке. Таким образом, никого из пользователей корпоративной сети не придется принуждать запускать его вручную.
Скачали, установили. Запускаем:
Pandion сразу попросит ввести данные пользователя. Вводим имя пользователя нашего Ивана Иванова, через @ вводим домен (помните мой комментарий по поводу неверно отснятого скриншота? Вот где нам пригодится эта информация о домене. В моем случае это, напоминаю, test) и жмем ссылку "Настройки Соединения".
В этом окошке предлагается ввести адрес и порт сервера, выбрать тип шифрования, метод аутентификации и прокси-сервер. В моем случае адрес сервера – 192.168.1.14. Так как я предпочитаю безопасный обмен сообщениями и выбираю тип шифрования SSL, порт сервера тоже придется указывать соответствующий: 5223 (в сводке информации о сервере Openfire он указан).
Жмем Ок, и в предыдущем окошке нажимаем "Вход".
Ура, мы внутри нашей jabber-сети.
Однако хотелось бы увидеть результат наших трудов по созданию и расшариванию групп и пользователей. На другом клиентском компьютере устанавливаем Pandion и логинимся на сервер администратором (не забываем настроить соединение с сервером и шифрование):
Вот уже 2 клиента в нашей сети. Как видите, в контакт-листе администратора автоматом появилась группа "Бухгалтерия", в которой засветился пребывающий он-лайн Иван Иванович Иванов. Отправим ему сообщение:
А он его с наслаждением прочитает:
На этом настройку клиентов можно закончить.
2 комментария:
1) в окне логона ставьте пользователям галочки "Запомнить мой пароль" и "Подключаться автоматически". Вкупе с автозагрузкой Pandion, это позволит пользователям вообще забыть о необходимости как бы то ни было задумываться о клиенте jabber, а просто пользоваться его благами, как они пользуются доступом в Интернет, корпоративным файл-сервером или рабочими базами данных;
2) обратите внимание на опечатку в кнопке отправки сообщения. "Отравить" – это как-то не айс. Но фиксится. В директории C:Program FilesPandionlanguages найдите файл ru.xml и поиском отыщите слово "отравить". Можно поправить текст и распространить правильную копию Pandion по сети.
Последние штрихи
Без дополнительной настройки Openfire запускается как приложение. То есть после перезагрузки или выключения сервера необходимо заходить в Windows и вручную запускать его. Это не самый подходящий вариант. Присвоим Openfire статус службы и настроим ее автозапуск. Для этого на сервере Openfire выполняем команды:
Для любителей смотреть сайты без графики:
cd "program filesopenfirebin"
openfire-service.exe /install
openfire-service.exe /start
И проверяем, что Openfire появился в оснастке управления службами и стартует автоматически:
Вуаля. Еще одна маленькая победа.