суббота, 23 апреля 2011 г.

Установка медиа-сервера Red5 на Ubuntu Server

Установка медиа-сервера Red5 на удаленную машину с Ubuntu, как оказалось, дело не такое уж и сложное. Опишу вкратце, как это делается.
Итак, для начала, у кого еще не стоит :), ставим subversion:
sudo apt-get install subversion
Затем ставим дистрибутивы Java (на данный момент последняя версия 1.6.0.15) и утилиту Ant:

apt-get install openjdk-6-jdk 
apt-get install openjdk-6-jre
apt-get install ant
Далее получаем из SVN сам Red5:

cd ~
mkdir temp
cd temp
Добавляем в окружение пути:
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
export ANT_HOME=/usr/share/ant/
Компилируем Red5 из SVN:
cd red5
/usr/share/ant/bin/ant
Копируем скомпилированный сервер в нужную папку. Я выбрал /usr/share/red5/
mkdir /usr/share/red5
cp -R ./dist/* /usr/share/red5/
Выставляем права и тадам! Все почти готово!
cd /usr/share/red5
chmod 755 red5.sh
Теперь можно запускать и останавливать сервер следующими командами:
/usr/share/red5/red5.sh &
/usr/share/red5/red5-shutdown.sh &
Либо мочить процесс по ps ax | grep java, если что-то пошло не так (:

В итоге, зайдя по адресу http://[ваш_домен]:5080/ , вы увидите стартовую страницу работающего сервера:



Для того, чтобы было удобно использовать сервер как сервис, заюзаем скрипт, который я позаимствовал у Simon Eisenmann:
Создаем файл в /etc/init.d/red5, куда вставляем следующий код:
#! /bin/sh
#
# red5      red5 initscript
#
# Author:   Simon Eisenmann <simon@struktur.de>.
#
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Red5 flash streaming server"
NAME=red5
RED5_HOME=/usr/share/red5
DAEMON=$RED5_HOME/$NAME.sh
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
# Read config file if it is present.
if [ -r /etc/default/$NAME ]
then
    . /etc/default/$NAME
fi
#
#   Function that starts the daemon/service.
#
d_start() {
    start-stop-daemon --start --pidfile $PIDFILE \
                --chdir $RED5_HOME --background --make-pidfile \
        --exec $DAEMON
}
#
#   Function that stops the daemon/service.
#
d_stop() {
    start-stop-daemon --stop --quiet --pidfile $PIDFILE \
        --name java
        rm -f $PIDFILE
}
case "$1" in
  start)
    echo -n "Starting $DESC: $NAME"
    d_start
    echo "."
    ;;
  stop)
    echo -n "Stopping $DESC: $NAME"
    d_stop
    echo "."
    ;;
  restart|force-reload)
    echo -n "Restarting $DESC: $NAME"
    d_stop
    sleep 1
    d_start
    echo "."
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
    exit 1
    ;;
esac
exit 0
Затем выставляем ему права и добавляем в сервисы:
chmod 755 /etc/init.d/red5
чтобы севис сам запускался можно просписать строку запуска в /etc/rc.local
 sudo -u root -H /etc/init.d/red5 start
  или лучше сделать так

update-rc.d red5 defaults

Все, сервер Red5 готов, запускать и останавливать можно следующими командами:
/etc/init.d/red5 start
/etc/init.d/red5 stop
/etc/init.d/red5 restart
Red5 испозует следующие порты в дефолтной настройке, не забывайте их открыть, если у вас стоит файрволл:
Default ports:
1935,8088,5080,1936
RTMP: 1935
RTMPT: 8088
HTTP servlet engine port: 5080
Debug proxy port: 1936
Тепер можно зайти в панель установки приложений (http://[ваш_домен]:5080/installer/) и установить основное приложение oflaDemo, c которого можно начинать разбираться в устройстве Red5.
Проверить, открыты ли порты, можно приложением, входящим в комплект Red5, по адресу http://[ваш_домен]:5080/demos/port_tester.html

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

  1. Здраствуйте, у меня не получаеться запустить red5

    при запуске выдает, в чем может быть причина ?

    root@emerald-fortress:/home/trinity# /usr/share/red5/red5.sh
    Running on Linux
    Starting Red5
    Exception in thread "main" java.lang.NoClassDefFoundError: org/red5/server/Bootstrap
    Caused by: java.lang.ClassNotFoundException: org.red5.server.Bootstrap
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    Could not find the main class: org.red5.server.Bootstrap. Program will exit.

    ОтветитьУдалить
  2. Попробуйте сначала перейти в каталог с red5 а потом запустить
    cd /usr/share/red5
    ./red5.sh
    или
    sudo ./red5.sh

    ОтветитьУдалить
  3. ТУТ (http://forum.ru-board.com/topic.cgi?forum=24&topic=9383) нашёл ответ на вопрос с ошибкой. Может будет кому интересно :
    Чтобы пофиксить этот баг нужно удалить из папки lib 2 файла:
    com.springsource.slf4j.juli-1.6.1.jar
    com.springsource.slf4j.log4j-1.6.1.jar
    У меня после удаления всё запустилось!
    Red5-1.0.0-RC1 работает на jre-6u24

    ОтветитьУдалить
  4. Этот комментарий был удален автором.

    ОтветитьУдалить
  5. Если не работают демо-приложения нужно сделать

    svn co http://red5.googlecode.com/svn/flash/trunk/deploy/
    mkdir RED5_SOURCE_FOLDER/webapps/root/demos
    mv deploy/* RED5_SOURCE_FOLDER/webapps/root/demos/

    где RED5_SOURCE_FOLDER - каталог куда установлен сервер. Взял тут: https://groups.google.com/forum/?fromgroups#!topic/red5interest/o3ZV9qsHGNE

    ОтветитьУдалить
  6. Ничего удалять не надо, просто автор забыл еще одну переменную:
    export RED5_HOME=/usr/share/red5/

    и усе пашет - ура!

    ОтветитьУдалить
  7. Этот комментарий был удален автором.

    ОтветитьУдалить
  8. export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
    потребовалось заменить на
    export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386/
    А также не находит build.xml

    ОтветитьУдалить
  9. сбилдил отсюда http://red5.googlecode.com/svn/java/server/tags/
    При запуске выдало
    Running on Linux
    Starting Red5
    Exception in thread "main" java.lang.NoClassDefFoundError: org/red5/server/Bootstrap
    Caused by: java.lang.ClassNotFoundException: org.red5.server.Bootstrap
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    Could not find the main class: org.red5.server.Bootstrap. Program will exit.

    ОтветитьУдалить
  10. Установил последнюю версию все заработало

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