Ubuntu 16.04 安装搭建Red5流媒体服务器
在网上看了不少安装red5-server的方法,在我电脑上都好像安装不成功,本来是很简单的事,因为刚接触,结果费了不少时间。这里整理出Ubuntu 16.04 成功安装的方法,以便给搭建一个参考。
(一)安装JDK
1. 终端输入:apt-cache search openjdk
运行结果:
linuxidc@linuxidc:~/test/RTMP$ sudo apt-cache search openjdk
[sudo] password for linuxidc:
Sorry, try again.
[sudo] password for linuxidc:
default-jdk - Standard Java or Java compatible Development Kit
default-jdk-doc - Standard Java or Java compatible Development Kit (document
default-jdk-headless - Standard Java or Java compatible Development Kit (hea
default-jre - Standard Java or Java compatible Runtime
default-jre-headless - Standard Java or Java compatible Runtime (headless)
openjdk-8-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-8-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-8-doc - OpenJDK Development Kit (JDK) documentation
openjdk-8-jdk - OpenJDK Development Kit (JDK)
openjdk-8-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-8-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-8-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-8-jre-jamvm - Alternative JVM for OpenJDK, using JamVM
openjdk-8-source - OpenJDK Development Kit (JDK) source files
icedtea-8-plugin - web browser plugin based on OpenJDK and IcedTea to execut
jtreg - Regression Test Harness for the OpenJDK platform
libhsdis0-fcml - HotSpot disassembler plugin using FCML
libreoffice - office productivity suite (metapackage)
openjdk-8-jre-dcevm - Alternative VM for OpenJDK 8 with enhanced class redef
openjdk-8-jre-zero - Alternative JVM for OpenJDK, using Zero/Shark
openjdk-9-dbg - Java runtime based on OpenJDK (debugging symbols)
openjdk-9-demo - Java runtime based on OpenJDK (demos and examples)
openjdk-9-doc - OpenJDK Development Kit (JDK) documentation
openjdk-9-jdk - OpenJDK Development Kit (JDK)
openjdk-9-jdk-headless - OpenJDK Development Kit (JDK) (headless)
openjdk-9-jre - OpenJDK Java runtime, using Hotspot JIT
openjdk-9-jre-headless - OpenJDK Java runtime, using Hotspot JIT (headless)
openjdk-9-source - OpenJDK Development Kit (JDK) source files
uwsgi-app-integration-plugins - plugins for integration of uWSGI and applica
uwsgi-plugin-jvm-openjdk-8 - Java plugin for uWSGI (OpenJDK 7)
uwsgi-plugin-jwsgi-openjdk-8 - JWSGI plugin for uWSGI (OpenJDK 7)
uwsgi-plugin-ring-openjdk-8 - Closure/Ring plugin for uWSGI (OpenJDK 7)
uwsgi-plugin-servlet-openjdk-8 - JWSGI plugin for uWSGI (OpenJDK 7)
java-package - Utility for creating Java Debian packages
2.这里我们安装openjdk-8-jdk,因为我安装openjdk-9-jdk的时候有出错。
运行安装命令:
sudo apt-get install openjdk-8-jdk
3.测试是否安装成功:java -version
linuxidc@linuxidc:~$ java -version
openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-8u121-b13-0ubuntu1.16.04.2-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)
4.配置java_home变量:
运行:echo export JAVA_HOME="/usr/lib/jvm/Java-8-openjdk-amd64/">>~/.bashrc 添加变量
source .bashrc 使变量生效
linuxidc@linuxidc:~$ $JAVA_HOME
linuxidc@linuxidc:~$ echo export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64/">>~/.bashrc
linuxidc@linuxidc:~$ $JAVA_HOME
linuxidc@linuxidc:~$ source .bashrc
linuxidc@linuxidc:~$ echo $JAVA_HOME
/usr/lib/jvm/java-8-openjdk-amd64/
(二)安装red5
1.下载red5 Linux 安装包:https://github.com/Red5/red5-server/releases ,国外网站,下载很慢
------------------------------------------分割线------------------------------------------
red5-server-1.0.9-M6也可以到安科网1号FTP服务器下载
------------------------------------------分割线------------------------------------------
2.创建目录:
mkdir -p /usr/share/red5
3.设置环境变量:
export RED5_HOME=/usr/share/red5
4.将安装包解压到目录
/usr/share/red5
5. 开始运行red5
cd /usr/share/red5
./red5.sh &
6.结束运行red5
cd /usr/share/red5
./red5-shutdown.sh
安装结束
测试red5是否安装成功:
(1)运行red5
(2)浏览器输入:本地IP:5080
比如我的IP地址为192.168.0.6,则输入:http://192.168.0.6:5080/ 出现下面界面表示安装成功。
附启动脚本
Configure init script
#!/bin/sh
#
# /etc/init.d/red5 -- startup script for the red5 server
#
# Based on the tomcat6 init script.
# Written by Miquel van Smoorenburg <[email protected]>.
# Modified for Ubuntu red5 by Fred Dixon <[email protected]>
# Modified for Debian GNU/Linux by Ian Murdock <[email protected]>.
# Modified for Tomcat by Stefan Gybas <[email protected]>.
# Modified for Tomcat6 by Thierry Carrez <[email protected]>.
#
### BEGIN INIT INFO
# Provides: red5
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Should-Start: $named
# Should-Stop: $named
# Default-Start: 2 3 4 5
# Default-Stop: 1
# Short-Description: Start red5.
# Description: Start the red5 service.
### END INIT INFO
set -e
PATH=/bin:/usr/bin:/sbin:/usr/sbin
NAME=red5
DESC="Red5 Server"
RED5_HOME=/mnt/opt/$NAME
DEFAULT=/etc/default/$NAME
UMASK=0002
# These variables are needed by Xuggler
export XUGGLE_HOME=/usr/local
export PATH=$PATH:$XUGGLE_HOME/bin
export LD_LIBRARY_PATH=$XUGGLE_HOME/lib:$LD_LIBRARY_PATH
if [ `id -u` -ne 0 ]; then
echo "You need root privileges to run this script"
exit 1
fi
# Make sure red5 is started with system locale
if [ -r /etc/default/locale ]; then
. /etc/default/locale
export LANG
fi
. /lib/lsb/init-functions
. /etc/default/rcS
# The following variables can be overwritten in $DEFAULT
# The first existing directory is used for JAVA_HOME (if JAVA_HOME is not
# defined in $DEFAULT)
JDK_DIRS="/usr/lib/jvm/java-6-openjdk /usr/lib/jvm/java-6-sun /usr/lib/jvm/java-1.5.0-sun /usr/lib/j2sdk1.5-sun /usr/lib/j2sdk1.5-ibm"
# Look for the right JVM to use
for jdir in $JDK_DIRS; do
if [ -r "$jdir/bin/java" -a -z "${JAVA_HOME}" ]; then
JAVA_HOME="$jdir"
fi
done
export JAVA_HOME
# Output file
if [ -z "$OUT_FILE" ]; then
OUT_FILE=/var/log/red5.out
fi
# End of variables that can be overwritten in $DEFAULT
# overwrite settings from default file
if [ -f "$DEFAULT" ]; then
. "$DEFAULT"
fi
if [ ! -f "$RED5_HOME/red5.jar" ]; then
log_failure_msg "$NAME is not installed"
exit 1
fi
#
# Function to wait if there are connections still open for 1935. Some browsers hang on to a connection
# that prevents a ./red5 restart from binding to port 1935
#
wait_1935_close () {
ACTIVE=$(netstat -ant | grep 1935 | wc | awk -F ' ' '{print $1}')
if [ $ACTIVE != 0 ]; then
echo -n " Waiting for $ACTIVE connections on 1935 to close before starting Red5 "
while [ $ACTIVE != 0 ]; do
echo -n "."
sleep 5
ACTIVE=$(netstat -ant | grep 1935 | wc | awk -F ' ' '{print $1}')
done
fi
echo
}
# Define other required variables
RED5_Pid="/var/run/$NAME.pid"
RED5_MAINCLASS=org.red5.server.Bootstrap
RED5_CLASSPATH="$RED5_HOME/boot.jar:$RED5_HOME/conf:$RED5_HOME/lib/ejb3-persistence.jar"
JAVA_OPTS="-Dpython.home=lib -Xms128M -Xmx128M -Dred5.root=$RED5_HOME -Dlogback.ContextSelector=org.red5.logging.LoggingContextSelector -Dcatalina.useNaming=true -Djava.security.debug=failure -cp $RED5_CLASSPATH org.red5.server.Bootstrap"
case "$1" in
start)
if [ -z "$JAVA_HOME" ]; then
log_failure_msg "no JDK found - please set JAVA_HOME"
exit 1
fi
if [ ! -d "$RED5_HOME/conf" ]; then
log_failure_msg "invalid RED5_HOME: $RED5_HOME"
exit 1
fi
log_daemon_msg "Starting $DESC" "$NAME"
if start-stop-daemon --start --test --pidfile $RED5_PID \
--startas "$JAVA_HOME/bin/java" \
>/dev/null; then
wait_1935_close
start-stop-daemon --start --background --make-pidfile --chuid red5 --umask $UMASK \
--chdir $RED5_HOME --pidfile $RED5_PID --startas "$JAVA_HOME/bin/java" -- $JAVA_OPTS
sleep 5
# Because we pushed it into the background, we need to check it's status
if start-stop-daemon --test --start --pidfile $RED5_PID --startas "$JAVA_HOME/bin/java" >/dev/null; then
log_end_msg 1
else
log_end_msg 0
fi
else
log_progress_msg "(already running)"
log_end_msg 0
fi
;;
stop)
log_daemon_msg "Stopping $DESC" "$NAME"
if start-stop-daemon --start --test --pidfile $RED5_PID \
--startas "$JAVA_HOME/bin/java" \
>/dev/null; then
log_progress_msg "(not running)"
else
start-stop-daemon --stop --pidfile $RED5_PID \
--startas "$JAVA_HOME/bin/java"
sleep 5
rm -f $RED5_PID
fi
log_end_msg 0
;;
status)
if start-stop-daemon --start --test --pidfile $RED5_PID \
--startas "$JAVA_HOME/bin/java" \
>/dev/null; then
if [ -f "$RED5_PID" ]; then
log_success_msg "$DESC is not running, but pid file exists."
exit 1
else
log_success_msg "$DESC is not running."
exit 3
fi
else
log_success_msg "$DESC is running with pid `cat $RED5_PID`"
fi
;;
restart|force-reload)
if start-stop-daemon --test --stop --pidfile "$RED5_PID" \
--startas "$JAVA_HOME/bin/java" \
>/dev/null; then
$0 stop
sleep 1
fi
$0 start
;;
*)
log_success_msg "Usage: $0 {start|stop|restart|force-reload|status}"
exit 1
;;
esac
exit 0