среда, 29 мая 2013 г.

Установка Openmeetings на Centos


Установка Openmeetings на Linux x86 x84

Здесь я расскажу как устанавливать Openmeetings на Centos.
Что же такое Openmeetings? Это система видеоконференции (почти скайп только без возможности звонков), которая позволяет видеть и разговаривать со своим собеседником в любой точке земного шара.
Из основных особенностей хотелось бы отметить:
1) Бесплатность
2) Возможность создания собственных комнат с установкой различного количества максимально подключаемых пользователей.
3) Возможность вести конференцию "один к одному" (все могут общаться друг с другом) и "один ко многим" один ведет, а остальные типа слушают.
4) Возможность создавать комнаты с модератором и без него.
5) Наличие электронной доски, которая видна всем. С возможностью выкладывать документы (.xls, .doc, .pdf., jpeg и многие др.)
6) Запись и сохрание конференции в .swf и .avi.
7) Возможность показа своего рабочего стола всем участникам.

Эта инструкция подходит для Centos 5.7 и выше. Я ставил на 6.3 х64. Здесь в принципе описываются общие действия по установке, которые подойдут как для x86 так и для х64 с некоторыми поправками.
Приступим:
1) Обновим yum
yum update
yum upgrade
 
2)Добавим репозитарий
cd /tmp
wget
http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
rpm -ihv rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
 
3) Установим пакеты необходимы для корректной работы Apache Openmeetings
 
yum install freetype freetype-devel fontconfig fontconfig-devel java-1.6.0-openjdk-devel 
libtiff libtiff-devel libjpeg-devel libjpeg giflib giflib-devel libpaper libpaper-devel 
xml-commons-apis libpng libpng-devel libxml2 libxml2-devel fftw3 fftw3-devel cairo cairo-devel 
flac flac-devel wavpack wavpack-devel libsndfile libsndfile-devel libmad libmad-devel 
yasm-devel yasm
 
4)Установим LibreOffice который нужен для подгрузки файлов MS Office
 сделаем это через групповую установку. 
 
yum groupinstall 'Office/Productivity'
yum install openoffice.org-headless
 
Если yum выдает ошибку что не существует группы 'Office/Productivity', значит для вашего
дистрибутива она может называться по другому. Для этого выполните:
yum grouplist 
который выведет список доступных групп, где выберете нужную вам (догадаетесь по названию). 
 
5) Запустим демона soffice который будет конвертить подгружаемые на доску документы MS Office
в нужный формат.
 
soffice "-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager" -nologo -headless -nofirststartwizard & 

6) Удалим ghostscript который ставитстся по умолчанию, затем поставим более новый из исходников.
rpm -e --nodeps ghostscript
 
7) Установим нужные программы Lame, Ghostscript, FFmpeg, SWFTOOLS, ImageMagick, SOX. 
сd /usr/src
wget ghostscript.com/releases/ghostscript-8.71.tar.gz
tar zxvf ghostscript-8.71.tar.gz
cd ghostscript-8.71
./configure --prefix=/usr
mkdir obj
mkdir bin
make all
make install

cd /usr/src
wget downloads.sourceforge.net/project/lame/lame/3.98.4/lame-3.98.4.tar.gz
tar zxvf lame-3.98.4.tar.gz
cd lame-3.98.4
./configure --prefix=/usr
make all
make install

cd /usr/src
wget www.swftools.org/swftools-0.9.1.tar.gz
tar zxvf swftools-0.9.1.tar.gz
cd swftools-0.9.1
./configure --prefix=/usr
make all
make install
 
cd /usr/src
wget jaist.dl.sourceforge.net/project/imagemagick/old-sources/6.x/6.6/ImageMagick-6.6.4-10.tar.gz
tar zxvf ImageMagick-6.6.4-10.tar.gz
cd ImageMagick-6.6.4-10
./configure --prefix=/usr
make all
make install

cd /usr/src
wget ffmpeg.org/releases/ffmpeg-0.8.5.tar.gz
tar zxvf ffmpeg-0.8.5.tar.gz
cd ffmpeg-0.8.5
./configure --enable-libmp3lame --enable-postproc --enable-gpl --enable-pthreads --enable-avfilter --prefix=/usr
make all
make install

cd /usr/src
wget downloads.sourceforge.net/project/sox/sox/14.3.1/sox-14.3.1.tar.gz
tar zxvf sox-14.3.1.tar.gz
cd sox-14.3.1
./configure --prefix=/usr
make all
make install
 
8)Т.к на официальном сайте сказано что Openmeetings работает c SUN Java то нужно установить и ее.
Для начала проверим не установлена ли SunJava уже, а вдруг повезет
java -version
Если вывело, что то вида (версии могут отличаться):

java version "1.7.0_21"
Java(TM) SE Runtime Environment (build 1.7.0_21-b11)
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode)
То нам повезло, и она уже установленна, если нет смотрим эту статью
http://onlyadmin.blogspot.com/2013/04/java-linux.html
9) Теперь  собственно скачаем сам Openmeetings
mkdir /home/openmeetings
cd /home/openmeetings
 wget http://archive.apache.org/dist/incubator/openmeetings/2.0-incubating/apache-openmeetings-incubating-2.0.0.r1361497-14-07-2012_1108.zip
unzip apache-openmeetings-incubating-2.0.0.r1361497-14-07-2012_1108.zip
10) Скопируем наш сервер в удобную папку например /opt/openmeetings
cp -r /home/openmeetings/apache-openmeetings-incubating-2.0.0.r1361497-14-07-2012_1108 /opt/openmeetings

11) Дадим права .red5.sh на запуск
cd red5/
chmod +x red5.sh
./red5.sh
И вот тут при старте ждет первый прикол. Вылезет ошибка:"red5 cannot run without an instance id". 
Ох уж я и намучился решая ее, но вам скажуее просто решить. 
Добавьте в /etc/hosts ваш ip интерфейса на котором будет крутится
Openmeetings и любое имя, и вуаля все работает.
 
12) Делаем автозапуск Openmeetings 
Создадим в ./etc/init.d файл red5 например дадим ему право на запуск
cd /etc/init.d
touch red5
chown root.root red5
chmod 755 red5 
 
Затем скопируйте скопируйте содержимое скрипта в этот файл, выставив RED5_HOME в 
соотвествиий с тем где у вас находится Openmeetings
#!/bin/bash
# For RedHat and cousins:
# chkconfig: 2345 85 85
# description: Red5 flash streaming server
# processname: red5
# Created By: Sohail Riaz (sohaileo@gmail.com)
# Modified by Alvaro Bustos
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: "
#/usr/lib64/libreoffice/program/soffice "-accept=socket,host=127.0.0.1,port=8100,tcpNoDelay=1;urp;" -headless -nodefault -nofirststartwizard -nolockcheck -nologo -norestore & sleep 5
cd $RED5_HOME
start-stop-daemon --start -c nobody --pidfile $PIDFILE
$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)
pkill soffice.bin
start-stop-daemon --stop --quiet --pidfile $PIDFILE \
--name java
rm -f $PIDFILE
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
 
Впринципе теперь уже можно пробовать запускать наш сервер. Но Apache рекомендует 
использовать MySQL, для более высокой производительности.
Для того чтобы настроить Openmeetings на использование MySQL, читай следующий абзац.
 

Openmeetings и MySQL 

Для того чтобы настроить Openmeetings на использование MySQL, делаем следующее:
1) Качаем mysql-server
yum install mysql-server

2) Запускам MySQL сервер
service mysqld start

3)Устанавливаем пароль для root
mysqladmin -u root password 123

4)Заходим в командную строку mysql
mysql -u root -p 123

5)Создадим базу данных
 mysql> create database openmeetings default character set 'utf8';

6) Создадим пользователя для базы данных
grant all privileges on openmetings.* to 'openmeetings@localhost' identified by '123' with grant option;

7)Скачаем и установим mysql-connector необходимый Openmeetings для работы с MySQL
cd /opt
 wget http://mysql.azc.uam.mx/Downloads/Connector-J/mysql-connector-java-5.1.23.zip
unzip mysql-connector-java-5.1.23.zip 
cp /opt/mysql-connector-java-5.1.23/mysql-connector-java-5.1.23-bin.jar
/opt/openmeetings/webapps/openmeetings/WEB-INF/lib 

8) Теперь подправим конфигурационные файлы переименуем оригинальный конфиг, а затем на место него скопируем mysql_persistence.xml и подправим
mv /opt/openmeetings/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml 
/opt/openmeetings/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml-ori

 mv /opt/red52/webapps/openmeetings/WEB-INF/classes/META-INF/mysql_persistence.xml 
/opt/red52/webapps/openmeetings/WEB-INF/classes/META-INF/persistence.xml 

Откроем его чем угодно например vi и находим следущую строку
Url=jdbc:mysql://localhost:3306/openmeetings?
и ставим
, Username=openmeetings
, Password=123"/> 
т.е соотвественно ваше имя пользователя и пароль, котрого мы создали на предыдущем этапе.


Все с основной работой справились
Теперь:
Перезапустим Openmeetings 
service red5 restart или 
cd /opt/openmeetings/
./red5.sh

Теперь заходим в браузер и набираем
http://DOMAIN_NAME:5080/openmeetings/install
где  DOMAIN_NAME соответсвенно имя или ip адрес вашего сервера
Должно открыться окно следующего содержания
 

Нажимаем Continue With Step1
Здесь вводим: 
- имя пользователя с правами администратора
- пароль
- свой email адрес
- и имя организации (обязательно)
- а также язык

Затем в этом окне вводим

Здесь пропишем пути к нашим конвертерам
FFMPEG Path   =    /usr/local/bin 
JOD Path           =    /opt/jodconverter-core-3.0-beta-4/lib
А также если у вас стоит x64 то пропишем путь к OpenOffice/LibreOffice
OpenOffice/LibreOffice = /usr/lib64/libreoffice

Все. 
Теперь заходим
http://DOMAIN_NAME:5080/openmeetings и тестируем. Но это уже тема для отдельной статьи.

12 комментариев:

  1. Спасибо, дружище!
    взлетело все с первого раза, до этого перечитал кучу статей, по Вашей все без сучка и задоринки!
    Не все пакеты ставил из исходников, некоторые, такие как sox, java есть в репозиториях, более или менее актуальной версии, java 1.6 только, но все гуд, работает

    P.S.
    ну и не забываем открыть порты iptables
    Еще раз спасибо!

    ОтветитьУдалить
  2. Спасибо, за коммент. Еще раз обращу внимание на ошибку "red5 cannot run without an instance id" у кого не стартует, (я с ним пару дней мучался), а решние простое в /etc/hosts ваш ip интерфейса на котором будет крутится

    ОтветитьУдалить
  3. P.P.S
    java пришлось все-таки обновить до последней версии согласно Вашей инсрукции, т.к. при загрузке документов некорректно проходила конвертация, в итоге, вместо отображения документа была картинка DELETED.
    в итоге, обновил java до 1.7.0_25, добавил скрипт автозапуска, поправив одиночные тире "-" на двойные "--" в ключах запуска libreoffice и все заработало.
    Одно НО, документы, которые были закачаны ранее, пришлось перезалить, т.к. не хотели открываться - картинка DELETED. А так все гуд, открываются/заливаются/конвертируются все документы, включая docx, doc, xls, xlsx.
    один только экселевский файл не открылся, так и не понял почему, остальные все гуд.
    еще разок спасибо!

    ОтветитьУдалить
  4. Здравствуйте. небольшой вопрос. установил все согласно инструкции, все работает, кроме видеозаписей. Ошибка:
    Лог:20.08.2013 22:23:54
    generateFFMPEG
    process: generateFFMPEG
    command; [/usr/local/bin/ffmpeg, -async, 1, -i, /opt/openmeetings21/webapps/openmeetings/streams/9/rec_1_stream_0_2013_08_20_22_23_36.flv, /opt/openmeetings21/webapps/openmeetings/streams/9/rec_1_stream_0_2013_08_20_22_23_36_WAVE.wav]
    exception: java.io.IOException: Cannot run program "/usr/local/bin/ffmpeg": error=2, Нет такого файла или каталога

    Система CentOS 6.4 x64
    проблема понятна, при ffmpeg находится в /usr/bin а не в /usr/local/bin
    не поменял путь при установке.
    решил попробовать сделать символическую ссылку, но ошибка осталась
    смена пути в Администрирование - Конфигурация результата не дает.
    конфиг, где прописан путь к кодеку так и не нашел.
    Не знаете как решить проблему?
    спасибо.

    ОтветитьУдалить
  5. Прошу прощения, все ок.
    Настройки в Администрирование - Конфигурация применились
    они не работали когда происходила запись с неправильным путем к кодеку.
    вполне логично )))))
    после смены путей и новой записи все заработало. проверял при расшаривании своего рабочего стола. запись самой конференции пока не пробовал, но должно быть все ок. если что, отпишусь.
    спасибо

    ОтветитьУдалить
  6. Добрый день.
    Попробуйте так.
    Если ffmpeg ставили из rpm то удалите его. Скачайте исходники и сделайте ./configure --prefix /usr, тогда должен поместить его с /usr/bin.

    ОтветитьУдалить
  7. Да, забыл в статье дописать, .avi файлы с записями конференции не воспроизводятся через стандыртный MediaPlayer и Winamp. Качните любой бесплатный и попробуйте.

    ОтветитьУдалить
  8. Здравствуйте.
    Есть проблемка. По прошествии времени, около 30-40 мин. пропадают загруженные документы. Чтобы они появились, требуется обновить страницу и, как следствие, заново пройти аутентификацию, затем опять заходить в комнату.
    Увеличил время жизни сессии, поставил вместо стандартных 30 мин. 2 часа. Теперь при пропадании документов аутентифицироваться не нужно, достаточно обновить страницу, но когда идет конференция и нужно добавить документ, это мягко говоря неудобно.
    Не подскажете, как можно решить проблему с пропаданием загруженных документов для конференции не обновляя страницу?

    ОтветитьУдалить
    Ответы
    1. К сожалению, не могу ответить на ваш вопрос. Т.к сами попользовавшись немного Openmeetings перешли на другой платный продукт.

      Удалить
  9. Ошибка такая:
    ERROR 09-29 14:47:42.268 o.a.o.a.s.FileWebService:732 [http-nio-0.0.0.0-5080-exec-6] - [getFileExplorerByRoomSelf]
    java.lang.Exception: not Authenticated
    не знаю в где копать... :(

    ОтветитьУдалить