Red5Pro Server 環境構築手順書 (AWS版) |
株式会社サムライズ |
改訂履歴
版数 |
日付 |
内容 |
1.0 |
2018/11/01 |
初版 |
本稿はInfrared5( http://www.infrared5.com/ )が提供する製品Red5Proのストリーミングサーバ(Red5Pro Server)の環境構築手順を記載したものです。Red5Pro Serverは動画ストリーミングサーバであり、自身のプラットフォームにて独自の環境を構築して、拡張性のあるライブストリーミングを配信、受信することができます。
本稿ではAWS上のEC2インスタンスにRed5Pro Serverを構築する方法を解説しています。
導入前に、必ず本セクションの「事前準備 」を予めご確認頂きますようお願い致します。
システムの概要についての関連リンク先、Red5Pro Serverの構成を以下に示します。
関連リンク先
内容 |
URL |
Red5Proの概要 |
|
Red5Pro Serverについて |
サーバ構成
構成要素 |
バージョン |
概要 |
Red5Pro Server |
5.0.0 |
Red5Pro Serverの最新バージョン ※1 |
Ubuntu |
16.04 LTS |
Red5Proが推奨しているUbuntuのバージョン |
※1・・・2018/07 現在
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」 に保存されていることを前提としています。
本稿ではAWS EC2インスタンス上にRed5Proサーバを構築する手順を解説致します。
したがって、AWSアカウントが必要となります。アカウントを所持していない場合は、以下のリンクより事前に作成を行って下さい。
本稿では「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)の操作としています。
本セクションでは、AWS環境の構築手順について説明します。
以下のURLより、AWSコンソールにログインして下さい。
EC2インスタンスを作成します。ログイン後、画面「AWS サービス」に遷移したら「EC2」ダッシュボードをクリックして下さい。
「インスタンスの作成」をクリックし、EC2インスタンスを作成します。
Amazon マシンイメージ(AMI)を指定します。「Ubuntu Server 16.04 LTS (HVM), SSD Volume Type」を選択します。
AMIのインスタンスタイプを指定します。インスタンスタイプは利用用途に合ったサーバスペックを選択してください。本稿ではRed5Proが推奨する、殆どのライブストリーミング実装をサポートするインスタンスタイプ「c4.xlarge」※①を選択しています。選択後「 次の手順: インスタンスの詳細の設定」※②をクリックします。
インスタンスの詳細設定を行います。デフォルトの設定とし、「次の手順: ストレージの追加」をクリックします。
インスタンスのストレージタイプ、サイズの設定を行います。用途に合ったストレージの容量を設定して下さい。本稿ではOSを含む十分な容量 「 32GB」※① を確保しています。VoDなど配信用動画ファイルを直接サーバ上に配置する運用の場合、それに見合うストレージ容量を準備する必要があります。設定後、「 次の手順: タグの追加」※②をクリックします。
タグを設定します。タグはAWS リソースを目的、所有者、環境などを「キー」と「値」で分類することができます。本稿ではタグを使用しないため、デフォルトの設定のまま「 次の手順: セキュリティグループの設定」をクリックします。
セキュリティグループの設定を行います。セキュリティグループは、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ポート範囲 |
設定後「確認と作成」をクリックします。
アウトバウンドはセキュリティ上、必要以外のポートを閉じる事がセオリーですが、Red5Pro
Serverの仕様上、TCPポート「443」を開く必要がございます。詳細は「 5.2. アウトバウンドの設定時の注意点」を参照下さい。
インスタンスの作成情報を確認します。確認し、問題がなければ「作成」をクリックします。
サーバ接続認証用のキーを作成します。
以下の画面に遷移したら、EC2インスタンスの作成が開始されました。
作成が完了するまで、数十秒の待ち時間が必要です。
インスタンスが正常に作成されたかを確認します。以下のキャプチャーの「サービス 」より、ダッシュボード一覧画面へ遷移します。
インスタンスのダッシュボード「EC2」をクリックします。
「実行中のインスタンス」をクリックします。
インスタンス一覧画面に遷移しインスタンスが存在すれば、正常に作成されています。
また、以下のようにインスタンスの実行状態が「running」になっていることも確認して下さい。
以上でAWS環境構築は完了です。以降の手順は、次セクション「 Red5Pro Serverのインストール」を参照してください。
本セクションでは、Red5Pro Serverのインストール手順について説明します。
前セクションにてEC2をベースに構築することを記載の前提としていますが、オンプレミスでサーバを構築する際も、本セクションの手順を実施することで構築が可能です。
作成した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:~$ |
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 |
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 |
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」という命名で作成してください。
使いやすさを考慮して、ディレクトリ「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 |
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 |
本セクションでは、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 \ |
「red5pro.service」の権限を変更します。rootユーザは読み書き可能に、その他は読み取り専用にします。
ubuntu@ip-xxx:/usr/local/red5pro$ sudo chmod 644 /lib/systemd/system/red5pro.service |
デーモンをリロードします。
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 |
Red5Pro Serverのサービスが正常に起動したことを確認後、サーバからログアウトします。
ubuntu@ip-xxx:/usr/local/red5pro$ exit |
以降の手順に関しては、次セクション「Red5Pro Serverの動作確認 」を参照し、動作確認を行って下さい。
本セクションでは、Red5Pro Serverの動作確認を行います。ポート5080でサーバにアクセスして、Red5Pro
Serverが動作することを確認します。
Webブラウザを開き、以下のURLにアクセスします。
http://_your server ip_:5080(http://localhost:5080など) |
以下の画面が確認できればサーバの動作確認は完了です。
本セクションでは、起動したRed5Pro ServerでHLSによるVoD配信をケースに確認を行います。
配信ディレクトリ(/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 |
動画サンプルを配信ディレクトリにコピーします。以下のコマンドを実行して下さい。
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 |
以下の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」をクリックし、設定を反映します。
「Save」ボタンを押下後、動画再生領域に以下のような矢印が表示されます。
この矢印を押下すると、動画が再生されます。
動画が再生されたら、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 |
稼働中のサービスを停止します。.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 |
新モジュール($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 |
「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」という命名で作成してください。
既に構成ファイルを編集した場合は、以前の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 |
現行モジュールのディレクトリ名称をリネームします。
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 |
新モジュールのディレクトリ名称を、稼働していた現行モジュールのディレクトリ名称に合わせて変更します。(本稿では「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 |
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 |
Red5Pro Serverを以下コマンドより起動して下さい。
ubuntu@ip-xxx:/usr/local/red5pro$ sudo systemctl start red5pro |
サーバのアップグレードに関しては以上です。
Red5Pro Serverを起動後、前セクション「 Red5Pro Serverの動作確認 」の手順を踏み、動作確認を行ってください。なお、バージョンを確認するには、画面の左上に表示されているバージョン番号を使用します。
アウトバウンドの設定時の注意点について解説します。
AWSに限らず、一般的なサーバのインバウンド、アウトバウンドは「必要なポートのみを然るべき箇所から接続可能にする、もしくは通信可能にする」というのがセオリーです。
しかしRed5Pro Serverの仕様上、アウトバウンドにはポート「443」を必ず開けるようにして下さい。
本セクションでは、アウトバウンドへポート「443」を開ける設定の手順を示します。
以下のURLより、AWSコンソールにログインして下さい。
セキュリティグループを編集します。ログイン後、画面「AWS サービス」に遷移したら「EC2」ダッシュボードをクリックして下さい。
以下の画面に遷移したら、「X個のセキュリティグループ」をクリックします。
セキュリティグループ一覧画面に遷移したら、編集するセキュリティグループ※1、「 アウトバウンド」※2の順にクリックします。
その後表示された「編集」※3をクリックし、アウトバウンドを編集します。
アウトバウンドにルールを追加していきます。まず「ルールを追加」をクリックします。
クリックすると、以下のキャプチャーに示す行が追加されます。
各項目に設定する値を以下の表に示します。
ルールの設定値
タイプ |
プロトコル |
ポート範囲 |
ソース |
説明 |
カスタムTCP |
TCP |
443 |
カスタム(0.0.0.0/0) |
標準のHTTPSポート |
設定後「保存」をクリックします。
完了後、アウトバウンドのルール一覧に設定が反映されていたら、ルールの追加は完了です。
本セクションでは、Red5Pro Serverの構築におけるオプション機能を紹介しています。
サービスを無効にして削除するには、端末で以下の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 |
「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 &」を実行してください。本来、運用上ではサービス化を行う為、コマンドによる起動方法はこの限りではありません。
「Logback RollingFileAppender」を利用して、ログ出力をローテーションするためのさまざまなオプションがあります。ロールオーバーを実装するには、「$RED5_HOME/conf/logback.xml」の「<appender class = "ch.qos.logback.core.FileAppender" name = "FILE">」セクションの後に、必要なオプションを追加する必要があります。以下に例を示します。
以下の設定では、ログファイル数が最大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> |
以下の設定では、最大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> |
ホスティングサービスが提供する仮想サーバーは、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 |