GNU/Linux >> LINUX-Kenntnisse >  >> Linux

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

RTMP ist ein von Macromedia entwickeltes Echtzeit-Messaging-Protokoll, das zum Streamen von Audio, Video und Daten über das Internet verwendet werden kann. Nginx RTMP ist ein Nginx-basierter Medienstreamer, der mit vielen Funktionen ausgestattet ist, darunter H264/AAC-Unterstützung, Online-Transcodierung mit FFmpeg, HTTP-Callback-Unterstützung und ein HTTP-Steuermodul zum Aufzeichnen von Audio/Video.

In diesem Tutorial zeigen wir Ihnen, wie Sie Nginx mit dem RTMP-Modul kompilieren und einen RTMP-Livestream unter CentOS 8 erstellen.

Voraussetzungen

  • Ein frischer CentOS 8 VPS auf der Atlantic.Net Cloud Platform
  • Ein auf Ihrem Server konfiguriertes Root-Passwort

Schritt 1 – Erstellen Sie einen Atlantic.Net Cloud-Server

Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie CentOS 8 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.

Sobald Sie sich bei Ihrem CentOS 8-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.

yum update -y

Schritt 2 – Erforderliche Abhängigkeiten installieren

Bevor Sie beginnen, müssen Sie die Abhängigkeiten installieren, die zum Kompilieren von Nginx mit RTMP-Unterstützung erforderlich sind. Installieren Sie zuerst das Development Tool-Gruppenpaket mit dem folgenden Befehl:

yum groupinstall 'Development Tools' -y

Installieren Sie als Nächstes das EPEL-Repository mit dem folgenden Befehl:

yum install epel-release -y

Installieren Sie nach der Installation andere erforderliche Abhängigkeiten mit dem folgenden Befehl:

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

Sobald alle Pakete installiert sind, können Sie mit dem Kompilieren von Nginx fortfahren.

Schritt 3 – Erforderliche Komponenten herunterladen

Zuerst müssen Sie die erforderlichen Komponenten herunterladen, um Nginx mit RTMP-Unterstützung zu kompilieren.

Laden Sie zunächst die neueste stabile Version von Nginx mit dem folgenden Befehl herunter:

wget http://nginx.org/download/nginx-1.18.0.tar.gz

Extrahieren Sie es nach dem Herunterladen mit dem folgenden Befehl:

tar -xvzf nginx-1.18.0.tar.gz

Laden Sie als Nächstes PCRE und Zlib mit dem folgenden Befehl herunter:

wget https://ftp.pcre.org/pub/pcre/pcre-8.42.zip
wget https://www.zlib.net/zlib-1.2.11.tar.gz

Extrahieren Sie sie nach dem Herunterladen mit dem folgenden Befehl:

unzip pcre-8.42.zip
tar -xvzf zlib-1.2.11.tar.gz

Sobald beide extrahiert sind, laden Sie OpenSSL mit dem folgenden Befehl herunter:

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

Extrahieren Sie als Nächstes das heruntergeladene Paket mit dem folgenden Befehl:

tar -xzvf openssl-1.1.0h.tar.gz

Laden Sie als Nächstes die neueste Version des Nginx RTMP-Moduls aus dem Git-Repository mit dem folgenden Befehl herunter:

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

Sobald alle Komponenten heruntergeladen sind, können Sie mit dem nächsten Schritt fortfahren.

Schritt 4 – Nginx mit RTMP-Unterstützung installieren

Wechseln Sie zunächst mit dem folgenden Befehl in das Verzeichnis von Nginx:

cd nginx-1.18.0/

Als nächstes konfigurieren Sie Nginx mit RTMP-Unterstützung mit dem folgenden Befehl:

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

Sobald der Konfigurationsprozess abgeschlossen ist, sollten Sie die folgende Ausgabe erhalten:

Configuration summary
+ using threads
+ using PCRE library: ../pcre-8.42
+ using OpenSSL library: ../openssl-1.1.0h
+ using zlib library: ../zlib-1.2.11

nginx path prefix: "/etc/nginx"
nginx binary file: "/usr/sbin/nginx"
nginx modules path: "/usr/lib64/nginx/modules"
nginx configuration prefix: "/etc/nginx"
nginx configuration file: "/etc/nginx/nginx.conf"
nginx pid file: "/var/run/nginx.pid"
nginx error log file: "/var/log/nginx/error.log"
nginx http access log file: "/var/log/nginx/access.log"
nginx http client request body temporary files: "/var/cache/nginx/client_temp"
nginx http proxy temporary files: "/var/cache/nginx/proxy_temp"
nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp"
nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp"
nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"

Als nächstes installieren Sie Nginx mit dem folgenden Befehl:

make
make install

Überprüfen Sie nach der Installation von Nginx die installierte Version von Nginx mit dem folgenden Befehl:

nginx -V

Sie sollten die folgende Ausgabe erhalten:

nginx version: nginx/1.18.0 (CentOS)
built by gcc 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)
built with OpenSSL 1.1.0h 27 Mar 2018
TLS SNI support enabled
configure arguments: --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

Schritt 5 – Erstellen Sie eine Systemd-Dienstdatei für Nginx

Als Nächstes müssen Sie eine Nginx-Dienstdatei erstellen, um den Nginx-Dienst zu verwalten. Sie können es mit dem folgenden Befehl erstellen:

nano /lib/systemd/system/nginx.service

Fügen Sie die folgenden Zeilen hinzu:

[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 schließen Sie die Datei, wenn Sie fertig sind, und laden Sie dann den systemd-Daemon mit dem folgenden Befehl neu:

systemctl daemon-reload

Starten Sie als Nächstes Nginx und aktivieren Sie es mit dem folgenden Befehl, um es beim Systemneustart zu starten:

systemctl start nginx
systemctl enable nginx

Schritt 6 – Konfigurieren Sie Nginx für die Verwendung von RTMP

First, create a backup copy of the Nginx main configuration file with the following command:

mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

Erstellen Sie als Nächstes eine neue Nginx-Konfigurationsdatei mit dem folgenden Befehl:

nano /etc/nginx/nginx.conf

Fügen Sie die folgenden Zeilen hinzu:

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 schließen Sie die Datei, erstellen Sie dann ein neues Verzeichnis für die HLS-Konfiguration und weisen Sie ihr den richtigen Besitz zu:

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

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Schritt 7 – RTMP-Livestream erstellen

Als Nächstes müssen Sie ein RTMP-Stream-Video erstellen und einen neuen Live-RTMP-Stream erstellen. Sie können dies tun, indem Sie die Hauptkonfigurationsdatei von Nginx bearbeiten:

nano /etc/nginx/nginx.conf

Suchen Sie die folgenden Zeilen:

hls_playlist_length 60;
# disable consuming the stream from nginx as rtmp
deny play all;
}

Fügen Sie die folgenden Zeilen genau unter der obigen Zeile hinzu:

application vod {
play /mnt/mp4s;
}

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

Speichern und schließen Sie die Datei und starten Sie dann den Nginx-Dienst mit dem folgenden Befehl neu:

systemctl restart nginx

Erstellen Sie als Nächstes ein Verzeichnis zum Speichern von MP4-Videos:

mkdir -p /mnt/mp4s

Laden Sie als Nächstes das Beispielvideo mit dem folgenden Befehl herunter:

cd /mnt/mp4s
wget https://file-examples-com.github.io/uploads/2017/04/file_example_MP4_480_1_5MG.mp4 -O 
myfile.mp4

Geben Sie als Nächstes dem /mnt/mp4s-Verzeichnis den richtigen Besitz:

chown -R nginx:nginx /mnt/mp4s

Schritt 8 – Installieren Sie FFmpeg und starten Sie den Streaming-Server

Zuerst müssen Sie FFmpeg auf Ihrem Server installieren. Standardmäßig ist es nicht im Standard-Repository von CentOS 8 installiert, daher müssen Sie das Powertool-Repository in Ihrem System aktivieren. Sie können es mit dem folgenden Befehl aktivieren:

yum install epel-release dnf-utils
yum-config-manager --set-enabled PowerTools
yum-config-manager --add-repo=https://negativo17.org/repos/epel-multimedia.repo

Als nächstes installieren Sie FFmpeg mit dem folgenden Befehl:

yum install ffmpeg -y

Sobald FFmpeg installiert ist, starten Sie den Streaming-Server mit dem folgenden Befehl:

ffmpeg -re -i /mnt/mp4s/myfile.mp4 -vcodec libx264 -vprofile baseline -g 30 -acodec aac -strict -2 -
f flv rtmp://your-server-ip:1935/show/vod

Schritt 9 – RTMP-Streaming testen

Als Nächstes müssen Sie den RTMP-Vod-Stream mit dem VLC Media Player testen.

Sobald das Clientsystem geöffnet ist, öffnen Sie den VLS Media Player und gehen Sie zu VLC Media => Open Network Stream . Sie sollten den folgenden Bildschirm sehen:

Geben Sie die URL Ihres RTMP-Streaming-Servers an und klicken Sie auf Play Schaltfläche.

Sobald Sie erfolgreich verbunden sind, sollten Sie Ihr MP4-Video auf dem folgenden Bildschirm sehen:

Schlussfolgerung

Im obigen Tutorial haben Sie gelernt, wie Sie Nginx mit RTMP-Unterstützung installieren. Sie haben auch gelernt, wie Sie Nginx konfigurieren, um MP4-Videos zu streamen und mit dem VLC Media Player vom Remote-System abzuspielen. Versuchen Sie noch heute, Nginx mit RTMP-Unterstützung auf VPS-Hosting von Atlantic.Net zu installieren!

Erfahren Sie mehr über unsere VPS-Hosting-Services und Virtual Private Server.


Linux
  1. So installieren Sie phpMyAdmin mit Nginx unter CentOS 7

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

  3. So installieren Sie SuiteCRM mit Nginx unter CentOS 7

  4. So installieren Sie ModSecurity mit Nginx unter Rocky Linux 8

  5. Installieren Sie Nginx unter CentOS 6

So installieren Sie Java unter CentOS 8

So installieren Sie Yarn unter CentOS 8

So installieren Sie Bludit CMS mit NGINX unter Ubuntu 20.04

So installieren Sie Kubernetes mit Minikube unter CentOS 8

So installieren Sie das Talkyard-Forum mit Nginx unter Ubuntu 18.04

Wie installiere ich Nginx unter CentOS 7?