Red5Pro Server 環境構築手順書 (AWS版)

株式会社サムライズ
http://www.samuraiz.co.jp/


改訂履歴

版数

日付

内容

1.0

2018/11/01

初版


~~~ 目次 ~~~~

1. はじめに

1.1. 事前準備

1.1.1. Red5Pro Serverモジュールの取得

1.1.2. AWSアカウントの作成

1.1.3. クライアント環境の準備

 

2. AWS環境の構築

2.1. AWSコンソールへのログイン

2.2. インスタンスの作成

2.3. Amazon マシンイメージ(AMI)の設定

2.4. インスタンスタイプの選択

2.5. インスタンスの詳細の設定

2.6. ストレージの追加

2.7. タグの追加

2.8. セキュリティグループの設定

2.8.1. アウトバウンドの設定について

2.9. インスタンス情報の確認

2.10. キーペアの作成

2.11. インスタンスの確認

2.12. AWS環境構築後の手順について

 

3. Red5Pro Serverのインストール

3.1. サーバへのログイン

3.2. 必要なライブラリの追加

3.3. Red5Pro Serverモジュールのコピー

3.4. Red5Pro Serverモジュールの解凍

3.5. Red5Pro Serverモジュールのリネーム

3.6. 実行権限の追加

3.7. サーバプロセスのサービス化

3.8. 「red5pro.service」の権限変更

3.9. サーバの起動

3.10. 動作確認

 

4. 動作確認

4.1. Red5Pro Serverの動作確認

4.2. 動画サンプルの配信確認

4.2.1. 動画サンプルの配置

4.2.2. 動画サンプルのコピー

4.2.3. 入力値の設定

4.2.4. 動画の再生

 

5. 補足

5.1. Red5Pro Serverのアップグレード

5.1.1. サービスの停止

5.1.2. 新モジュールのコピー

5.1.3. 新モジュールの解凍

5.1.4. 構成ファイルの編集

5.1.5. 現行モジュールのバックアップ

5.1.6. 新モジュールのリネーム

5.1.7. 実行権限の追加

5.1.8. サーバの起動

5.1.9. 動作確認

5.2. アウトバウンドの設定時の注意点

5.2.1. AWSコンソールへのログイン

5.2.2. セキュリティグループ編集

5.2.3. アウトバウンドのルールの編集

5.3. その他オプション機能

5.3.1. サービスの削除

5.3.2. 最大Javaヒープサイズ変更

5.4. ログファイルの各種設定

5.4.1. サイズベースの設定

5.4.2. 時間ベースの設定

5.5. トラブルシューティング


1. はじめに

本稿はInfrared5( http://www.infrared5.com/ )が提供する製品Red5Proのストリーミングサーバ(Red5Pro Server)の環境構築手順を記載したものです。Red5Pro Serverは動画ストリーミングサーバであり、自身のプラットフォームにて独自の環境を構築して、拡張性のあるライブストリーミングを配信、受信することができます。

本稿ではAWS上のEC2インスタンスにRed5Pro Serverを構築する方法を解説しています。

導入前に、必ず本セクションの「事前準備 」を予めご確認頂きますようお願い致します。

システムの概要についての関連リンク先、Red5Pro Serverの構成を以下に示します。

関連リンク先

内容

URL

Red5Proの概要

https://www.red5pro.com/docs/#overview

Red5Pro Serverについて

https://red5pro.com/docs/server/

サーバ構成

構成要素

バージョン

概要

Red5Pro Server

5.0.0

Red5Pro Serverの最新バージョン ※1

Ubuntu

16.04 LTS

Red5Proが推奨しているUbuntuのバージョン

※1・・・2018/07 現在

↑目次に戻る


1.1. 事前準備

1.1.1. Red5Pro Serverモジュールの取得

 Red5Pro Server構築にあたり、以下の準備が必要となります。

● Red5Pro Serverモジュール

○ red5pro-server-xxx.zip

● ライセンスキー

○ LICENSE.KEY

● サンプル動画

○ sample.m3u8

○ sample-000.ts

○ sample-001.ts

これらは弊社サムライズ担当よりご案内致します。製品ご購入後、受領されていない場合は以下のメールアドレスへご連絡下さい。

ttakashima@samuraiz.co.jp (担当:高島)

※本稿では、Red5Pro Serverを構築するにあたり、Red5Pro Serverモジュール「 red5pro-server-xxx.zip 」、サンプル動画ファイル「sample.m3u8」「sample-000.ts」「sample-001.ts」がディレクトリ 「$HOME/Downloads」 に保存されていることを前提としています。

↑目次に戻る


1.1.2. AWSアカウントの作成

本稿ではAWS EC2インスタンス上にRed5Proサーバを構築する手順を解説致します。

したがって、AWSアカウントが必要となります。アカウントを所持していない場合は、以下のリンクより事前に作成を行って下さい。

AWSアカウント作成へ

↑目次に戻る


1.1.3. クライアント環境の準備

 本稿では「SSH」を用いてサーバへログインし作業します。ご利用のクライアントOSに合わせてSSHの実行環境を構築が必須となります。

本稿では以下を推奨致します。

● MacOS

○ 標準ターミナルおよびiTermなど

● Linux

○ 標準ターミナルおよびguake、konsoleなど(ディストリビューションに依存)

● Windows 10

○ WSL(Windows Subsystem for Linux)

● Windows 10 以前

○ cygwin, MSYS2, Putty(scpコマンド実行可能が前提)

また本稿のSSH接続による解説は、MacOSおよびLinuxもしくはWSL(Windows Subsystem for Linux)による標準ターミナル(bash)の操作としています。

↑目次に戻る



2. AWS環境の構築

 本セクションでは、AWS環境の構築手順について説明します。

2.1. AWSコンソールへのログイン

 以下のURLより、AWSコンソールにログインして下さい。

AWSコンソールへ

↑目次に戻る


2.2. インスタンスの作成

 EC2インスタンスを作成します。ログイン後、画面「AWS サービス」に遷移したら「EC2」ダッシュボードをクリックして下さい。

「インスタンスの作成」をクリックし、EC2インスタンスを作成します。

↑目次に戻る


2.3. Amazon マシンイメージ(AMI)の設定

 Amazon マシンイメージ(AMI)を指定します。「Ubuntu Server 16.04 LTS (HVM), SSD Volume Type」を選択します。

↑目次に戻る


2.4. インスタンスタイプの選択

 AMIのインスタンスタイプを指定します。インスタンスタイプは利用用途に合ったサーバスペックを選択してください。本稿ではRed5Proが推奨する、殆どのライブストリーミング実装をサポートするインスタンスタイプ「c4.xlarge※①を選択しています。選択後「 次の手順: インスタンスの詳細の設定※②をクリックします。

↑目次に戻る


2.5. インスタンスの詳細の設定

 インスタンスの詳細設定を行います。デフォルトの設定とし、「次の手順: ストレージの追加」をクリックします。

↑目次に戻る


2.6. ストレージの追加

 インスタンスのストレージタイプ、サイズの設定を行います。用途に合ったストレージの容量を設定して下さい。本稿ではOSを含む十分な容量 「 32GB※① を確保しています。VoDなど配信用動画ファイルを直接サーバ上に配置する運用の場合、それに見合うストレージ容量を準備する必要があります。設定後、「 次の手順: タグの追加※②をクリックします。

↑目次に戻る


2.7. タグの追加

 タグを設定します。タグはAWS リソースを目的、所有者、環境などを「キー」と「値」で分類することができます。本稿ではタグを使用しないため、デフォルトの設定のまま「 次の手順: セキュリティグループの設定」をクリックします。

↑目次に戻る


2.8. セキュリティグループの設定

 セキュリティグループの設定を行います。セキュリティグループは、1 つ以上のインスタンスのトラフィックを制御する仮想ファイアウォールとして機能します。各セキュリティグループに対してルールを追加し、関連付けたインスタンスに対するトラフィックを許可します。

 サーバ構築に必要なポートを許可する為、以下に従って設定して下さい。

● セキュリティグループの割り当て:「新しいセキュリティグループを作成する」

● セキュリティグループ名:「red5proserver」

● グループの説明:「Red5Pro Server Posts」

サーバ構築に必要なポート

タイプ

プロトコル

ポート範囲

ソース

説明

SSH

TCP

22

カスタム(0.0.0.0/0)

SSH

カスタムTCP

TCP

80

カスタム(0.0.0.0/0)

Red5Proのウェブアクセスの変更

カスタムTCP

TCP

443

カスタム(0.0.0.0/0)

標準のHTTPSポート

カスタムTCP

TCP

1935

カスタム(0.0.0.0/0)

デフォルトのRed5Pro RTMPポート

カスタムTCP

TCP

8554

カスタム(0.0.0.0/0)

デフォルトのRTSPポート

カスタムTCP

TCP

6262

カスタム(0.0.0.0/0)

HLSのウェブソケット

カスタムTCP

TCP

8081

カスタム(0.0.0.0/0)

WebRTCのウェブソケット

カスタムTCP

TCP

8083

カスタム(0.0.0.0/0)

WebRTC用のセキュアなWebソケット

カスタムUDF

UDP

40000-65000

カスタム(0.0.0.0/0)

TURN / STUN / ICEポート範囲

設定後「確認と作成」をクリックします。

↑目次に戻る


2.8.1. アウトバウンドの設定について

 アウトバウンドはセキュリティ上、必要以外のポートを閉じる事がセオリーですが、Red5Pro Serverの仕様上、TCPポート「443」を開く必要がございます。詳細は「 5.2. アウトバウンドの設定時の注意点」を参照下さい。

↑目次に戻る


2.9. インスタンス情報の確認

 インスタンスの作成情報を確認します。確認し、問題がなければ「作成」をクリックします。

↑目次に戻る


2.10. キーペアの作成

 サーバ接続認証用のキーを作成します。

  1. ドロップダウンリスト※①で「新しいキーペアの作成」を選択します。
  2. キーペア名※②のテキストボックスへ「 red5pro」を入力します。
  3. キーペアのダウンロード※③をクリックします。キーペア「red5pro.pem」のダウンロードを開始します。(ブラウザの設定に依存しますが、本稿では「 $HOME/Downloads」に「red5pro.pem 」がダウンロードされた事とします)
  4. インスタンスの作成※④をクリックします。

以下の画面に遷移したら、EC2インスタンスの作成が開始されました。

作成が完了するまで、数十秒の待ち時間が必要です。

↑目次に戻る


2.11. インスタンスの確認

 インスタンスが正常に作成されたかを確認します。以下のキャプチャーの「サービス 」より、ダッシュボード一覧画面へ遷移します。

インスタンスのダッシュボード「EC2」をクリックします。

実行中のインスタンス」をクリックします。

インスタンス一覧画面に遷移しインスタンスが存在すれば、正常に作成されています。

 また、以下のようにインスタンスの実行状態が「running」になっていることも確認して下さい。

↑目次に戻る


2.12. AWS環境構築後の手順について

 以上でAWS環境構築は完了です。以降の手順は、次セクション「 Red5Pro Serverのインストール」を参照してください。

↑目次に戻る


3. Red5Pro Serverのインストール

 本セクションでは、Red5Pro Serverのインストール手順について説明します。

前セクションにてEC2をベースに構築することを記載の前提としていますが、オンプレミスでサーバを構築する際も、本セクションの手順を実施することで構築が可能です。

↑目次に戻る


3.1. サーバへのログイン

 作成したAWSインスタンスへログインします。サーバへログインする前に「 2.10. キーペアの設定 」で指定およびダウンロードした「$HOME/Downloads/red5pro.pem」をディレクトリ「$HOME/.ssh」に配置します。ローカル環境のターミナルから以下のコマンドを実行して下さい。

$ cd $HOME/Downloads

$ mv red5pro.pem $HOME/.ssh

$ cd $HOME/.ssh

$ ls -la red5pro.pem

権限の変更前は以下に示す権限が付与されています。

-rw-rw-r-- 1 user xxxx 1月 1 0:00 red5pro.pem

セキュリティ上の考慮から、このキーの権限を「所有者以外は読み取りを不可能」とします。

以下のコマンドを実行し、権限を制限して下さい。

$ sudo chmod 600 red5pro.pem

$ ls -la red5pro.pem

実行後「red5pro.pem」の権限が以下のように変更されたことを確認して下さい。

-rw------- 1 user xxxx 1月 1 0:00 red5pro.pem

変更が確認できたら、以下のコマンドを実行しサーバにログインして下さい。

$ ssh -i red5pro.pem ubuntu@xxx.compute.amazonaws.com

以下のメッセージが表示されたらログインは成功です。

Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-1062-aws x86_64)

* Documentation: https://help.ubuntu.com

* Management: https://landscape.canonical.com

* Support: https://ubuntu.com/advantage

Get cloud support with Ubuntu Advantage Cloud Guest:

http://www.ubuntu.com/business/services/cloud

ubuntu@ip-xxx:~$

↑目次に戻る


3.2. 必要なライブラリの追加

 Red5Pro Serverの.zipファイルを解凍する「unzip」コマンドや、動作の為のJava(推奨バージョン8以上)をインストールする必要があります。また、WebRTCのサポートにはいくつかのネイティブライブラリが必要であり、Red5Pro Serverをサービスとして実行する為には「jsvc」が必要です。


以下のコマンドを実行し、必要なライブラリを導入します。

ubuntu@ip-xxx:~$ sudo apt update

ubuntu@ip-xxx:~$ sudo apt install -y default-jre unzip libva1 libva-drm1 libva-x11-1 libvdpau1 jsvc

※ Ubuntuのバージョンによっては、上記のライブラリは既にインストールされている可能性があります。

以下にRed5Pro Serverが利用するポートを示します。

ファイアーウォールなどを利用する際は、以下のポートが開かれているかの確認が必要です。

 

Red5Pro Serverが利用するポート

ポート番号

説明

22

SSH

5080

Red5ProのデフォルトWebアクセス

1935

デフォルトのRed5Pro RTMPポート

8554

デフォルトのRTSPポート

6262

websockets(2番目の画面とHLS用)

8088

第2画面クライアントレジストリ

SSLを利用するWebRTCサーバーに必要なポート

ポート番号

説明

プロトコル

22

SSH

TCP

5080

Red5Proのウェブアクセスの変更(またはポート80への変更)

443

標準のHTTPSポート

TCP

1935

デフォルトのRed5Pro RTMPポート

TCP

8554

デフォルトのRTSPポート

TCP

6262

HLSのウェブソケット

TCP

8081

WebRTCのウェブソケット

TCP

8083

WebRTC用のセキュアなWebソケット

TCP

40000-65000

TURN / STUN / ICEポート範囲

UDP

↑目次に戻る


3.3. Red5Pro Serverモジュールのコピー

 Red5Pro Serverモジュール($HOME/Downloads/red5pro-server-xxx.zip)を構築するサーバのディレクトリ「/tmp」にコピーします。

サーバからログアウトし、以下のコマンドを実行して下さい。

ubuntu@ip-xxx:~$ exit

$ cd $HOME/Downloads

$ mv red5pro-server-xxx.zip $HOME/.ssh

$ cd $HOME/.ssh

$ scp -i red5pro.pem red5pro-server-xxx.zip ubuntu@xxx.compute.amazonaws.com:/tmp/

コピー後、サーバへ再度SSHにてログインし「red5pro-server-xxx.zip」が配置されたことを確認します。以下のコマンドを実行して下さい。

$ ssh -i red5pro.pem ubuntu@xxx.compute.amazonaws.com

ubuntu@ip-xxx:~$ cd /tmp/

ubuntu@ip-xxx:/tmp$ ls -la red5pro-server*.zip

実行後、以下のファイルが出力されることを確認して下さい。

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5pro-server-xxx.zip

↑目次に戻る


3.4. Red5Pro Serverモジュールの解凍

 Red5Pro Serverモジュールをディレクトリ(/usr/local/)にコピーします。

ubuntu@ip-xxx:/tmp$ sudo cp red5pro-server-xxx.zip /usr/local/

コピー後、インスタンスを実行するディレクトリ(/usr/local/)に移動し、Red5Pro Serverの.zipファイルを解凍します。

ubuntu@ip-xxx:/tmp$ cd /usr/local/

ubuntu@ip-xxx:/usr/local$ sudo unzip red5pro-server-xxx.zip

ubuntu@ip-xxx:/usr/local$ ls -la | grep "red5pro*"

実行後、以下のファイルが出力されることを確認して下さい。

drwxr-xr-x 1 root root xxxx Jan 1 0:00 red5pro-server-xxx-release

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5pro-server-xxx.zip

※Red5Pro Serverは有効なライセンスキーが無ければ機能しません。解凍したディレクトリ「red5pro-server-xxx-release」直下に、「LICENSE.KEY」が存在することを確認してください。もし存在しない場合は、自身のライセンスキーを記載したファイルを「LICENSE.KEY」という命名で作成してください。

↑目次に戻る


3.5. Red5Pro Serverモジュールのリネーム

 使いやすさを考慮して、ディレクトリ「red5pro-server-xxx-release」の名前を「red5pro」に変更します。

ubuntu@ip-xxx:/usr/local$ sudo mv red5pro-server-xxx-release red5pro

ubuntu@ip-xxx:/usr/local$ ls -la | grep "red5pro*"

変更後、リネームされた以下のファイルが出力されることを確認して下さい。

drwxr-xr-x 1 root root xxxx Jan 1 0:00 red5pro

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5pro-server-xxx.zip

↑目次に戻る


3.6. 実行権限の追加

 Red5Pro Serverの起動、停止ファイルに実行権限を与えます。

これらのファイルはディレクトリ「red5pro」に格納されています。

以下のコマンドは、その対象のファイルを絞り込み、表示しています。

ubuntu@ip-xxx:/usr/local$ cd red5pro

ubuntu@ip-xxx:/usr/local/red5pro$ ls -la red5*.sh

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5-debug.sh

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5.sh

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5-shutdown.sh

実行権限を追加します。以下のコマンドを実行します。

ubuntu@ip-xxx:/usr/local/red5pro$ sudo chmod +x *.sh

ubuntu@ip-xxx:/usr/local/red5pro$ ls -la red5*.sh

完了後、以下のファイルに実行権限「x」が付与されたことを確認して下さい。

-rwxr-xr-x 1 root root xxxx Jan 1 0:00 red5-debug.sh

-rwxr-xr-x 1 root root xxxx Jan 1 0:00 red5.sh

-rwxr-xr-x 1 root root xxxx Jan 1 0:00 red5-shutdown.sh

↑目次に戻る


3.7. サーバプロセスのサービス化

 本セクションでは、Red5Pro Serverのプロセスをサービスとして定義します。これにより起動、停止を容易になり、サーバインスタンス起動と同時にサービスを開始することもできます。

/lib/systemd/systemディレクトリにファイル「red5pro.service」を作成します。

ubuntu@ip-xxx:/usr/local/red5pro$ sudo touch /lib/systemd/system/red5pro.service

ubuntu@ip-xxx:/usr/local/red5pro$ cd /lib/systemd/system/

ubuntu@ip-xxx:/lib/systemd/system$ ls -la red5pro*

以下のファイルが出力されることを確認して下さい。

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5pro.service

確認できたら、「red5pro.service」を以下のように編集します。

red5pro.service

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

[Unit]

Description=Red5Pro

After=syslog.target network.target

[Service]

Type=forking

Environment=PID=/var/run/red5pro.pid

Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

Environment=RED5_HOME=/usr/local/red5pro

LimitNOFILE=65536

WorkingDirectory=/usr/local/red5pro

ExecStart=/usr/bin/jsvc -debug \

-home ${JAVA_HOME} \

-cwd ${RED5_HOME} \

-cp ${RED5_HOME}/commons-daemon-1.0.15.jar:${RED5_HOME}/red5-service.jar:${RED5_HOME}/conf \

-Dred5.root=${RED5_HOME} \

-Djava.library.path=${RED5_HOME}/lib/amd64-Linux-gpp/jni \

-Djava.security.debug=failure -Djava.security.egd=file:/dev/./urandom \

-Dcatalina.home=${RED5_HOME} -Dcatalina.useNaming=true \

-Dorg.terracotta.quartz.skipUpdateCheck=true \

-Xms2g -Xmx2g -Xverify:none \

-XX:+TieredCompilation -XX:+UseBiasedLocking \

-XX:MaxMetaspaceSize=128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC \

-XX:InitialCodeCacheSize=8m -XX:ReservedCodeCacheSize=32m \

-XX:CMSInitiatingOccupancyFraction=60 \

-outfile ${RED5_HOME}/log/jsvc-service.log -errfile ${RED5_HOME}/log/jsvc-error.log \

-wait 60 \

-umask 011 \

-pidfile ${PID} org.red5.daemon.EngineLauncher 9999

ExecStop=/usr/bin/jsvc -stop -pidfile ${PID} org.red5.daemon.EngineLauncher 9999

[Install]

WantedBy=multi-user.target

「red5pro.service」の設定について補足します。

<行8-9>

 環境変数のJAVA_HOMEをインストールパス(/usr/lib/jvm/java-8-openjdk-amd64)、RED5_HOMEを前述のシステムパス(/usr/local/red5pro)に設定しています。パスが異なる場合は、これらの変数を変更する必要があります。

8

9

Environment=JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

Environment=RED5_HOME=/usr/local/red5pro

<行23>

 Javaヒープのメモリの割り当てを設定しています。最大Javaヒープサイズの変更をしたい場合は、「 5.3.2. 最大Javaヒープサイズ変更 」を参照して下さい。なお、メモリの割り当てが適切に設定されていない場合はサービスが起動しない可能性があります。

22

-Xms2g -Xmx2g -Xverify:none \

↑目次に戻る


3.8. 「red5pro.service」の権限変更

 「red5pro.service」の権限を変更します。rootユーザは読み書き可能に、その他は読み取り専用にします。

ubuntu@ip-xxx:/usr/local/red5pro$ sudo chmod 644 /lib/systemd/system/red5pro.service

↑目次に戻る


3.9. サーバの起動

 デーモンをリロードします。

ubuntu@ip-xxx:/usr/local/red5pro$ sudo systemctl daemon-reload

「Red5Pro.Service」の自動起動を有効にします。

ubuntu@ip-xxx:/usr/local/red5pro$ sudo systemctl enable red5pro.service

サーバを起動します。

Red5Pro Serverは以下のコマンドにて起動できます。

ubuntu@ip-xxx:/usr/local/red5pro$ sudo systemctl start red5pro

サーバの起動に関しては以上です。

補足としてサーバの停止、状態の確認、再起動のコマンドを以下に示します。

停止

ubuntu@ip-xxx:/usr/local/red5pro$ sudo systemctl stop red5pro

状態の確認

ubuntu@ip-xxx:/usr/local/red5pro$ sudo systemctl status red5pro

再起動

ubuntu@ip-xxx:/usr/local/red5pro$ sudo systemctl restart red5pro

↑目次に戻る


3.10. 動作確認

 Red5Pro Serverのサービスが正常に起動したことを確認後、サーバからログアウトします。

ubuntu@ip-xxx:/usr/local/red5pro$ exit

以降の手順に関しては、次セクション「Red5Pro Serverの動作確認 」を参照し、動作確認を行って下さい。

↑目次に戻る


4. 動作確認

4.1. Red5Pro Serverの動作確認

 本セクションでは、Red5Pro Serverの動作確認を行います。ポート5080でサーバにアクセスして、Red5Pro Serverが動作することを確認します。

Webブラウザを開き、以下のURLにアクセスします。

http://_your server ip_:5080(http://localhost:5080など)

以下の画面が確認できればサーバの動作確認は完了です。

Red5 Pro Application


↑目次に戻る


4.2. 動画サンプルの配信確認

 本セクションでは、起動したRed5Pro ServerでHLSによるVoD配信をケースに確認を行います。

4.2.1. 動画サンプルの配置

↑目次に戻る


 配信ディレクトリ(/usr/local/red5pro/webapps/live/streams/)に動画サンプルを配置します。

 構築したサーバのディレクトリ「/tmp」に動画サンプルをコピーします。ターミナルを開き、動画サンプルをダウンロードしたディレクトリに移動し、以下のコマンドを実行して下さい。

$ cd $HOME/Downloads

$ mv sample.m3u8 sample-000.ts sample-001.ts $HOME/.ssh

$ cd $HOME/.ssh

$ scp -i red5pro.pem sample.m3u8 sample-000.ts sample-001.ts ubuntu@xxx.compute.amazonaws.com:/tmp/

コピー後、動画サンプルが配置されたことを確認します。

$ ssh -i red5pro.pem ubuntu@xxx.compute.amazonaws.com

ubuntu@ip-xxx:~$ cd /tmp/

ubuntu@ip-xxx:/tmp$ ls -la sample*

以下のファイルが出力されることを確認して下さい。

-rw-r--r-- 1 root root xxxx Jan 1 0:00 sample-000.ts

-rw-r--r-- 1 root root xxxx Jan 1 0:00 sample-001.ts

-rw-r--r-- 1 root root xxxx Jan 1 0:00 sample.m3u8

↑目次に戻る


4.2.2. 動画サンプルのコピー

 動画サンプルを配信ディレクトリにコピーします。以下のコマンドを実行して下さい。

ubuntu@ip-xxx:/tmp$ sudo cp sample.m3u8 sample-000.ts sample-001.ts /usr/local/red5pro/webapps/live/streams/

実行後、動画サンプルがコピーされたことを確認します。

ubuntu@ip-xxx:~$ cd /usr/local/red5pro/webapps/live/streams/

ubuntu@ip-xxx:/usr/local/red5pro/webapps/live/streams$ ls -la sample*

以下のファイルが出力されることを確認して下さい。

-rw-r--r-- 1 root root xxxx Jan 1 0:00 sample-000.ts

-rw-r--r-- 1 root root xxxx Jan 1 0:00 sample-001.ts

-rw-r--r-- 1 root root xxxx Jan 1 0:00 sample.m3u8

↑目次に戻る


4.2.3. 入力値の設定

 以下のURLにアクセスして下さい。HTML5によるHLS動画配信を確認できます。(Red5Pro提供)

http://red5pro.github.io/red5pro-html5-hls/

アクセスしたら、各項目に値を入力していきます。以下に、入力例とその説明を示します。

入力項目と詳細

項目

入力例

説明

Stream URL or IP

192.168.1.16

サーバのIPを入力して下さい。

※ 仮にRed5pro ServerのIPが「 192.168.1.16 」である場合

Stream Port

5080

HLSを行うためのポートを設定しています。

Stream Websocket Port

6262

HLSを行うためのWebsocketのポートを設定しています。

Stream Context

live

ストリームタイプを指定しています。

Stream Name

「sample.m3u8」

「Subscribe to Red5 Pro VOD?」へチェックを入れることにより、/usr/local/red5pro/webapps/live/streams/直下のサンプル動画(.m3u8ファイル)を選択できるようになります。本セクションで配置した動画ファイルは「sample.m3u8」であるため選択が可能になります。

Subscribe via Red5 Pro Cluster?

チェックを外す

Red5Pro Serverがクラスタ化されている場合は、チェックを入れます。

Subscribe to Red5 Pro VOD?

チェックを入れる

VoDのプレイリスト検索を行う場合はチェックを入れます。その際、「Stream Name」ボックスは、利用可能なHLS VODストリームのドロップダウンリストに切り替わります。本セクションでは、VODによる配信を目的としているためチェックを入れます。

動作確認において入力する項目は、「Stream URL or IP」、「Subscribe to Red5 Pro VOD?」の2項目です。入力例を入力した場合のキャプチャーを以下に示します。

入力後「Save」をクリックし、設定を反映します。

↑目次に戻る


4.2.4. 動画の再生

 「Save」ボタンを押下後、動画再生領域に以下のような矢印が表示されます。

この矢印を押下すると、動画が再生されます。

動画が再生されたら、Red5Pro Serverの動作確認は完了です。

↑目次に戻る


5. 補足

5.1. Red5Pro Serverのアップグレード

 本セクションではRed5Pro Serverのアップグレードの方法を紹介します。なお、現在のRed5Pro Serverのバージョンを「5.0.0」、新しくリリースされた最新バージョンを「5.1.0」と仮定してアップグレード手順を示します。各バージョンのRed5Pro Serverモジュールのファイル名は以下です。

Red5Pro Serverモジュールの詳細

仮称

バージョン

状態

ファイル名/ディレクトリ名

現行モジュール

5.0.0

配置済み

red5pro

配置済み

red5pro-server-5.0.0.zip

新モジュール

5.1.0

解凍前

red5pro-server-5.1.0.zip

解凍後

red5pro-server-5.1.0-release

↑目次に戻る


5.1.1. サービスの停止

 稼働中のサービスを停止します。.sshディレクトリに移動してサーバにログインし、以下のコマンドを実行して下さい。

$ cd $HOME/.ssh

$ ssh -i red5pro.pem ubuntu@xxx.compute.amazonaws.com

ubuntu@ip-xxx:~$ sudo systemctl stop red5pro

停止後、以下コマンドよりサーバが停止されていることを確認して下さい。

ubuntu@ip-xxx:~$ sudo systemctl status red5pro

↑目次に戻る


5.1.2. 新モジュールのコピー

 新モジュール($HOME/Downloads/red5pro-server-xxx.zip)を構築するサーバのディレクトリ「tmp」にコピーします。

サーバからログアウトし、以下のコマンドを実行して下さい。

ubuntu@ip-xxx:~$ exit

$ cd $HOME/Downloads

$ mv red5pro-server-5.1.0.zip $HOME/.ssh

$ cd $HOME/.ssh

$ scp -i red5pro.pem red5pro-server-5.1.0.zip ubuntu@xxx.compute.amazonaws.com:/tmp/

コピー後「red5pro-server-5.1.0.zip」が配置されたことを確認します。以下のコマンドを実行して下さい。

$ ssh -i red5pro.pem ubuntu@xxx.compute.amazonaws.com

ubuntu@ip-xxx:~$ cd /tmp/

ubuntu@ip-xxx:/tmp$ ls -la red5pro*

実行後、以下のファイルが出力されることを確認して下さい。

-rw-r--r-- 1 root root 000 Jan 1 0:00 red5pro-server-5.1.0.zip

↑目次に戻る


5.1.3. 新モジュールの解凍

 「red5pro-server-5.1.0.zip」を現在のインストールディレクトリ(例 /usr/local/)にコピーします。

ubuntu@ip-xxx:/tmp$ sudo cp red5pro-server-5.1.0.zip /usr/local

「red5pro-server-5.1.0.zip」を解凍します。

ubuntu@ip-xxx:/tmp$ cd /usr/local/

ubuntu@ip-xxx:/usr/local$ sudo unzip red5pro-server-5.1.0.zip

ubuntu@ip-xxx:/usr/local$ ls -la /usr/local/ | grep "red5pro"

解凍後、以下のファイルが出力されることを確認して下さい。

drwxr-xr-x 1 root root 000 Jan 1 0:00 red5pro-server-5.1.0-release

-rw-r--r-- 1 root root 000 Jan 1 0:00 red5pro-server-5.1.0.zip

drwxr-xr-x 1 root root 000 Jan 1 0:00 red5pro

-rw-r--r-- 1 root root 000 Jan 1 0:00 red5pro-server-5.0.0.zip

※Red5Pro Serverは有効なライセンスキーが無ければ機能しません。解凍したディレクトリ「red5pro-server-5.1.0-release」直下に、「LICENSE.KEY」が存在することを確認してください。もし存在しない場合は、自身のライセンスキーを記載したファイルを「LICENSE.KEY」という命名で作成してください。

↑目次に戻る


5.1.4. 構成ファイルの編集

 既に構成ファイルを編集した場合は、以前のRed5Pro Serverから新しいRed5Pro Serverに対象の構成ファイルをコピーし変更を反映させる必要があります。

次の表は、変更される可能性が最も高いファイルの一覧を示しています。

変更対象のファイル一覧

条件

ファイル

SSL

● $RED5_HOME/conf/red5.properties

● $RED5_HOME/conf/jee-container.xml

MP4及びS3ファイルストレージへのFLV変換用

● $RED5_HOME/conf/red5-common.xml

● $RED5_HOME/webapps/live/WEB-INF/red5-web.xml

● $RED5_HOME/conf/cloudstorage-plugin.properties

サーバAPI

● $RED5_HOME/webapps/api/WEB-INF/red5-web.properties

● $RED5_HOME/webapps/api/WEB-INF/security/hosts.txt

単純認証プラグイン

● $RED5_HOME/conf/simple-auth-plugin.properties

● $RED5_HOME/conf/simple-auth-plugin.credentials

クラスタリング

● $RED5_HOME/conf/cluster.xml

HLS変更

● $RED5_HOME/conf/hlsconfig.xml

WebRTCの変更

● $RED5_HOME/conf/webrtc-plugin.properties

※上表の「 $RED5_HOME 」は、Red5Pro Serverのホームディレクトリを表しております。

例えば、HLSの設定変更を既に行っていたシーンを仮定します。

まず初めに、新モジュールの構成ファイル「hlsconfig.xml」をリネームし、バックアップを取ります。

ubuntu@ip-xxx:/usr/local$ sudo mv /usr/local/red5pro-server-5.1.0-release/conf/hlsconfig.xml hlsconfig.xml.bk

完了後、現行モジュールの構成ファイル「hlsconfig.xml」を新モジュールへコピーします。

ubuntu@ip-xxx:/usr/local$ sudo cp /usr/local/red5pro/conf/hlsconfig.xml /usr/local/red5pro-server-5.1.0-release/conf/

新モジュール下に「hlsconfig.xml」が配置されたことを確認します。

ubuntu@ip-xxx:~$ cd /usr/local/red5pro-server-5.1.0-release/conf/

ubuntu@ip-xxx:/usr/local/red5pro-server-5.1.0-release/conf$ ls -la hlsconfig*

以下のファイルが出力されることを確認して下さい。

-rw-r--r-- 1 root root 000 Jan 1 0:00 hlsconfig.xml

↑目次に戻る


5.1.5. 現行モジュールのバックアップ

 現行モジュールのディレクトリ名称をリネームします。

ubuntu@ip-xxx:/usr/local/red5pro-server-5.1.0-release/conf$ cd /usr/local/

ubuntu@ip-xxx:/usr/local$ sudo mv red5pro red5pro-server-5.0.0-release

完了後、以下コマンドよりリネームされていることを確認して下さい。

ubuntu@ip-xxx:/usr/local$ ls -la /usr/local/ | grep "red5pro"

確認後、以下のディレクトリが出力されることを確認して下さい。

drwxr-xr-x 1 root root 000 Jan 1 0:00 red5pro-server-5.1.0-release

-rw-r--r-- 1 root root 000 Jan 1 0:00 red5pro-server-5.1.0.zip

drwxr-xr-x 1 root root 000 Jan 1 0:00 red5pro-server-5.0.0-release

-rw-r--r-- 1 root root 000 Jan 1 0:00 red5pro-server-5.0.0.zip

↑目次に戻る


5.1.6. 新モジュールのリネーム

 新モジュールのディレクトリ名称を、稼働していた現行モジュールのディレクトリ名称に合わせて変更します。(本稿では「red5pro」に統一)

ubuntu@ip-xxx:/usr/local$ sudo mv red5pro-server-5.1.0-release red5pro

ubuntu@ip-xxx:/usr/local$ ls -la /usr/local/ | grep "red5pro"

完了後、リネームされた以下のディレクトリが存在することを確認して下さい。

drwxr-xr-x 1 root root 000 Jan 1 0:00 red5pro

-rw-r--r-- 1 root root 000 Jan 1 0:00 red5pro-server-5.1.0.zip

drwxr-xr-x 1 root root 000 Jan 1 0:00 red5pro-server-5.0.0-release

-rw-r--r-- 1 root root 000 Jan 1 0:00 red5pro-server-5.0.0.zip

↑目次に戻る


5.1.7. 実行権限の追加

 Red5Pro Serverの起動、停止ファイルに実行権限を与えます。

これらのファイルはディレクトリ「red5pro」に格納されています。

以下のコマンドは、その対象のファイルを絞り込み、表示しています。

ubuntu@ip-xxx:/usr/local$ cd red5pro

ubuntu@ip-xxx:/usr/local/red5pro$ ls -la red5*.sh

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5-debug.sh

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5.sh

-rw-r--r-- 1 root root xxxx Jan 1 0:00 red5-shutdown.sh

実行権限を追加します。以下のコマンドを実行します。

以下のコマンドにて実行権限を追加します。

ubuntu@ip-xxx:/usr/local/red5pro$ sudo chmod +x *.sh

ubuntu@ip-xxx:/usr/local/red5pro$ ls -la *.sh

完了後、以下のファイルに実行権限「x」が付与されたことを確認して下さい。

-rwxr-xr-x 1 root root 000 Jan 1 0:00 red5-debug.sh

-rwxr-xr-x 1 root root 000 Jan 1 0:00 red5.sh

-rwxr-xr-x 1 root root 000 Jan 1 0:00 red5-shutdown.sh

↑目次に戻る


5.1.8. サーバの起動

Red5Pro Serverを以下コマンドより起動して下さい。

ubuntu@ip-xxx:/usr/local/red5pro$ sudo systemctl start red5pro

サーバのアップグレードに関しては以上です。

↑目次に戻る


5.1.9. 動作確認

 Red5Pro Serverを起動後、前セクション「 Red5Pro Serverの動作確認 」の手順を踏み、動作確認を行ってください。なお、バージョンを確認するには、画面の左上に表示されているバージョン番号を使用します。

↑目次に戻る


5.2. アウトバウンドの設定時の注意点

 アウトバウンドの設定時の注意点について解説します。

AWSに限らず、一般的なサーバのインバウンド、アウトバウンドは「必要なポートのみを然るべき箇所から接続可能にする、もしくは通信可能にする」というのがセオリーです。

しかしRed5Pro Serverの仕様上、アウトバウンドにはポート「443」を必ず開けるようにして下さい。

本セクションでは、アウトバウンドへポート「443」を開ける設定の手順を示します。

↑目次に戻る


5.2.1. AWSコンソールへのログイン

 以下のURLより、AWSコンソールにログインして下さい。

AWSコンソールへ

↑目次に戻る


5.2.2. セキュリティグループ編集

 セキュリティグループを編集します。ログイン後、画面「AWS サービス」に遷移したら「EC2」ダッシュボードをクリックして下さい。

以下の画面に遷移したら、「X個のセキュリティグループ」をクリックします。

セキュリティグループ一覧画面に遷移したら、編集するセキュリティグループ※1、「 アウトバウンド※2の順にクリックします。

その後表示された「編集※3をクリックし、アウトバウンドを編集します。

↑目次に戻る


5.2.3. アウトバウンドのルールの編集

 アウトバウンドにルールを追加していきます。まず「ルールを追加」をクリックします。

クリックすると、以下のキャプチャーに示す行が追加されます。

各項目に設定する値を以下の表に示します。

ルールの設定値

タイプ

プロトコル

ポート範囲

ソース

説明

カスタムTCP

TCP

443

カスタム(0.0.0.0/0)

標準のHTTPSポート

設定後「保存」をクリックします。

完了後、アウトバウンドのルール一覧に設定が反映されていたら、ルールの追加は完了です。

↑目次に戻る


5.3. その他オプション機能

 本セクションでは、Red5Pro Serverの構築におけるオプション機能を紹介しています。

↑目次に戻る


5.3.1. サービスの削除

 サービスを無効にして削除するには、端末で以下の2つの手順を実行します。

サービスの自動起動を無効にします。

ubuntu@ip-xxx:~$ sudo systemctl disable /lib/systemd/system/red5pro.service

「red5pro.service」の削除を行います。

以下のコマンドにより/lib/systemd/system/に存在する「red5pro.service」の削除ができます。

ubuntu@ip-xxx:~$ sudo rm /lib/systemd/system/red5pro.service

↑目次に戻る


5.3.2. 最大Javaヒープサイズ変更

 「red5.sh」の太字の部分の値を変更すると、最大のJavaヒープサイズを変更できます。最大ヒープサイズを大きくすると、必要に応じてサーバがRed5Proで使用可能なメモリ量を割り当てることができます。

デフォルトの最大ヒープサイズは2ギガバイト(-Xmx2g)に設定しています。

# JAVA options

# You can set JVM additional options here if you want

if [ -z "$JVM_OPTS" ]; then

JVM_OPTS="-Xms2g -Xmx2g -Xverify:none -Djava.net.preferIPv4Stack=true -XX:+TieredCompilation -XX:+UseBiasedLocking -XX:InitialCodeCacheSize=8m -XX:ReservedCodeCacheSize=32m -Dorg.terracotta.quartz.skipUpdateCheck=true -XX:MaxMetaspaceSize=128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC"

fi

※Red5Pro Serverを手動で起動する場合は、「sudo ./red5.sh」を実行してRed5Pro Serverを起動できます。但し、ターミナルのセッションが切れるとプロセスが停止することに注意してください。実行し続ける場合は、「sudo ./red5.sh &」を実行してください。本来、運用上ではサービス化を行う為、コマンドによる起動方法はこの限りではありません。

↑目次に戻る


5.4. ログファイルの各種設定

 「Logback RollingFileAppender」を利用して、ログ出力をローテーションするためのさまざまなオプションがあります。ロールオーバーを実装するには、「$RED5_HOME/conf/logback.xml」の「<appender class = "ch.qos.logback.core.FileAppender" name = "FILE">」セクションの後に、必要なオプションを追加する必要があります。以下に例を示します。

5.4.1. サイズベースの設定

  以下の設定では、ログファイル数が最大20で容量200MB以上でロールオーバーします。

<appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ROLLING_LOG">

<File>log/red5.log</File>

<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">

<fileNamePattern>log/red5.%i.log</fileNamePattern>

<minIndex>1</minIndex>

<maxIndex>20</maxIndex>

</rollingPolicy>

<triggeringPolicy

class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">

<maxFileSize>200MB</maxFileSize>

</triggeringPolicy>

<encoder>

<pattern>%d{ISO8601} [%thread] %-5level %logger{35} - %msg%n</pattern>

</encoder>

</appender>

↑目次に戻る


5.4.2. 時間ベースの設定

 以下の設定では、最大30日間でロールオーバーします。

<appender class="ch.qos.logback.core.rolling.RollingFileAppender" name="ROLLING_LOG">

<File>log/red5.log</File>

<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

<fileNamePattern>log/red5.%d{yyyy-MM-dd}.log</fileNamePattern>

<maxHistory>30</maxHistory>

</rollingPolicy>

<encoder>

<pattern>%d{ISO8601} [%thread] %-5level %logger{35} - %msg%n</pattern>

</encoder>

</appender>

↑目次に戻る


5.5. トラブルシューティング

 ホスティングサービスが提供する仮想サーバーは、public及びprivate IPアドレスをRed5Pro Serverに送信できない場合があります。その解決策として、Red5Pro ServerにこれらのIP割り当てを強制する方法があります。この方法は、「$RED5_HOME/conf/webrtc-plugin.properties」を変更することで実現できます。以下の行のコメントを外し、サーバのpublic及びprivate IPアドレスを変更します。

# Forcing a public IP address

force.public.ip=server-public-ip-address

# Forcing a private IP address

force.local.ip=erver-private-ip-address

※ICEのエラーが発生している場合は、以下のコメントを外してポートの可用性チェックを有効にする必要があります。

# Configure port availability checking

check.port.availability=true

↑目次に戻る