В своей предыдущей статье я раскрыл, как построить видеоконференцию по протоколу H.323 на основе свободно распространяемого ПО и получил довольно много отзывов и критики. В частности, довольно большое количество читателей усомнились в принципиальной важности использования столь сложного сигнального протокола для большинства задач — действительно, в наше время видеосвязь нужна не только для соединения сложных профессиональных систем, таких, как Tandberg или Polycom, иногда людям нужно “просто початиться”, или размеры организации, в которой требуется установить связь, слишком малы для внедрения чего-то трудоёмкого или дорогостоящего. Тогда к нам на помощь приходит технология flash и отличное решение с открытым кодом — проект OpenMeetings.
Основными чертами нашей системы видеосовещаний являются следующие:
Обеспечение многоточечной видеосвязи.
Отсутствие необходимости установки на компьютерах пользователей дополнительного ПО. Сообщение с сервером осуществляется при помощи обычного браузера.
Совместная работа на «белой доске» и с офисными документами.
Невысокие затраты на оборудование: сервер на Pentium 4 2GB RAM способен обрабатывать не менее 100 соединений.
Гарантированная надёжность: cрок наработки ПО сервера на отказ не менее 48 часов.
Интеграция с продуктами Microsoft.
Возможность записи совещания.
Использование адресной книги предприятия по протоколу LDAP.
Рассылка приглашений на совещания.
Инструкции на русском языке.
Серверное решение основано на следующих компонентах:
MySql — база данных;
Apache Tomcat — веб сервер;
Red5 — Flash медиа-сервер;
OpenOffice.org — сервер документации;
Openmeetings — веб приложение, написанное на java и скриптовом языке.
Соединение с сервером осуществляется по протоколам http (порт 5080), rtmp (порт 1935), rtmpt (порт 8088). Для того, чтобы сервер был виден в сети Интернет, достаточно прокинуть эти три порта на компьютер за роутером или брэндмауром.
Конечно же, проще всего дать ссылку на описание установки уже собранного кода по умолчанию, благо оно есть, и не отвлекать вас более, но я решил пойти по чуть более изощрённому пути. Во-первых, описания установки, как и во всех подобных решениях с открытым кодом не изобилуют подробностями, во-вторых, очень часто требуется внести минимальные изменения по собственной прихоти, или же пожеланиям заказчика, и тогда простой установкой откомпилированного кода не обойтись. С другой стороны, проект достаточно большой, и всё невозможно описать в пределах одной статьи, не превращая её в трактат, поэтому сегодня я ограничусь следующим — в статье будет описано, как получить исходники сервера, отладить и собрать серверный код у себя на компьютере под управлением ОС Windows XP, а также протестировать его работу, а уж как его установить на сервере клиента или вашем собственном, вы разберётесь сами. Работу же над клиентской частью оставим в виде факультатива.
Итак, начнём с необходимого инструментария.
1.SVN клиент — TortoiseSVN 1.6.0
downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.6.0.15855-win32-svn-1.6.0.msi?download
2.Среда разработки Java-приложений — Eclipse IDE for Java Developers
www.eclipse.org/downloads
3.Java Development Kit
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u13-oth-JPR@CDS-CDS_Developer
4.Flash-сервер на основе ПО с открытым кодом — Red5
www.red5.org/downloads/red5/0_8_RC2/setup-Red5-0.8.0-RC2.exe
5.База данных — MySQL
dev.mysql.com/downloads/mysql/5.1.html#win32
6.Пакет OpenMeetings с уже собранным бинарным кодом (одолжить клиентскую часть)
openmeetings.googlecode.com/files/openmeetings_0_7_rc2.zip
7.Пакет утилит Sysinternals
download.sysinternals.com/Files/SysinternalsSuite.zip
Для начала мы получим, и соберём серверный код. Для этого после установки TortoiseSVN, создадим папку на диске и сделаем туда SVN Checkout последней (или какой-либо другой) ревизии кода.
В качестве ссылки на репозиторий указываем
Далее ставим ранее скачанный Eclipse, и в workspace создаём новый проект, назовём его OpenMeetings, и импортируем туда файловую систему, указав в качестве основной нашу свежесозданную папку:
Обращу ваше внимание, что импортируется содержимое, а не сама папка, чтобы сохранить совместимость со структурой каталогов в Eclipse.
Делаем Window->Show View->Ant и в открывшемся окне, нажав на «Add buildfiles» добавляем билд-файл build.xml, получаем нижеследующую картину:
Теперь устанавливаем JDK, его же надо зарегистрировать в Eclipse для последующего использования — это делается посредством добавления пути к установленному JDK в Window->Preferences->Java->Installed JREs. Если всё прописано правильно, двойной клик на построение дистрибутива (dist, пункт по умолчанию) в виде Ant View приведёт к благополучной постройке проекта. Помимо консоли, проконтролировать успех можно, нажав правую кнопку на проекте и выбрав пункт Refresh, в структуре проекта должна появиться папка dist, содержащая построенные файлы OpenMeetings. Поздравляю, вы уже на полпути к победе!
Теперь установим MySQL и подготовим его к использованию, а затем попробуем запустить наш проект. Я не буду погружаться в детализацию этого процесса, так как в принципе, значения по умолчанию вполне подойдут для наших целей — а именно СУБД для небольшого количества клиентов. Разве что кодировку в базе данных я бы поставил UTF-8. После установки стоит зайти на базу, чтобы проверить, что она работает, а также подготовить плацдарм для инсталляции проекта OpenMeetings. Для этого запустим из командной строки, введём пароль — и убедимся что мы в системе и она работает:
После того, как вход осуществлён успешно и база данных создана, необходимо отредактировать файл из папки dist(та, что появилась после компиляции)/openmeetings/conf/mysql_hibernate.cfg.xml, прописать в нём пользователя (например root) и его пароль, а также в качестве сервера 127.0.0.1 и базу данных openmeetings. В моём случае строка соединения будет выглядеть так:
Полученный файл необходимо сохранить там же как hibernate.cfg.xml
Теперь займёмся Flash-сервером. Установка Red5 проста и не требует каких-либо изощрений. В дальнейшем, надо будет лишь положить наш проект в его веб-корень, я для этого воспользовался утилитой из пакета Sysinternals под названием junction.exe. Она выполняет тот же самый трюк, что и ln в Unix-системах:
Теперь наш проект становится доступным через веб (не забудьте про фаервол!).
Остаётся последнее — произвести установку и настройку таблиц в базе данных, а также клиентских программ.
Предварительно пропишем переменную окружения JAVA_HOME, чтобы она указывала на JDK.
Установка таблиц проста — запускаем Red5 (файл red5.bat в установочной папке) и заходим на сайт 127.0.0.1/openmeetings/install Если всё отконфигурировано правильно, то в браузере вы увидите установочную страницу, если же нет, перечитайте инструкции и просмотрите логи Red5, там должны высвечиваться все ошибки. После ввода параметров конфигурации и нажатия кнопки install следует тоже проверить логи — при правильных обстоятельствах там не будут сыпаться различные ошибки, а также будет виден прогресс установки (занимает несколько минут). По окончанию установки остаётся сделать лишь одно — настроить клиента. А именно — вытаскиваем файл с названием main.lzx.swf8.swf из скачанного архива с готовым openmeetings, и кладём его в корень openmeetings. В зависимости от версии ПО его, возможно, придётся переименовать в main.lzx.lzr=swf8.swf — о необходимости такого переименования будет говорить пустой белый экран при заходе на 127.0.0.1/openmeetings после проведённой установки. Если же посмотреть приходящий html-код, легко можно увидеть каким именно должно быть название у вашего скрипта:
В большинстве случаев таких хлопот не предвидится. Ну вот и всё, добро пожаловать в конференцию!
Как мы видим, без особых усилий «продвинутый» пользователь ПК может организовать связь на основе ПО с открытым кодом и в этой области, и даже поучаствовать в его развитии. А профессионалам в данном случае отводится роль поддержки, развития проекта, а также удовлетворения особых пожеланий потенциального клиента.
Основными чертами нашей системы видеосовещаний являются следующие:
Обеспечение многоточечной видеосвязи.
Отсутствие необходимости установки на компьютерах пользователей дополнительного ПО. Сообщение с сервером осуществляется при помощи обычного браузера.
Совместная работа на «белой доске» и с офисными документами.
Невысокие затраты на оборудование: сервер на Pentium 4 2GB RAM способен обрабатывать не менее 100 соединений.
Гарантированная надёжность: cрок наработки ПО сервера на отказ не менее 48 часов.
Интеграция с продуктами Microsoft.
Возможность записи совещания.
Использование адресной книги предприятия по протоколу LDAP.
Рассылка приглашений на совещания.
Инструкции на русском языке.
Серверное решение основано на следующих компонентах:
MySql — база данных;
Apache Tomcat — веб сервер;
Red5 — Flash медиа-сервер;
OpenOffice.org — сервер документации;
Openmeetings — веб приложение, написанное на java и скриптовом языке.
Соединение с сервером осуществляется по протоколам http (порт 5080), rtmp (порт 1935), rtmpt (порт 8088). Для того, чтобы сервер был виден в сети Интернет, достаточно прокинуть эти три порта на компьютер за роутером или брэндмауром.
Конечно же, проще всего дать ссылку на описание установки уже собранного кода по умолчанию, благо оно есть, и не отвлекать вас более, но я решил пойти по чуть более изощрённому пути. Во-первых, описания установки, как и во всех подобных решениях с открытым кодом не изобилуют подробностями, во-вторых, очень часто требуется внести минимальные изменения по собственной прихоти, или же пожеланиям заказчика, и тогда простой установкой откомпилированного кода не обойтись. С другой стороны, проект достаточно большой, и всё невозможно описать в пределах одной статьи, не превращая её в трактат, поэтому сегодня я ограничусь следующим — в статье будет описано, как получить исходники сервера, отладить и собрать серверный код у себя на компьютере под управлением ОС Windows XP, а также протестировать его работу, а уж как его установить на сервере клиента или вашем собственном, вы разберётесь сами. Работу же над клиентской частью оставим в виде факультатива.
Инструментарий
Итак, начнём с необходимого инструментария.
1.SVN клиент — TortoiseSVN 1.6.0
downloads.sourceforge.net/tortoisesvn/TortoiseSVN-1.6.0.15855-win32-svn-1.6.0.msi?download
2.Среда разработки Java-приложений — Eclipse IDE for Java Developers
www.eclipse.org/downloads
3.Java Development Kit
https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=jdk-6u13-oth-JPR@CDS-CDS_Developer
4.Flash-сервер на основе ПО с открытым кодом — Red5
www.red5.org/downloads/red5/0_8_RC2/setup-Red5-0.8.0-RC2.exe
5.База данных — MySQL
dev.mysql.com/downloads/mysql/5.1.html#win32
6.Пакет OpenMeetings с уже собранным бинарным кодом (одолжить клиентскую часть)
openmeetings.googlecode.com/files/openmeetings_0_7_rc2.zip
7.Пакет утилит Sysinternals
download.sysinternals.com/Files/SysinternalsSuite.zip
Получение и компиляция исходного кода
Для начала мы получим, и соберём серверный код. Для этого после установки TortoiseSVN, создадим папку на диске и сделаем туда SVN Checkout последней (или какой-либо другой) ревизии кода.
В качестве ссылки на репозиторий указываем
http://openmeetings.googlecode.com/svn/trunk/webapp/
Далее ставим ранее скачанный Eclipse, и в workspace создаём новый проект, назовём его OpenMeetings, и импортируем туда файловую систему, указав в качестве основной нашу свежесозданную папку:
Обращу ваше внимание, что импортируется содержимое, а не сама папка, чтобы сохранить совместимость со структурой каталогов в Eclipse.
Делаем Window->Show View->Ant и в открывшемся окне, нажав на «Add buildfiles» добавляем билд-файл build.xml, получаем нижеследующую картину:
Теперь устанавливаем JDK, его же надо зарегистрировать в Eclipse для последующего использования — это делается посредством добавления пути к установленному JDK в Window->Preferences->Java->Installed JREs. Если всё прописано правильно, двойной клик на построение дистрибутива (dist, пункт по умолчанию) в виде Ant View приведёт к благополучной постройке проекта. Помимо консоли, проконтролировать успех можно, нажав правую кнопку на проекте и выбрав пункт Refresh, в структуре проекта должна появиться папка dist, содержащая построенные файлы OpenMeetings. Поздравляю, вы уже на полпути к победе!
База данных
Теперь установим MySQL и подготовим его к использованию, а затем попробуем запустить наш проект. Я не буду погружаться в детализацию этого процесса, так как в принципе, значения по умолчанию вполне подойдут для наших целей — а именно СУБД для небольшого количества клиентов. Разве что кодировку в базе данных я бы поставил UTF-8. После установки стоит зайти на базу, чтобы проверить, что она работает, а также подготовить плацдарм для инсталляции проекта OpenMeetings. Для этого запустим из командной строки, введём пароль — и убедимся что мы в системе и она работает:
После того, как вход осуществлён успешно и база данных создана, необходимо отредактировать файл из папки dist(та, что появилась после компиляции)/openmeetings/conf/mysql_hibernate.cfg.xml, прописать в нём пользователя (например root) и его пароль, а также в качестве сервера 127.0.0.1 и базу данных openmeetings. В моём случае строка соединения будет выглядеть так:
<property name="connection.url">jdbc:mysql://127.0.0.1/openmeetings?autoReconnect=true&useUnicode=true&createDatabaseIfNotExist=true&characterEncoding=utf-8</property>
Полученный файл необходимо сохранить там же как hibernate.cfg.xml
Сервер Flash
Теперь займёмся Flash-сервером. Установка Red5 проста и не требует каких-либо изощрений. В дальнейшем, надо будет лишь положить наш проект в его веб-корень, я для этого воспользовался утилитой из пакета Sysinternals под названием junction.exe. Она выполняет тот же самый трюк, что и ln в Unix-системах:
> junction -s “D:\Program Files\Red5\webapps\openmeetings” “D:\workspace\openmeetings\dist\openmeetings”
Теперь наш проект становится доступным через веб (не забудьте про фаервол!).
Остаётся последнее — произвести установку и настройку таблиц в базе данных, а также клиентских программ.
Установка проекта на сервере
Предварительно пропишем переменную окружения JAVA_HOME, чтобы она указывала на JDK.
Установка таблиц проста — запускаем Red5 (файл red5.bat в установочной папке) и заходим на сайт 127.0.0.1/openmeetings/install Если всё отконфигурировано правильно, то в браузере вы увидите установочную страницу, если же нет, перечитайте инструкции и просмотрите логи Red5, там должны высвечиваться все ошибки. После ввода параметров конфигурации и нажатия кнопки install следует тоже проверить логи — при правильных обстоятельствах там не будут сыпаться различные ошибки, а также будет виден прогресс установки (занимает несколько минут). По окончанию установки остаётся сделать лишь одно — настроить клиента. А именно — вытаскиваем файл с названием main.lzx.swf8.swf из скачанного архива с готовым openmeetings, и кладём его в корень openmeetings. В зависимости от версии ПО его, возможно, придётся переименовать в main.lzx.lzr=swf8.swf — о необходимости такого переименования будет говорить пустой белый экран при заходе на 127.0.0.1/openmeetings после проведённой установки. Если же посмотреть приходящий html-код, легко можно увидеть каким именно должно быть название у вашего скрипта:
В большинстве случаев таких хлопот не предвидится. Ну вот и всё, добро пожаловать в конференцию!
Как мы видим, без особых усилий «продвинутый» пользователь ПК может организовать связь на основе ПО с открытым кодом и в этой области, и даже поучаствовать в его развитии. А профессионалам в данном случае отводится роль поддержки, развития проекта, а также удовлетворения особых пожеланий потенциального клиента.