GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat Nginx s modulem RTMP na CentOS 7

RTMP (Real Time Messaging Protocol) je vysoce výkonný protokol pro přenos dat, zvuku a videa přes internet mezi platformami založenými na technologii flash. Původně vyvinutý společností Macromedia a nyní ve vlastnictví společnosti Adobe.

Nginx RTMP je streamer médií založený na nginx s živým streamováním RTMP, HLS a MPEG-DASH. Modul Nginx RTMP má mnoho funkcí, včetně podpory H264/AAC, podpory zpětného volání HTTP, ovládacího modulu HTTP pro nahrávání zvuku/videa atd.

V tomto tutoriálu vám ukážu, jak nainstalovat a nakonfigurovat webový server Nginx s modulem RTMP. Budeme používat nejnovější server CentOS 7 a tato příručka bude zahrnovat konfiguraci modulu nginx a rtmp a vytvoření živého přenosu RTMP a videa na vyžádání.

Předpoklady

  • Server CentOS 7
  • Oprávnění uživatele root

Co uděláme?

  1. Instalovat závislosti
  2. Stáhněte si Nginx s dalším balíčkem a modulem RTMP
  3. Zkompilujte Nginx a nainstalujte ze zdroje
  4. Nakonfigurujte Nginx jako službu
  5. Nakonfigurujte modul Nginx RTMP
  6. Nastavení prvního živého přenosu RTMP
  7. Testování

Krok 1 – Instalace závislostí

V tomto tutoriálu vytvoříme webový server Nginx ze zdroje. Musíme nainstalovat všechny potřebné závislosti balíčků, včetně vývojových nástrojů, úložiště EPEL a dalších balíčků.

Nainstalujte CentOS 'Development Tools'.

sudo yum -y groupinstall 'Development Tools'

Přidejte úložiště EPEL.

sudo yum -y install epel-release

Nainstalujte závislosti 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

Počkejte, až se nainstalují všechny balíčky.

Krok 2 – Stáhnout Nginx s dalším balíčkem a modulem RTMP

V tomto kroku si stáhneme zdrojový kód nginx s dalšími závislostmi včetně pcre, zlib a OpenSSL.

Přejděte do adresáře '/usr/local/src'.

cd /usr/local/src

Stáhněte si Nginx 1.14.0 a rozbalte jej.

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

Stáhněte si balíček pcre a extrahujte jej.

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

Stáhněte si balíček zlib a rozbalte jej.

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

Stáhněte si balíček OpenSSL a rozbalte jej.

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

Dále naklonujte zdrojový kód modulu Nginx RTMP pomocí příkazu git.

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

A odstraňte všechny komprimované soubory tar.gz a .zip.

rm -f *.tar.gz *.zip

Níže jsou uvedeny podrobnosti o adresáři.

ls -lah

A jsme připraveni ke kompilaci a instalaci.

Krok 3 – Kompilace Nginx a instalace ze zdroje

Přejděte do adresáře 'nginx-1.14.0'.

cd nginx-1.14.0/

Nakonfigurujte nginx 1.14.0 pomocí těchto parametrů níže.

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

Zkompilujte a nainstalujte Nginx s modulem RTMP spuštěním následujících příkazů.

sudo make
sudo make install

Po dokončení instalace musíme vytvořit nový adresář modulu symbolických odkazů, vytvořit nového uživatele a skupinu nginx a vytvořit nový adresář mezipaměti nginx.

Vytvořte modul symbolického odkazu nginx do konfiguračního adresáře '/etc/nginx'.

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

Vytvořte nového uživatele a skupinu systému 'nginx'.

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

Nyní vytvořte nový adresář mezipaměti Nginx '/var/cache/nginx' a změňte vlastníka adresáře na uživatele a skupinu 'nginx'.

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

Otestujte konfiguraci nginx a nainstalovanou verzi nginx.

nginx -t
nginx -V

A výsledek je následující.

Webový server Nginx byl nainstalován na CentOS 7 s povoleným modulem RTMP.

Krok 4 – Konfigurace Nginx jako služby

V tomto tutoriálu budeme provozovat nginx jako službu a potřebujeme vytvořit nový soubor služby nginx do adresáře služeb systemd.

Přejděte do adresáře '/lib/systemd/system' a vytvořte nový soubor 'nginx.service' pomocí vim.

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

vložte konfiguraci níže.

[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

Uložte a ukončete.

Nyní znovu načtěte systémový systém.

systemctl daemon-reload

Spusťte službu nginx a povolte její spuštění při každém spuštění systému.

systemctl start nginx
systemctl enable nginx

Webový server Nginx je spuštěn a běží jako služba na systému CentOS 7.

Krok 5 – Konfigurace modulu Nginx RTMP

V tomto kroku vytvoříme novou vlastní konfiguraci Nginx pro modul RTMP.

Přejděte do konfiguračního adresáře '/etc/nginx' a zálohujte původní soubor 'nginx.conf'.

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

Nyní vytvořte vlastní konfiguraci 'nginx.conf'.

vim nginx.conf

Níže vložte konfiguraci Nginx RTMP.

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 ukončete.

Dále musíme vytvořit nový adresář pro konfiguraci HLS a definovali jsme, že webový kořenový adresář je v adresáři '/mnt'.

Vytvořte adresář 'hls' v adresáři '/mnt' a změňte vlastníka adresáře na uživatele a skupinu nginx.

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

Otestujte konfiguraci a restartujte službu nginx.

nginx -t
systemctl restart nginx

Krok 6 – Nastavení prvního živého přenosu RTMP

V tomto tutoriálu vytvoříme nové streamované video RTMP na vyžádání pomocí videí mp4 na serveru a vytvoříme nový živý stream RTMP, který bude vysílán z místního počítače pomocí softwaru OBS.

Přejděte do konfiguračního adresáře '/etc/nginx' a upravte soubor 'nginx.conf'.

cd /etc/nginx/
vim nginx.conf

Vložte konfigurace níže do závorky 'rtmp { ... }'.

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

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

Uložte a ukončete.

Nyní vytvořte nový adresář 'mp4s' pro ukládání všech vod videí a změňte vlastníka na uživatelskou skupinu nginx.

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

Otestujte konfiguraci nginx a ujistěte se, že nedošlo k chybě, poté restartujte službu nginx.

nginx -t
systemctl restart nginx

Konfigurace Nginx pro živý stream RTMP a vod stream byla dokončena.

Krok 7 – Testování

Otestujte živé vysílání RTMP a vodový stream pomocí přehrávače VLC.

Stream videa na vyžádání

Otevřete v počítači aplikaci VLC.

Klikněte na nabídku 'Soubor' a vyberte možnost 'Otevřít síť'.

Nyní zadejte adresu URL RTMP pro náš proud vod.

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

Klikněte na tlačítko 'Otevřít'.

A následující jsou výsledky video streamu.

Živý přenos pomocí softwaru OBS (Open Broadcaster Software)

V tomto tutoriálu otestujeme živý přenos RTMP pomocí softwaru obs a přehrávače vlc.

Budeme streamovat pouze okno terminálu pomocí softwaru otevřeného vysílání a pokusíme se sledovat živý přenos RTMP pomocí přehrávače VLC.

Následuje moje konfigurace pro software obs.

Otevřete v počítači aplikaci VLC.

Klikněte na nabídku 'Soubor', vyberte možnost 'Otevřít síť'.

Nyní zadejte adresu URL RTMP pro náš živý přenos.

rtmp://192.168.1.10:1935/stream/

Klikněte na tlačítko 'Otevřít'.

A následující je výsledek živého přenosu pomocí otevřeného vysílacího programu prostřednictvím modulu nginx rtmp.

Instalace webového serveru Nginx s modulem RTMP na CentOS 7 byla úspěšně dokončena.


Cent OS
  1. Jak nainstalovat WordPress s Nginx na CentOS 7

  2. Jak nainstalovat phpMyAdmin s Nginx na CentOS 7 / RHEL 7

  3. Jak nainstalovat Sitemagic CMS na CentOS 7 – s Nginx

  1. Jak nainstalovat phpMyAdmin s Nginx na CentOS 7

  2. Jak nainstalovat Nextcloud s Nginx a PHP 7.3 na CentOS 8

  3. Jak nainstalovat ownCloud 9.1 s Nginx a MariaDB na CentOS 7

  1. Jak nainstalovat Nextcloud s Nginx a PHP7-FPM na CentOS 7

  2. Jak nainstalovat nástroj LibreNMS Monitoring Tool s Nginx na CentOS 7

  3. Jak nainstalovat SuiteCRM s Nginx na CentOS 7