Как-то, генеральный директор сказал, что хочет видеоконференцию. Само собой, что первым делом я начал интересоваться, существуют ли opensource-решения этого вопроса. Оказалось, что существуют, но немного. И самым продвинутым из них оказался openmeetings.
Наткнувшись вот на эту статью:
http://sysadminblog.ru/blog/freebsd/459.html
я вначале решил настраивать всё на FreeBSD. Но прочитав, что openoffice будет собираться около 12-ти часов, я решил всё настраивать на Федоре. Причём, на самой последней (на этот момент) версии, и не на оригинальной федоре, а на RussianFedora Remix 17, поскольку в ней уже подключены все нужные репозитории, в которых лежат уже готовые собранные пакеты нужных (последних) версий. Благодаря этому, мне не пришлось ничего собирать вручную.
При настройке, также, помогли и вот эти статьи:
http://habrahabr.ru/post/132095
http://code.google.com/p/openmeetings/wiki/InstallationCentOS5
И ещё, очень помогла оригинальна инструкция по установке:
http://incubator.apache.org/openmeetings/installation.html
Итак, RussianFedora Remix 17. При установке я выбрал минимальный набор пакетов — всё буду доустанавливать сам по мере необходимости.
После установки, обновляю систему стандартным методом:
yum -y update yum
yum -y update
Но перезагружать не спешу. Сначала сразу установлю пару нужных программ:
yum -y install nano mc
Потом отключаю SeLinux. В файле /etc/selinux/config заменяем строчку:
SELINUX=enforcing
на:
SELINUX=disabled
Вот сейчас можно перезагрузить систему.
Поскольку компьютер с openmeetings — это отдельный сервер, то ему однозначно надо дать статический IP-адрес. Переходим в каталог /etc/sysconfig/network-scripts. В более ранних версиях федоры сетевые интерфейсы назывались eth0, eth1, eth2 и так далее, но в семнадцатой федоре обозначение сетевых карт другое. У себя я обнаружил файл с названием ifcfg-p2p1. Редактирую его:
UUID="43e4eed1-3c78-4301-825b-79f0a0b6d21a"
NM_CONTROLLED="yes"
HWADDR="08:00:27:B6:6F:64"
BOOTPROTO="none"
DEVICE="p2p1"
ONBOOT="yes"
IPADDR=192.168.0.20
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
Также, в файл /etc/resolve.conf добавляю строчку:
nameserver 192.168.0.1
Ивыполняю команду:
chattr +i /etc/resolv.conf
чтоб настройки DNS после перезагрузки не слетели. После настройки сетки временно отключим фаервол, чтобы он пока не мешался:
service iptables stop
systemctl disable iptables.service
Далее, нам надо установить и настроить MySQL. Ставим:
yum -y install mysql mysql-server
После его установки, надо настроить, чтобы в MySQL умолчательной кодировкой была UTF-8. Находим файл /etc/my.cnf и приводим его вот к такому виду:
[mysqld]
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under different user or group,
# customize your systemd unit file for mysqld according to the
# instructions in http://fedoraproject.org/wiki/Systemd
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
skip-character-set-client-handshake
collation-server = utf8_unicode_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set = utf8
[mysql]
default-character-set = utf8
Строчки, которые я добавил, выделены зелёным.
Кто-то скажет, а зачем вообще нужен MySQL, если в последних версиях OpenMeetings существует своя встроенная база данных? Ответ тут:
http://incubator.apache.org/openmeetings/installation.html
Цитирую: Для использования в продакшине следует рассмотреть возможность использования MySQL, Postgres, или например IBM DB2 , или Oracle.
Так что вот... Далее, запустим mysqld:
service mysqld start
А после, запустим вот этот скрипт /usr/bin/mysql_secure_installation. Он будет задавать вопросы. Отвечаем так:
Enter current password for root (enter for none): жмём энтер, т.к. пароль пароль суперпользователя на mysql у нас пока пустой
Set root password? [Y/n] y
New password: вводим пароль суперпользователя на mysql
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
С помощью этого скрипта мы выполнили следующие действия: задали пароль для суперпользователя root, так как по умолчанию для него не установлен пароль; удалили анонимного пользователя, который создаётся только для тестовых целей; запретили пользователю root входить удалённо — теперь он сможет заходить только с localhost; удалили тестовую БД test и доступ к ней.
Не забудем включить демон mysqld в автозапуск:
systemctl enable mysqld.service
Теперь надо установить LibreOffice. Он нужен для отображения офисных документов, которые можно прикреплять на доску обсуждения:
yum -y groupinstall 'Office/Productivity'
yum -y install libreoffice-headless
LibreOffice должен запускться в режиме демона при старте системы. Для этого создаём файл /etc/rc.d/rc.local вот с таким содержимым:
#!/bin/sh
soffice "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard &
Делаем этот файл исполняемым:
chmod 755 /etc/rc.d/rc.local
Затем перезагружаем систему и после её загрузки вводим команду:
netstat -anut
Если в её выводе, среди всех строчек, наблюдаем такую:
tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN
то значит всё в порядке.
Далее надо поставить все необходимые пакеты, от которых будет зависеть работа OpenMeetings:
yum -y install freetype fontconfig java libtiff libjpeg giflib libpaper xml-commons-apis libpng libxml2 fftw3 cairo flac wavpack libsndfile libmad yasm ghostscript lame swftools ImageMagick ffmpeg sox
Это то, о чём я говорил вначале. Если бы не готовые пакеты в RFRemix-17, то некоторые из этих пакетов пришлось бы вручную собирать.
Теперь загружаем последнюю версию openmeetings отсюда:
http://incubator.apache.org/openmeetings/downloads.html
Всё содержимое скачанного zip-архива распаковываем в каталог /opt/openmeetings.
Теперь, читаем о том, как настроить openmeetings на использование mysql:
http://incubator.apache.org/openmeetings/MySQLConfig.html
Для начала, создадим пустую базу для этого:
mysql -p
CREATE DATABASE `openmeetings`;
GRANT ALL PRIVILEGES ON openmeetings.* TO 'openmeetings'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
Далее, скачиваем jConnector от сюда:
http://www.mysql.com/downloads/connector/j/
Он нужен openmeetings для подключения к базе mysql. Распаковываем содержимое скачанного архива mysql-connector-java-5.1.22.zip (на момент написания статьи). В нём нас интересует лишь файл mysql-connector-java-5.1.22-bin.jar. Его надо поместить в каталог /opt/openmeetings/webapps/openmeetings/WEB-INF/lib.
После чего, находим файл /opt/openmeetings/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml. В нём нас интересует вот этот блок:
, Url=jdbc:mysql://localhost:3306/openmeetings?autoReconnect=true&useUnicode=true&create... , MaxActive=100 , MaxWait=10000 , TestOnBorrow=true , poolPreparedStatements=true , Username=root , Password="/>
Собственно говоря, надо тут изменить лишь две строчки: логин и пароль к базе openmeetings, которую мы создали. Поэтому последние две строчки из этого блока и правим:
, Username=openmeetings , Password=your_password"/>
И обратите внимание на символ «"» в конце строчки пароля — он и должен там быть. Я вначале из-за своей невнимательности убрал эту кавычку — сие было фатальной моей ошибкой
После окончания редактирования файла, нужно переименовать mysql_persistence.xml в persistence.xml. При этом, оригинальный persistence.xml, который лежит в этой же папке, переименуйте во что-нибудь другое.
Идём дальше. А дальше надо скачать JODConverter:
http://code.google.com/p/jodconverter/downloads/list
JODConverter нужен для конвертирования офисных файлов в pdf для отображения на доске. Содержимое архива jodconverter-core-3.0-beta-4-dist.zip (на момент написания статьи) копируем в каталог /opt/openmeetings/webapps/openmeetings/jodcoverter.
Далее, есть ещё одна тонкость: в коде jodconverter жестко прописаны пути, и он будет искать опенофис в каталоге /opt/openoffice.org3. Поэтому, чтобы он таки его мог увидеть, делаем вот такую символическую ссылку:
ln -s /usr/lib64/libreoffice /opt/openoffice.org3
На этом все приготовления закончены. Переходим в каталог /opt/openmeetings и делаем команду:
./red5.sh
Не нужно дожидаться её завершения. И вообще, лучше эту команду выполнить в отдельно открытой консоли. Эта команда запустит openmeeting. Его окончательную установку необходимо сделать уже через web-интерфейс. Переходим по адресу:
http://192.168.0.20:5080/openmeetings/install
На страничке инсталяции обратим внимание на поле «JOD Path». В нём надо указать путь к папке lib нашего джобконвертера: /opt/openmeetings/webapps/openmeetings/jodcoverter/lib. Остальные поля на своё усмотрение можно заполнить, после чего жмём внизу кнопку «INSTALL». Система призадумается на некоторое время. Ждём.
После окончания установки появится приглашение войти в систему OpenMeetings. Можно пользоваться.
http://192.168.0.20:5080/openmeetings
Однако нам ещё надо включить обратно фаервол и настроить, чтобы openmeetings автоматически стартовал при запуске операционной системы.
Для работы программе требуются TCP порты 1935, 5080 и 8088. В конфиге /etc/sysconfig/iptables в нужных местах добавляем вот такие строчки:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1935 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8088 -j ACCEPT
Затем снова добавляем iptables в автозагрузку и запускаем его:
systemctl enable iptables.service
service iptables start
Ну, а чтоб openmeetings стартовал при запуске системы, то создадим скриптик /etc/init.d/red5 и наполним его вот таким содержимым:
#!/bin/bash # For RedHat and cousins: # chkconfig: 2345 85 85 # description: Red5 flash streaming server # processname: red5 PROG=red5 RED5_HOME=/opt/openmeetings DAEMON=$RED5_HOME/$PROG.sh PIDFILE=/var/run/$PROG.pid # Source function library . /etc/rc.d/init.d/functions [ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5 RETVAL=0 case "$1" in start) echo -n $"Starting $PROG: " cd $RED5_HOME $DAEMON >/dev/null 2>/dev/null & RETVAL=$? if [ $RETVAL -eq 0 ]; then echo $! > $PIDFILE touch /var/lock/subsys/$PROG fi [ $RETVAL -eq 0 ] && success $"$PROG startup" || failure $"$PROG startup" echo ;; stop) echo -n $"Shutting down $PROG: " killproc -p $PIDFILE RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG ;; restart) $0 stop $0 start ;; status) status $PROG -p $PIDFILE RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|status}" RETVAL=1 esac exit $RETVAL
Сохраним и сделаем его исполняемым и включим в автозапуск:
chmod +x /etc/init.d/red5
chkconfig red5 on
На этом, вроде бы, всё. Если найду какие-то недоделки и баги, то внесу правки в эту статью.
Комментарии
Ответьте мне пожалуйста на e-mail
второе: при старте ошибка (после того как убрал автозагрузку) Could not find or load main class org.red5.server.Bootstrap решение - перед запуском сервера в терминале под рутом делал export RED5_HOME=/opt/openmeetings/
потом стартовал сервер.
в остальном все детально подробно описано. спасибо!
а, и забыл написать что проброс портов делал непосредственно в фаерволе по инструкции (может не туда вписал) не пошло
Кстати у меня это дело так и осталось на работе невостребованным... Настроил, а никто не пользуется... Сначала просят, а потом забивают благополучно.
Для завершения регистрации кликните на эту ссылку или скопируйте URL в окно браузера.
Кликните для верификации вашего e-mail.
192.168.1.33:5080/openmeetings/activate_______......
имеется no-ip куда только его вписать чтобы приходило нормальная ссыль для регистрации и входа в комнату
спасибо
По уму, лучше бы он не ай-пишником ссылку давал, dns-именем.
Вобщем, когда у меня этот вопрос снова станет актуальным, то буду ковырять...
У меня вопрос, как сделать морду приглашения входа в систему на родном языке? Некоторые пользователи буржуйского не знают.
А может это ещё и от версии openmeetings зависит... Точного ответа не дам.