GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare Nginx con il modulo RTMP su CentOS 7

RTMP (Real Time Messaging Protocol) è un protocollo ad alte prestazioni per la trasmissione di dati, audio e video su Internet tra tecnologie di piattaforma basate su flash. Originariamente sviluppato da Macromedia e ora di proprietà di Adobe.

Nginx RTMP è uno streamer multimediale basato su nginx con streaming live RTMP, HLS e MPEG-DASH. Il modulo Nginx RTMP ha molte funzionalità, tra cui il supporto H264/AAC, il supporto per la richiamata HTTP, il modulo di controllo HTTP per la registrazione di audio/video, ecc.

In questo tutorial, ti mostrerò come installare e configurare il server web Nginx con il modulo RTMP. Utilizzeremo l'ultimo server CentOS 7 e questa guida includerà la configurazione del modulo nginx e rtmp e la creazione di streaming live RTMP e video on demand.

Prerequisiti

  • Server CentOS 7
  • Privilegi di root

Cosa faremo?

  1. Installa dipendenze
  2. Scarica Nginx con pacchetto aggiuntivo e modulo RTMP
  3. Compila Nginx e installa dal sorgente
  4. Configura Nginx come servizio
  5. Configura modulo Nginx RTMP
  6. Imposta il primo live streaming RTMP
  7. Test

Passaggio 1:installazione delle dipendenze

In questo tutorial, creeremo il server web Nginx dal sorgente. Dobbiamo installare tutte le dipendenze dei pacchetti necessarie, inclusi gli strumenti di sviluppo, il repository EPEL e altri pacchetti.

Installa gli "Strumenti di sviluppo" di CentOS.

sudo yum -y groupinstall 'Development Tools'

Aggiungi il repository EPEL.

sudo yum -y install epel-release

Installa le dipendenze 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

Attendi tutti i pacchetti installati.

Fase 2:scarica Nginx con pacchetto aggiuntivo e modulo RTMP

In questo passaggio, scaricheremo il codice sorgente di nginx con le dipendenze aggiuntive tra cui pcre, zlib e OpenSSL.

Vai alla directory '/usr/local/src'.

cd /usr/local/src

Scarica Nginx 1.14.0 ed estrailo.

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

Scarica il pacchetto pcre ed estrailo.

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

Scarica il pacchetto zlib ed estrailo.

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

Scarica il pacchetto OpenSSL ed estrailo.

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

Quindi, clona il codice sorgente del modulo Nginx RTMP usando il comando git.

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

E rimuovi tutti i file compressi tar.gz e .zip.

rm -f *.tar.gz *.zip

Di seguito sono riportati i dettagli della directory che abbiamo.

ls -lah

E siamo pronti per la compilazione e l'installazione.

Passaggio 3 - Compila Nginx e installa dal sorgente

Vai alla directory 'nginx-1.14.0'.

cd nginx-1.14.0/

Configura nginx 1.14.0 utilizzando i parametri seguenti.

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

Compila e installa Nginx con il modulo RTMP eseguendo i seguenti comandi.

sudo make
sudo make install

Al termine dell'installazione, dobbiamo creare una nuova directory del modulo di collegamento simbolico, creare un nuovo utente e gruppo nginx e creare una nuova directory della cache nginx.

Crea un modulo di collegamento simbolico nginx nella directory di configurazione '/etc/nginx'.

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

Crea un nuovo utente e gruppo di sistema 'nginx'.

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

Ora crea una nuova directory della cache Nginx '/var/cache/nginx' e cambia il proprietario della directory in utente e gruppo 'nginx'.

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

Verifica la configurazione di nginx e la versione di nginx installata.

nginx -t
nginx -V

E il seguente è il risultato.

Il server web Nginx è stato installato su CentOS 7 con il modulo RTMP abilitato.

Passaggio 4 - Configura Nginx come servizio

In questo tutorial, eseguiremo nginx come servizio e dobbiamo creare un nuovo file di servizio nginx nella directory del servizio systemd.

Vai alla directory '/lib/systemd/system' e crea un nuovo file 'nginx.service' usando vim.

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

incolla la configurazione qui sotto.

[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

Salva ed esci.

Ora ricarica il sistema systemd.

systemctl daemon-reload

Avvia il servizio nginx e abilitalo per l'avvio ogni volta all'avvio del sistema.

systemctl start nginx
systemctl enable nginx

Il server web Nginx è attivo e funzionante come servizio sul sistema CentOS 7.

Passaggio 5:configurazione del modulo Nginx RTMP

In questo passaggio, creeremo una nuova configurazione Nginx personalizzata per il modulo RTMP.

Vai alla directory di configurazione '/etc/nginx' ed esegui il backup del file 'nginx.conf' originale.

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

Ora crea una configurazione personalizzata 'nginx.conf'.

vim nginx.conf

Incolla la configurazione di Nginx RTMP di seguito.

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

Salva ed esci.

Successivamente, abbiamo bisogno di creare una nuova directory per la configurazione HLS e abbiamo definito la directory principale web nella directory '/mnt'.

Crea la directory 'hls' nella directory '/mnt' e cambia il proprietario della directory nell'utente e nel gruppo nginx.

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

Testare la configurazione e riavviare il servizio nginx.

nginx -t
systemctl restart nginx

Passaggio 6 - Configurazione del primo live streaming RTMP

In questo tutorial creeremo un nuovo flusso video RTMP on demand utilizzando i video mp4 sul server e creeremo un nuovo flusso RTMP live che verrà trasmesso dal computer locale utilizzando il software OBS.

Vai alla directory di configurazione '/etc/nginx' e modifica il file 'nginx.conf'.

cd /etc/nginx/
vim nginx.conf

Incolla le configurazioni di seguito nella parentesi 'rtmp { ... }'.

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

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

Salva ed esci.

Ora crea una nuova directory "mp4s" per archiviare tutti i video vod e cambia il proprietario nel gruppo di utenti nginx.

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

Verifica la configurazione di nginx e assicurati che non ci siano errori, quindi riavvia il servizio nginx.

nginx -t
systemctl restart nginx

La configurazione di Nginx per lo streaming live RTMP e lo stream vod è stata completata.

Fase 7 - Test

Prova lo streaming live RTMP e lo streaming vod utilizzando il lettore VLC.

Streaming di video on demand

Apri l'app VLC sul tuo computer.

Fai clic sul menu "File" e scegli l'opzione "Apri rete".

Ora digita l'URL RTMP per il nostro vod stream.

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

Fai clic sul pulsante "Apri".

E i seguenti sono i risultati del flusso video.

Streaming live utilizzando OBS (Open Broadcaster Software)

In questo tutorial testeremo lo streaming live RTMP utilizzando il software obs e il lettore vlc.

Trasmetteremo in streaming solo la finestra del terminale utilizzando il software broadcaster aperto e proveremo a guardare lo streaming live RTMP utilizzando il lettore VLC.

Di seguito è riportata la mia configurazione per il software obs.

Apri l'app VLC sul tuo computer.

Fai clic sul menu "File", scegli l'opzione "Apri rete".

Ora digita l'URL RTMP per il nostro live streaming.

rtmp://192.168.1.10:1935/stream/

Fai clic sul pulsante "Apri".

E il seguente è il risultato del live streaming che utilizza un'emittente aperta tramite il modulo nginx rtmp.

L'installazione del server web Nginx con modulo RTMP su CentOS 7 è stata completata con successo.


Cent OS
  1. Come installare WordPress con Nginx su CentOS 7

  2. Come installare phpMyAdmin con Nginx su CentOS 7

  3. Come installare Nextcloud con Nginx e PHP 7.3 su CentOS 8

  4. Come installare phpMyAdmin con Nginx su CentOS 7 / RHEL 7

  5. Come installare Sitemagic CMS su CentOS 7 – Con Nginx

Come installare Nginx con ngx_pagespeed su CentOS

Come installare Nginx con il modulo GeoIP

Come installare Nginx con PHP-FastCGI su CentOS 6

Come installare Magento con Nginx su CentOS 7

Come installare Laravel con Nginx su CentOS 8

Come installare Nginx con il modulo RTMP su CentOS 8