GNU/Linux >> Znalost Linux >  >> Linux

Jak nainstalovat Nginx s modulem RTMP na CentOS 8

RTMP je protokol zpráv v reálném čase vyvinutý společností Macromedia, který lze použít pro streamování zvuku, videa a dat přes internet. Nginx RTMP je streamer médií založený na Nginx, který přichází se spoustou funkcí včetně podpory H264/AAC, online překódování pomocí FFmpeg, podpory zpětného volání HTTP a řídicího modulu HTTP pro nahrávání zvuku/videa.

V tomto tutoriálu vám ukážeme, jak zkompilovat Nginx s modulem RTMP a vytvořit živý stream RTMP na CentOS 8.

Předpoklady

  • Nový CentOS 8 VPS na cloudové platformě Atlantic.Net
  • Heslo uživatele root nakonfigurované na vašem serveru

Krok 1 – Vytvoření cloudového serveru Atlantic.Net

Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte CentOS 8 s alespoň 2 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.

Jakmile se přihlásíte k serveru CentOS 8, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.

yum update -y

Krok 2 – Instalace požadovaných závislostí

Než začnete, budete muset nainstalovat závislosti potřebné pro kompilaci Nginx s podporou RTMP. Nejprve nainstalujte balíček Development Tool group pomocí následujícího příkazu:

yum groupinstall 'Development Tools' -y

Dále nainstalujte úložiště EPEL pomocí následujícího příkazu:

yum install epel-release -y

Po instalaci nainstalujte další požadované závislosti pomocí následujícího příkazu:

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

Jakmile jsou všechny balíčky nainstalovány, můžete přistoupit ke kompilaci Nginx.

Krok 3 – Stažení požadovaných součástí

Nejprve si budete muset stáhnout požadované komponenty pro kompilaci Nginx s podporou RTMP.

Nejprve si stáhněte nejnovější stabilní verzi Nginx pomocí následujícího příkazu:

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

Po stažení jej rozbalte pomocí následujícího příkazu:

tar -xvzf nginx-1.18.0.tar.gz

Dále stáhněte PCRE a Zlib pomocí následujícího příkazu:

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

Po stažení je rozbalte pomocí následujícího příkazu:

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

Jakmile jsou oba extrahovány, stáhněte si OpenSSL pomocí následujícího příkazu:

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

Dále rozbalte stažený balíček pomocí následujícího příkazu:

tar -xzvf openssl-1.1.0h.tar.gz

Dále si stáhněte nejnovější verzi modulu Nginx RTMP z úložiště Git pomocí následujícího příkazu:

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

Jakmile jsou všechny součásti staženy, můžete přejít k dalšímu kroku.

Krok 4 – Nainstalujte Nginx s podporou RTMP

Nejprve změňte adresář na Nginx pomocí následujícího příkazu:

cd nginx-1.18.0/

Dále nakonfigurujte Nginx s podporou RTMP pomocí následujícího příkazu:

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

Po dokončení procesu konfigurace byste měli získat následující výstup:

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"

Dále nainstalujte Nginx pomocí následujícího příkazu:

make
make install

Po instalaci Nginx ověřte nainstalovanou verzi Nginx pomocí následujícího příkazu:

nginx -V

Měli byste získat následující výstup:

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

Krok 5 – Vytvořte soubor služby Systemd pro Nginx

Dále budete muset vytvořit soubor služby Nginx pro správu služby Nginx. Můžete jej vytvořit pomocí následujícího příkazu:

nano /lib/systemd/system/nginx.service

Přidejte následující řádky:

[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

Po dokončení uložte a zavřete soubor a poté znovu načtěte démona systemd pomocí následujícího příkazu:

systemctl daemon-reload

Dále spusťte Nginx a povolte jeho spuštění při restartu systému pomocí následujícího příkazu:

systemctl start nginx
systemctl enable nginx

Krok 6 – Nakonfigurujte Nginx pro použití 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

Dále vytvořte nový konfigurační soubor Nginx pomocí následujícího příkazu:

nano /etc/nginx/nginx.conf

Přidejte následující řádky:

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

Uložte a zavřete soubor, poté vytvořte nový adresář pro konfiguraci HLS a uveďte správné vlastnictví:

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

Po dokončení uložte a zavřete soubor.

Krok 7 – Vytvořte živý přenos RTMP

Dále budete muset vytvořit streamované video RTMP a vytvořit nový živý stream RTMP. Můžete to udělat úpravou hlavního konfiguračního souboru Nginx:

nano /etc/nginx/nginx.conf

Najděte následující řádky:

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

Přidejte následující řádky přesně pod výše uvedený řádek:

application vod {
play /mnt/mp4s;
}

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

Uložte a zavřete soubor a poté restartujte službu Nginx pomocí následujícího příkazu:

systemctl restart nginx

Dále vytvořte adresář pro ukládání videa MP4:

mkdir -p /mnt/mp4s

Dále si stáhněte ukázkové video pomocí následujícího příkazu:

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

Dále přidělte správné vlastnictví adresáři /mnt/mp4s:

chown -R nginx:nginx /mnt/mp4s

Krok 8 – Nainstalujte FFmpeg a spusťte streamovací server

Nejprve budete muset nainstalovat FFmpeg na váš server. Ve výchozím nastavení není nainstalován ve výchozím úložišti CentOS 8, takže budete muset ve svém systému povolit úložiště Powertool. Můžete jej povolit pomocí následujícího příkazu:

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

Dále nainstalujte FFmpeg pomocí následujícího příkazu:

yum install ffmpeg -y

Jakmile je FFmpeg nainstalován, spusťte streamovací server pomocí následujícího příkazu:

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

Krok 9 – Otestujte streamování RTMP

Dále budete muset otestovat proud RTMP vod pomocí přehrávače médií VLC.

Jakmile klientský systém otevřete přehrávač médií VLS, přejděte na VLC Media => Open Network Stream . Měli byste vidět následující obrazovku:

Zadejte adresu URL svého streamovacího serveru RTMP a klikněte na Přehrát tlačítko.

Po úspěšném připojení byste měli vidět své video MP4 na následující obrazovce:

Závěr

Ve výše uvedeném tutoriálu jste se naučili, jak nainstalovat Nginx s podporou RTMP. Také jste se naučili, jak nakonfigurovat Nginx pro streamování videa MP4 a přehrávání pomocí přehrávače médií VLC ze vzdáleného systému. Zkuste nainstalovat Nginx s podporou RTMP na VPS Hosting od Atlantic.Net ještě dnes!

Zjistěte více o našich hostingových službách VPS a virtuálních privátních serverech.


Linux
  1. Jak nainstalovat phpMyAdmin s Nginx na CentOS 7

  2. Jak nainstalovat ModSecurity s Nginx na Rocky Linux 8

  3. Nainstalujte Nginx na CentOS 6

  1. Jak nainstalovat Nginx s modulem RTMP na CentOS 7

  2. Jak nainstalovat SuiteCRM s Nginx na CentOS 7

  3. Jak nainstalovat MediaWiki s Nginx na CentOS 7

  1. Jak nainstalovat ReactJS s proxy Nginx na CentOS 8

  2. Jak nainstalovat Nginx s ngx_pagespeed na CentOS

  3. Jak nainstalovat Nginx s modulem GeoIP