Red5を使ったチャットサーバー構築
Red5を使ったチャットサーバー構築
こんばんは。そらのくろうさぎです。
去年の始め頃からスマホでもリアルタイムのオンラインゲームが流行り始めましたね〜。node.jsやpeer.jsなどのリアルタイム用のライブラリも充実し、双方向通信がより身近な技術になったように感じます。今日はそんなリアルタイム通信を行うためのチャットサーバー構築手順についてお話したいと思います。
Red5とは
双方向通信といえば一番最初にnode.jsを思い浮かべると思いますが、今回は新うさゴヤに導入しているRed5の構築手順をご紹介します。
Red5はAdobeFlashMediaServerの互換として開発されたオープンソースのメディアサーバーです。元々はFlash用のメディアサーバーでしたが、最近のバージョンではHLSやWebSocketが使えるようになり、HTML5やモバイルアプリケーションにも対応出来るようになりました。サーバーアプリケーションの開発言語はJavaですので、柔軟性の高いチャットサーバーを運用・構築することが可能です。
ダウンロード
Red5はGitHabからダウンロードします。
Red5 Server
インストール手順
Quartzインストール
$ su -
# yum install quartz
JDKインストール
# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
ApacheAntインストール
# cd /usr/local/src/
# wget http://www.apache.org/dist/ant/binaries/apache-ant-1.9.5-bin.tar.gz
# tar xfz apache-ant-1.9.5-bin.tar.gz
# mv apache-ant-1.9.5 /usr/local/ant
ApacheAntのパスを通す
# vi ~/.bash_profile
下記の内容を.bash_profileに追記する
export ANT_HOME=/usr/local/ant
export PATH=${PATH}:${ANT_HOME}/bin
パスを反映する
# source ~/.bash_profile
Red5インストール
# cd /usr/local/src/
# wget https://github.com/Red5/red5-server/releases/download/v1.0.6-RELEASE/red5-server-1.0.6-RELEASE-server.zip
# unzip v1.0.6-RELEASE/red5-server-1.0.6-RELEASE-server.zip
# mv v1.0.6-RELEASE/red5-server-1.0.6-RELEASE-server.zip /usr/local/red5
# chown -R root:root /usr/local/red5/
Red5起動スクリプト作成
# vi /etc/init.d/red5
下記の内容を記述する
起動スクリプト
JAVA_HOMEにJavaのパス、RED5_HOMEにRed5のパスを追記する
#! /bin/sh
# For RedHat and cousins:
# chkconfig: 2345 85 85
# description: Red5 flash streaming server
# processname: red5
# Source function library
. /etc/rc.d/init.d/functions
export JAVA_HOME=/usr/bin/java
if [ -z "$JAVA_HOME" ]; then
echo -n "need to set JAVA_HOME in red5.init" && failure
echo
exit 1
fi
PROG=red5
if [ -z "$RED5_HOME" ]; then
export RED5_HOME=/usr/local/red5
fi
DAEMON=$RED5_HOME/$PROG.sh
PIDFILE=/var/run/$PROG.pid
[ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5
RETVAL=0
case "$1" in
start)
echo -n $"Starting $PROG: "
$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 0755 /etc/init.d/red5
ログ用のディレクトリを作成する
# mkdir /usr/local/red5/log/
# chmod 0755 /usr/local/red5/log/
ログローテーションの設定
# vi /usr/local/red5/conf/logback.xml
logback.xmlのノードを変更する
※maxHistoryで保存ログ数を指定
<appender class="ch.qos.logback.core.FileAppender" name="FILE">
<File>log/red5.log</File>
<Append>false</Append>
<encoder>
<pattern>%d{ISO8601} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
↓下記に変更
<appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="FILE">
<File>log/red5.log</File>
<Append>false</Append>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>red5.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{ISO8601} [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
WebSocketの設定
# vi /usr/local/red5/conf/red5.xml
red5.xmlに下記のノードを追記する
<!-- websocket -->
<bean id="webSocketTransport" class="org.red5.net.websocket.WebSocketTransport">
<property name="port" value="8081"/>
</bean>
Red5を起動する
# /etc/init.d/red5 start
Red5のログ確認
# tail -f /usr/local/red5/log/red5.log
動作確認
設置したサーバーのURLにポート番号5080を指定してブラウザからRed5デモページを開きます。ドメインがxxxx.comならxxxx.com:5080でアクセスします。
Red5が問題なくインストールされていれば、上の図のようなデモページが表示されます。
おわりに
現在のRed5はコンパイルを行わなくてもサーバーに設置するだけで動作するようになりました。設置に手間がかからず、容易にチャットサーバーを構築することが可能です。これからリアルタイムコンテンツを開発しようと考えている方はRed5も選択肢の1つとして検討してみてはいかがでしょうか。
次回はRed5のサーバーアプリケーション開発についてお話したいと思います。
ではでは!