GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7にRTMPモジュールを使用してNginxをインストールする方法

RTMP(Real Time Messaging Protocol)は、フラッシュベースのプラットフォームテクノロジ間でインターネットを介してデータ、オーディオ、およびビデオを送信するための高性能プロトコルです。元々はMacromediaによって開発され、現在はAdobeによって所有されています。

Nginx RTMPは、RTMP、HLS、およびMPEG-DASHライブストリーミングを備えたnginxベースのメディアストリーマーです。 Nginx RTMPモジュールには、H264 / AACサポート、HTTPコールバックサポート、オーディオ/ビデオを記録するためのHTTP制御モジュールなどの多くの機能があります。

このチュートリアルでは、RTMPモジュールを使用してNginxWebサーバーをインストールおよび構成する方法を示します。最新のCentOS7サーバーを使用します。このガイドには、nginxおよびrtmpモジュールの構成と、RTMPライブストリームおよびビデオオンデマンドの作成が含まれます。

前提条件
  • CentOS7サーバー
  • root権限

何をしますか?

  1. 依存関係のインストール
  2. 追加パッケージとRTMPモジュールを含むNginxをダウンロード
  3. Nginxをコンパイルしてソースからインストールする
  4. Nginxをサービスとして構成する
  5. NginxRTMPモジュールを構成する
  6. 最初のRTMPライブストリームを設定する
  7. テスト
ステップ1-依存関係をインストールする

このチュートリアルでは、ソースからNginxWebサーバーを構築します。開発ツール、EPELリポジトリ、その他のパッケージなど、必要なすべてのパッケージの依存関係をインストールする必要があります。

CentOSの「開発ツール」をインストールします。

sudo yum -y groupinstall 'Development Tools'

EPELリポジトリを追加します。

sudo yum -y install epel-release

Nginxの依存関係をインストールします。

sudo yum install -y  wget git unzip perl perl-devel perl-ExtUtils-Embed libxslt libxslt-devel libxml2 libxml2-devel gd gd-devel pcre-devel GeoIP GeoIP-devel

すべてのパッケージがインストールされるのを待ちます。

ステップ2-追加パッケージとRTMPモジュールを含むNginxをダウンロード

このステップでは、pcre、zlib、OpenSSLなどの追加の依存関係を含むnginxソースコードをダウンロードします。

'/ usr / local/src'ディレクトリに移動します。

cd /usr/local/src

Nginx1.14.0をダウンロードして解凍します。

wget https://nginx.org/download/nginx-1.14.0.tar.gz
tar -xzvf nginx-1.14.0.tar.gz

pcreパッケージをダウンロードして解凍します。

wget https://ftp.pcre.org/pub/pcre/pcre-8.42.zip
unzip pcre-8.42.zip

zlibパッケージをダウンロードして解凍します。

wget https://www.zlib.net/zlib-1.2.11.tar.gz
tar -xzvf zlib-1.2.11.tar.gz

OpenSSLパッケージをダウンロードして解凍します。

wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -xzvf openssl-1.1.0h.tar.gz

次に、gitコマンドを使用してNginxRTMPモジュールのソースコードのクローンを作成します。

git clone https://github.com/sergey-dryabzhinsky/nginx-rtmp-module.git

そして、圧縮されたtar.gzファイルと.zipファイルをすべて削除します。

rm -f *.tar.gz *.zip

以下は、ディレクトリの詳細です。

ls -lah

これで、コンパイルしてインストールする準備が整いました。

ステップ3-Nginxをコンパイルしてソースからインストールする

'nginx-1.14.0'ディレクトリに移動します。

cd nginx-1.14.0/

以下のパラメーターを使用してnginx1.14.0を構成します。

./configure --prefix=/etc/nginx \
            --sbin-path=/usr/sbin/nginx \
            --modules-path=/usr/lib64/nginx/modules \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --pid-path=/var/run/nginx.pid \
            --lock-path=/var/run/nginx.lock \
            --user=nginx \
            --group=nginx \
            --build=CentOS \
            --builddir=nginx-1.14.0 \
            --with-select_module \
            --with-poll_module \
            --with-threads \
            --with-file-aio \
            --with-http_ssl_module \
            --with-http_v2_module \
            --with-http_realip_module \
            --with-http_addition_module \
            --with-http_xslt_module=dynamic \
            --with-http_image_filter_module=dynamic \
            --with-http_geoip_module=dynamic \
            --with-http_sub_module \
            --with-http_dav_module \
            --with-http_flv_module \
            --with-http_mp4_module \
            --with-http_gunzip_module \
            --with-http_gzip_static_module \
            --with-http_auth_request_module \
            --with-http_random_index_module \
            --with-http_secure_link_module \
            --with-http_degradation_module \
            --with-http_slice_module \
            --with-http_stub_status_module \
            --http-log-path=/var/log/nginx/access.log \
            --http-client-body-temp-path=/var/cache/nginx/client_temp \
            --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
            --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
            --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
            --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
            --with-mail=dynamic \
            --with-mail_ssl_module \
            --with-stream=dynamic \
            --with-stream_ssl_module \
            --with-stream_realip_module \
            --with-stream_geoip_module=dynamic \
            --with-stream_ssl_preread_module \
            --with-compat \
            --with-pcre=../pcre-8.42 \
            --with-pcre-jit \
            --with-zlib=../zlib-1.2.11 \
            --with-openssl=../openssl-1.1.0h \
            --with-openssl-opt=no-nextprotoneg \
            --add-module=../nginx-rtmp-module \
            --with-debug

次のコマンドを実行して、RTMPモジュールを使用してNginxをコンパイルおよびインストールします。

sudo make
sudo make install

インストールが完了したら、新しいシンボリックリンクモジュールディレクトリを作成し、新しいnginxユーザーとグループを作成し、新しいnginxキャッシュディレクトリを作成する必要があります。

nginxシンボリックリンクモジュールを「/etc/nginx」構成ディレクトリに作成します。

sudo ln -s /usr/lib64/nginx/modules /etc/nginx/modules

新しい「nginx」システムユーザーとグループを作成します。

sudo useradd -r -d /var/cache/nginx/ -s /sbin/nologin -U nginx

次に、新しいNginxキャッシュディレクトリ'/ var / cache / nginx'を作成し、ディレクトリの所有者を'nginx'ユーザーとグループに変更します。

mkdir -p /var/cache/nginx/
chown -R nginx:nginx /var/cache/nginx/

nginxの構成とインストールされているnginxのバージョンをテストします。

nginx -t
nginx -V

そして、以下が結果です。

Nginx Webサーバーは、RTMPモジュールが有効になっているCentOS7にインストールされています。

ステップ4-Nginxをサービスとして構成する

このチュートリアルでは、nginxをサービスとして実行し、systemdサービスディレクトリに新しいnginxサービスファイルを作成する必要があります。

'/ lib / systemd / system'ディレクトリに移動し、vimを使用して新しい'nginx.service'ファイルを作成します。

cd /lib/systemd/system/
vim nginx.service

以下の構成を貼り付けてください。

[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

保存して終了します。

次に、systemdシステムをリロードします。

systemctl daemon-reload

nginxサービスを開始し、システムの起動時に毎回起動できるようにします。

systemctl start nginx
systemctl enable nginx

Nginx Webサーバーは、CentOS7システム上でサービスとして稼働しています。

ステップ5-NginxRTMPモジュールを構成する

このステップでは、RTMPモジュール用の新しいカスタムNginx構成を作成します。

'/ etc / nginx'構成ディレクトリに移動し、元の'nginx.conf'ファイルをバックアップします。

cd /etc/nginx/
mv nginx.conf nginx.conf.asli

次に、カスタム構成「nginx.conf」を作成します。

vim nginx.conf

以下にNginxRTMP構成を貼り付けます。

worker_processes  auto;
events {
    worker_connections  1024;
}

# RTMP configuration
rtmp {
    server {
        listen 1935; # Listen on standard RTMP port
        chunk_size 4000;

# Define the Application
        application show {
            live on;
            # Turn on HLS
            hls on;
            hls_path /mnt/hls/;
            hls_fragment 3;
            hls_playlist_length 60;
            # disable consuming the stream from nginx as rtmp
            deny play all;
        }

    }
}

http {
    sendfile off;
    tcp_nopush on;
    aio on;
    directio 512;
    default_type application/octet-stream;

    server {
        listen 8080;

        location / {
            # Disable cache
            add_header 'Cache-Control' 'no-cache';

            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';

            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }

            types {
                application/dash+xml mpd;
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }

            root /mnt/;
        }
    }
}

保存して終了します。

次に、HLS構成用の新しいディレクトリを作成する必要があり、Webルートディレクトリが「/mnt」ディレクトリにあることを定義しました。

'/mnt'ディレクトリの下に'hls'ディレクトリを作成し、ディレクトリの所有者をnginxユーザーとグループに変更します。

mkdir -p /mnt/hls
chown -R nginx:nginx /mnt/hls

構成をテストし、nginxサービスを再起動します。

nginx -t
systemctl restart nginx

ステップ6-最初のRTMPライブストリームを設定する

このチュートリアルでは、サーバー上のmp4ビデオを使用してオンデマンドで新しいRTMPストリームビデオを作成し、OBSソフトウェアを使用してローカルコンピューターからブロードキャストされる新しいライブRTMPストリームを作成します。

'/ etc / nginx'構成ディレクトリに移動し、'nginx.conf'ファイルを編集します。

cd /etc/nginx/
vim nginx.conf

以下の構成を「rtmp{...}」ブラケットに貼り付けます。

        # RTMP video on demand for mp4 files
        application vod {
            play /mnt/mp4s;
        }

        # RTMP stream using OBS
        application stream {
            live on;
        }

保存して終了します。

次に、すべてのVODビデオを保存するための新しいディレクトリ「mp4s」を作成し、所有者をnginxユーザーグループに変更します。

mkdir -p /mnt/mp4s
chown -R nginx:nginx /mnt/mp4s

nginx構成をテストし、エラーがないことを確認してから、nginxサービスを再起動します。

nginx -t
systemctl restart nginx

RTMPライブストリームとVODストリームのNginx構成が完了しました。

ステップ7-テスト

VLCプレーヤーを使用してRTMPライブストリームとVODストリームをテストします。

ビデオオンデマンドストリーム

コンピューターでVLCアプリを開きます。

[ファイル]メニューをクリックして、[ネットワークを開く]オプションを選択します。

次に、VODストリームのRTMPURLを入力します。

rtmp://192.168.1.10:1935 / vod / file.mp4

[開く]ボタンをクリックします。

そして、以下はビデオストリームの結果です。

OBS(Open Broadcaster Software)を使用したライブストリーム

このチュートリアルでは、obsソフトウェアとvlcプレーヤーを使用してRTMPライブストリームをテストします。

オープンブロードキャスターソフトウェアを使用してターミナルウィンドウのみをストリーミングし、VLCプレーヤーを使用してRTMPライブストリームを視聴しようとします。

以下は、obsソフトウェアの構成です。

コンピューターでVLCアプリを開きます。

[ファイル]メニューをクリックし、[ネットワークを開く]オプションを選択します。

次に、ライブストリームのRTMPURLを入力します。

rtmp ://192.168.1.10:1935 / stream /

[開く]ボタンをクリックします。

以下は、nginxrtmpモジュールを介してオープンブロードキャスターを使用したライブストリームの結果です。

CentOS7へのRTMPモジュールを備えたNginxWebサーバーのインストールが正常に完了しました。


Cent OS
  1. CentOS7にNginxを使用してWordPressをインストールする方法

  2. CentOS 7 /RHEL7にNginxを使用してphpMyAdminをインストールする方法

  3. CentOS7にSitemagicCMSをインストールする方法–Nginxを使用

  1. CentOS7にNginxを使用してphpMyAdminをインストールする方法

  2. CentOS8にNginxとPHP7.3でNextcloudをインストールする方法

  3. CentOS7にNginxとMariaDBを使用してownCloud9.1をインストールする方法

  1. CentOS7にNginxとPHP7-FPMを使用してNextcloudをインストールする方法

  2. CentOS7にNginxを使用してLibreNMS監視ツールをインストールする方法

  3. CentOS7にNginxを使用してSuiteCRMをインストールする方法