GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren Sie Nginx mit dem RTMP-Modul unter CentOS 7

RTMP (Real Time Messaging Protocol) ist ein Hochleistungsprotokoll für die Übertragung von Daten, Audio und Video über das Internet zwischen Flash-basierten Plattformtechnologien. Ursprünglich von Macromedia entwickelt und jetzt im Besitz von Adobe.

Nginx RTMP ist ein Nginx-basierter Medienstreamer mit RTMP-, HLS- und MPEG-DASH-Live-Streaming. Das Nginx RTMP-Modul verfügt über viele Funktionen, einschließlich H264/AAC-Unterstützung, HTTP-Callback-Unterstützung, HTTP-Steuermodul zum Aufzeichnen von Audio/Video usw.

In diesem Tutorial zeige ich Ihnen, wie Sie den Nginx-Webserver mit dem RTMP-Modul installieren und konfigurieren. Wir werden den neuesten CentOS 7-Server verwenden, und dieser Leitfaden umfasst die Konfiguration von nginx und rtmp-Modulen sowie die Erstellung von RTMP-Livestreams und Video-on-Demand.

Voraussetzungen

  • CentOS 7-Server
  • Root-Rechte

Was werden wir tun?

  1. Abhängigkeiten installieren
  2. Nginx mit zusätzlichem Paket und RTMP-Modul herunterladen
  3. Nginx kompilieren und von der Quelle installieren
  4. Nginx als Dienst konfigurieren
  5. Nginx RTMP-Modul konfigurieren
  6. Ersten RTMP-Livestream einrichten
  7. Testen

Schritt 1 - Abhängigkeiten installieren

In diesem Tutorial erstellen wir den Nginx-Webserver aus der Quelle. Wir müssen alle erforderlichen Paketabhängigkeiten installieren, einschließlich Entwicklungstools, EPEL-Repository und anderer Pakete.

Installieren Sie CentOS 'Development Tools'.

sudo yum -y groupinstall 'Development Tools'

Fügen Sie das EPEL-Repository hinzu.

sudo yum -y install epel-release

Nginx-Abhängigkeiten installieren.

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

Warten Sie, bis alle Pakete installiert sind.

Schritt 2 – Laden Sie Nginx mit zusätzlichem Paket und RTMP-Modul herunter

In diesem Schritt laden wir den Nginx-Quellcode mit den zusätzlichen Abhängigkeiten einschließlich pcre, zlib und OpenSSL herunter.

Wechseln Sie in das Verzeichnis „/usr/local/src“.

cd /usr/local/src

Laden Sie Nginx 1.14.0 herunter und extrahieren Sie es.

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

Laden Sie das pcre-Paket herunter und extrahieren Sie es.

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

Laden Sie das zlib-Paket herunter und extrahieren Sie es.

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

Laden Sie das OpenSSL-Paket herunter und extrahieren Sie es.

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

Klonen Sie als Nächstes den Quellcode des Nginx RTMP-Moduls mit dem Befehl git.

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

Und entfernen Sie alle komprimierten tar.gz- und .zip-Dateien.

rm -f *.tar.gz *.zip

Nachfolgend sind die uns vorliegenden Verzeichnisdetails aufgeführt.

ls -lah

Und wir sind bereit zum Kompilieren und Installieren.

Schritt 3 – Nginx kompilieren und von der Quelle installieren

Wechseln Sie in das Verzeichnis „nginx-1.14.0“.

cd nginx-1.14.0/

Konfigurieren Sie nginx 1.14.0 mit den folgenden Parametern.

./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

Kompilieren und installieren Sie Nginx mit dem RTMP-Modul, indem Sie die folgenden Befehle ausführen.

sudo make
sudo make install

Wenn die Installation abgeschlossen ist, müssen wir ein neues Symlink-Modulverzeichnis erstellen, einen neuen Nginx-Benutzer und eine neue Gruppe erstellen und ein neues Nginx-Cache-Verzeichnis erstellen.

Erstellen Sie ein Nginx-Symlink-Modul im Konfigurationsverzeichnis ‚/etc/nginx‘.

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

Erstellen Sie einen neuen „nginx“-Systembenutzer und eine neue Gruppe.

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

Erstellen Sie nun ein neues Nginx-Cache-Verzeichnis ‚/var/cache/nginx‘ und ändern Sie den Eigentümer des Verzeichnisses in ‚nginx‘ Benutzer und Gruppe.

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

Testen Sie die nginx-Konfiguration und die installierte nginx-Version.

nginx -t
nginx -V

Und das Folgende ist das Ergebnis.

Der Nginx-Webserver wurde auf CentOS 7 mit aktiviertem RTMP-Modul installiert.

Schritt 4 – Nginx as a Service konfigurieren

In diesem Tutorial führen wir nginx als Dienst aus und müssen eine neue nginx-Dienstdatei im systemd-Dienstverzeichnis erstellen.

Gehen Sie in das Verzeichnis ‚/lib/systemd/system‘ und erstellen Sie eine neue ‚nginx.service‘-Datei mit vim.

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

Fügen Sie die Konfiguration unten ein.

[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

Speichern und beenden.

Laden Sie nun das systemd-System neu.

systemctl daemon-reload

Starten Sie den nginx-Dienst und aktivieren Sie ihn so, dass er jedes Mal beim Systemstart gestartet wird.

systemctl start nginx
systemctl enable nginx

Der Nginx-Webserver läuft als Dienst auf dem CentOS 7-System.

Schritt 5 – Nginx RTMP-Modul konfigurieren

In diesem Schritt erstellen wir eine neue benutzerdefinierte Nginx-Konfiguration für das RTMP-Modul.

Gehen Sie in das Konfigurationsverzeichnis ‚/etc/nginx‘ und sichern Sie die ursprüngliche ‚nginx.conf‘-Datei.

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

Erstellen Sie nun eine benutzerdefinierte Konfiguration 'nginx.conf'.

vim nginx.conf

Fügen Sie die Nginx RTMP-Konfiguration unten ein.

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/;
        }
    }
}

Speichern und beenden.

Als nächstes müssen wir ein neues Verzeichnis für die HLS-Konfiguration erstellen und wir haben definiert, dass sich das Web-Root-Verzeichnis im Verzeichnis „/mnt“ befindet.

Erstellen Sie das Verzeichnis „hls“ unter dem Verzeichnis „/mnt“ und ändern Sie den Eigentümer des Verzeichnisses in den Benutzer und die Gruppe „nginx“.

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

Testen Sie die Konfiguration und starten Sie den nginx-Dienst neu.

nginx -t
systemctl restart nginx

Schritt 6 – Richten Sie den ersten RTMP-Livestream ein

In diesem Tutorial erstellen wir unter Verwendung der mp4-Videos auf dem Server ein neues RTMP-Stream-Video auf Abruf und erstellen einen neuen Live-RTMP-Stream, der mithilfe der OBS-Software vom lokalen Computer übertragen wird.

Gehen Sie in das Konfigurationsverzeichnis „/etc/nginx“ und bearbeiten Sie die Datei „nginx.conf“.

cd /etc/nginx/
vim nginx.conf

Fügen Sie die Konfigurationen unten in die 'rtmp { ... }'-Klammer ein.

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

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

Speichern und beenden.

Erstellen Sie nun ein neues Verzeichnis „mp4s“ zum Speichern aller Vod-Videos und ändern Sie den Besitzer in die nginx-Benutzergruppe.

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

Testen Sie die nginx-Konfiguration und stellen Sie sicher, dass kein Fehler vorliegt, und starten Sie dann den nginx-Dienst neu.

nginx -t
systemctl restart nginx

Die Nginx-Konfiguration für den RTMP-Livestream und den Vod-Stream wurde abgeschlossen.

Schritt 7 – Testen

Testen Sie den RTMP-Livestream und den Vod-Stream mit dem VLC-Player.

Video-on-Demand-Stream

Öffnen Sie die VLC-App auf Ihrem Computer.

Klicken Sie auf das Menü „Datei“ und wählen Sie die Option „Netzwerk öffnen“.

Geben Sie nun die RTMP-URL für unseren Vod-Stream ein.

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

Klicken Sie auf die Schaltfläche „Öffnen“.

Und das Folgende sind die Ergebnisse des Videostreams.

Livestream mit OBS (Open Broadcaster Software)

In diesem Tutorial testen wir den RTMP-Livestream mit der obs-Software und dem vlc-Player.

Wir werden nur das Terminalfenster mit der Open Broadcaster-Software streamen und versuchen, den RTMP-Livestream mit dem VLC-Player anzusehen.

Nachfolgend meine Konfiguration für die obs-Software.

Öffnen Sie die VLC-App auf Ihrem Computer.

Klicken Sie auf das Menü „Datei“ und wählen Sie die Option „Netzwerk öffnen“.

Geben Sie nun die RTMP-URL für unseren Live-Stream ein.

rtmp://192.168.1.10:1935/stream/

Klicken Sie auf die Schaltfläche „Öffnen“.

Und das Folgende ist das Ergebnis des Live-Streams mit Open Broadcaster über das nginx rtmp-Modul.

Die Installation des Nginx-Webservers mit RTMP-Modul auf CentOS 7 wurde erfolgreich abgeschlossen.


Cent OS
  1. So installieren Sie WordPress mit Nginx unter CentOS 7

  2. So installieren Sie phpMyAdmin mit Nginx unter CentOS 7

  3. So installieren Sie Nextcloud mit Nginx und PHP 7.3 auf CentOS 8

  4. So installieren Sie phpMyAdmin mit Nginx unter CentOS 7 / RHEL 7

  5. So installieren Sie Sitemagic CMS auf CentOS 7 – mit Nginx

So installieren Sie Nginx mit ngx_pagespeed unter CentOS

So installieren Sie Nginx mit dem GeoIP-Modul

So installieren Sie Nginx mit PHP-FastCGI unter CentOS 6

So installieren Sie Magento mit Nginx unter CentOS 7

So installieren Sie Laravel mit Nginx unter CentOS 8

So installieren Sie Nginx mit dem RTMP-Modul unter CentOS 8