Linux活用レシピ > AWS活用 > Amazon Lightsailでライブ配信サーバを構成する方法
Amazon Lightsailを使ってライブ配信サーバを簡単に構成するレシピを紹介します。

Amazon Lightsailでライブ配信サーバを構成



Linuxとnginxの構成

    Amazon Lightsailでインスタンスを作成できれば、次にOSコンソールからnginxのインストールと設定を行います。
    まず、作成したインスタンスのOSコンソールを表示させますので、以下の赤枠で囲んだ部分をクリックします。

    OSコンソールの表示


    以下の通りOSコンソールがブラウザで表示されます。。

    LightsailのOSコンソール


    以下のコマンドでパッケージの最新化を行います。
    $ sudo apt update
    $ sudo apt upgrade
    


    アップグレード中に以下のように設定を変更するか聞かれますが、ローカルバージョンを維持する形で、以下の通り選択されたままにしてください。

    Package configuration


    「TAB」キーで以下の通り「OK」を選択し「ENTER」キーで決定します。

    Package configuration OK


    最新化が完了すればコンソールに戻るので、以下のコマンドでnginx と rtspモジュールを追加します。
    $ sudo apt install -y nginx libnginx-mod-rtmp
    


    次に以下の通り、nginxの設定ファイルを開き、
    $ sudo vi /etc/nginx/nginx.conf
    
    以下のrtmpの設定を末尾に追記します。
    rtmp {
      server {
        listen 1935;
        chunk_size 4096;
        application live {
          live on;
          hls on;
          hls_path /var/www/html;
          hls_fragment 5s;
          hls_type live;
        }
      }
    }
    


    設定が保存できれば、nginxを以下のコマンドで再起動します。
    $ sudo service nginx restart
    


    最後にindex.htmlを作成し、video-jsを追加します。
    $ sudo vi /var/www/html/index.html
    
    まず、以下の内容でindex.htmlを記述します。
    <!DOCTYPE html>
    <html lang="en" class="">
    <head>
      <link href="http://vjs.zencdn.net/7.6.6/video-js.css" 
    rel="stylesheet">
      <script src="http://vjs.zencdn.net/7.6.6/video.js"></script>
    </head>
    <style type="text/css">
      #live {
        position: absolute;
        left: 0;
        top: 0;
        min-width: 100%;
        min-height: 100%;
        width: 100%;
        height: 100%;
        z-index: 1;
      }
    </style>
    <body>
      <video id="live" class="video-js vjs-default-skin" 
    controls autoplay fullc preload="auto" data-setup='{}'>
        <source src="{key}.m3u8" type='application/x-mpegURL'>
        <source src="rtmp://{ip}:1935/live/{key}" type='rtmp/mp4'>
        <p class="vjs-no-js">Not Suppoted</p>
       </video>
    </body>
    </html>
    
    ※video-jsはhtml5対応のビューワーになります。
    うまく貼り付けられない場合は、当サイトに保管していますので、以下のコマンドで取得してください。
    $ sudo wget \
    "https://linux-memo.net/aws/livestreaming_index.html" \
    -O /var/www/html/index.html
    

    次に、index.htmlの中にある{ip}をインスタンスの「パブリックIP」に、{key}ストリームキーに置き換えます。
    ストリームキーは、動画を送信するエンコーダソフトと一致させればよいので、任意の文字列で指定してください。

    ここで、インスタンスの「パブリックIP」はLingtsailのホーム画面にあるインスタンスから以下の通り赤枠の部分をクリックし、

    Instance管理ボタン

    表示されるメニューから、「管理」を選択します。
    Instanceメニュー

    以下の通りインスタンスの管理画面が表示されますので、「パブリックIP」に記載されているIPアドレスが、インスタンスの「パブリックIP」になります。
    Instanceメニュー


    では、「index.html」の中にある{ip}をインスタンスの「パブリックIP」に、{key}ストリームキーに置き換えます。
    分かりやすいように、インスタンスの「パブリックIP」を指定する{ip}赤色で、エンコーダソフトと一致させるストリームキーを指定する{key}青色で表示します。
    特に{key}は2か所ありますので、入力漏れのないよう注意してください。
    <!DOCTYPE html>
    <html lang="en" class="">
    <head>
      <link href="http://vjs.zencdn.net/7.6.6/video-js.css" 
    rel="stylesheet">
      <script src="http://vjs.zencdn.net/7.6.6/video.js"></script>
    </head>
    <style type="text/css">
      #live {
        position: absolute;
        left: 0;
        top: 0;
        min-width: 100%;
        min-height: 100%;
        width: 100%;
        height: 100%;
        z-index: 1;
      }
    </style>
    <body>
      <video id="live" class="video-js vjs-default-skin" 
    controls autoplay fullc preload="auto" data-setup='{}'>
        <source src="{key}.m3u8" type='application/x-mpegURL'>
        <source src="rtmp://{ip}:1935/live/{key}" type='rtmp/mp4'>
        <p class="vjs-no-js">Not Suppoted</p>
       </video>
    </body>
    </html>
    

    例えば、「パブリックIP」が「1.1.1.1」、「ストリームキー」が「hogehogehoge」とすると、以下のようになります。
    <!DOCTYPE html>
    <html lang="en" class="">
    <head>
      <link href="http://vjs.zencdn.net/7.6.6/video-js.css" 
    rel="stylesheet">
      <script src="http://vjs.zencdn.net/7.6.6/video.js"></script>
    </head>
    <style type="text/css">
      #live {
        position: absolute;
        left: 0;
        top: 0;
        min-width: 100%;
        min-height: 100%;
        width: 100%;
        height: 100%;
        z-index: 1;
      }
    </style>
    <body>
      <video id="live" class="video-js vjs-default-skin" 
    controls autoplay fullc preload="auto" data-setup='{}'>
        <source src="hogehogehoge.m3u8" type='application/x-mpegURL'>
        <source src="rtmp://1.1.1.1:1935/live/hogehogehoge" type='rtmp/mp4'>
        <p class="vjs-no-js">Not Suppoted</p>
       </video>
    </body>
    </html>
    

    以上で「index.html」の編集は完了です。

    では最後に、RTMPプロトコルで使用するTCP:1935を、インスタンスのファイアウォールで許可します。
    先ほどインスタンスの「パブリックIP」を確認した、以下のインスタンスの管理画面から「ネットワーキング」を選択します。
    ネットワーキング


    ネットワーキングの画面が表示されます。
    ネットワーキング画面


    画面の中ほどに、以下の通り「IPv4」ファイアウォールがありますので、
    「+ルールを追加」を選択します。
    IPv4ファイアウォール


    追加するルールは、以下の通り、
    アプリケーション:カスタム
    プロトコル:TCP
    ポートまたは範囲:1935
    を指定します。

    追加するルール


    入力できれば、以下の通り「作成」をクリックします。

    追加するルール


    すると、以下の通りルールが追加されます。

    追加するルール


    以上で、OSコンソールからnginxのインストールと設定は完了です。
    それでは早速、ライブ配信と視聴を行ってみましょう。