GNU/Linux >> Tutoriales Linux >  >> Cent OS

Cómo instalar Nginx con módulo RTMP en CentOS 7

RTMP (Protocolo de mensajería en tiempo real) es un protocolo de alto rendimiento para la transmisión de datos, audio y video a través de Internet entre tecnologías de plataforma basadas en flash. Originalmente desarrollado por Macromedia y ahora propiedad de Adobe.

Nginx RTMP es un transmisor de medios basado en nginx con transmisión en vivo RTMP, HLS y MPEG-DASH. El módulo Nginx RTMP tiene muchas funciones, incluida la compatibilidad con H264/AAC, compatibilidad con devolución de llamada HTTP, módulo de control HTTP para grabar audio/video, etc.

En este tutorial, le mostraré cómo instalar y configurar el servidor web Nginx con el módulo RTMP. Usaremos el último servidor CentOS 7, y esta guía incluirá la configuración de nginx y el módulo rtmp y la creación de transmisión en vivo RTMP y video a pedido.

Requisitos

  • Servidor CentOS 7
  • Privilegios de raíz

¿Qué haremos?

  1. Instalar dependencias
  2. Descargar Nginx con paquete adicional y módulo RTMP
  3. Compila Nginx e instala desde la fuente
  4. Configurar Nginx como servicio
  5. Configurar el módulo Nginx RTMP
  6. Configurar la primera transmisión en vivo RTMP
  7. Pruebas

Paso 1 - Instalar dependencias

En este tutorial, construiremos el servidor web Nginx desde la fuente. Necesitamos instalar todas las dependencias de paquetes necesarias, incluidas las herramientas de desarrollo, el repositorio EPEL y otros paquetes.

Instale las 'Herramientas de desarrollo' de CentOS.

sudo yum -y groupinstall 'Development Tools'

Agregue el repositorio EPEL.

sudo yum -y install epel-release

Instale las dependencias de 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

Espere a que se instalen todos los paquetes.

Paso 2:descargue Nginx con paquete adicional y módulo RTMP

En este paso, descargaremos el código fuente de nginx con las dependencias adicionales, incluidas pcre, zlib y OpenSSL.

Vaya al directorio '/usr/local/src'.

cd /usr/local/src

Descarga Nginx 1.14.0 y extráelo.

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

Descargue el paquete pcre y extráigalo.

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

Descargue el paquete zlib y extráigalo.

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

Descargue el paquete OpenSSL y extráigalo.

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

A continuación, clone el código fuente del módulo RTMP de Nginx con el comando git.

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

Y elimine todos los archivos comprimidos tar.gz y .zip.

rm -f *.tar.gz *.zip

Los siguientes son los detalles del directorio que tenemos.

ls -lah

Y estamos listos para compilar e instalar.

Paso 3:compilar Nginx e instalar desde el origen

Vaya al directorio 'nginx-1.14.0'.

cd nginx-1.14.0/

Configure el nginx 1.14.0 usando los parámetros a continuación.

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

Compile e instale Nginx con el módulo RTMP ejecutando los siguientes comandos.

sudo make
sudo make install

Cuando se complete la instalación, debemos crear un nuevo directorio de módulo de enlace simbólico, crear un nuevo usuario y grupo de nginx y crear un nuevo directorio de caché de nginx.

Cree un módulo de enlace simbólico nginx en el directorio de configuración '/etc/nginx'.

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

Cree un nuevo usuario y grupo del sistema 'nginx'.

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

Ahora cree un nuevo directorio de caché Nginx '/var/cache/nginx' y cambie el propietario del directorio a usuario y grupo 'nginx'.

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

Pruebe la configuración de nginx y la versión de nginx instalada.

nginx -t
nginx -V

Y el siguiente es el resultado.

El servidor web Nginx se instaló en CentOS 7 con el módulo RTMP habilitado.

Paso 4:configurar Nginx como servicio

En este tutorial, ejecutaremos nginx como un servicio y necesitamos crear un nuevo archivo de servicio nginx en el directorio de servicio systemd.

Vaya al directorio '/lib/systemd/system' y cree un nuevo archivo 'nginx.service' usando vim.

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

pegue la configuración a continuación.

[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

Guardar y salir.

Ahora recarga el sistema systemd.

systemctl daemon-reload

Inicie el servicio nginx y permita que se inicie cada vez que se inicie el sistema.

systemctl start nginx
systemctl enable nginx

El servidor web Nginx está funcionando como un servicio en el sistema CentOS 7.

Paso 5:configurar el módulo Nginx RTMP

En este paso, crearemos una nueva configuración personalizada de Nginx para el módulo RTMP.

Vaya al directorio de configuración '/etc/nginx' y haga una copia de seguridad del archivo 'nginx.conf' original.

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

Ahora cree una configuración personalizada 'nginx.conf'.

vim nginx.conf

Pegue la configuración RTMP de Nginx a continuación.

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

Guardar y salir.

A continuación, necesitamos crear un nuevo directorio para la configuración de HLS y hemos definido que el directorio raíz web está en el directorio '/mnt'.

Cree el directorio 'hls' en el directorio '/mnt' y cambie el propietario del directorio al usuario y grupo nginx.

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

Pruebe la configuración y reinicie el servicio nginx.

nginx -t
systemctl restart nginx

Paso 6:configurar la primera transmisión en vivo RTMP

En este tutorial, crearemos una nueva transmisión de video RTMP a pedido usando los videos mp4 en el servidor y crearemos una nueva transmisión RTMP en vivo que se transmitirá desde la computadora local usando el software OBS.

Vaya al directorio de configuración '/etc/nginx' y edite el archivo 'nginx.conf'.

cd /etc/nginx/
vim nginx.conf

Pegue las configuraciones a continuación en el corchete 'rtmp { ... }'.

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

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

Guardar y salir.

Ahora cree un nuevo directorio 'mp4s' para almacenar todos los videos vod y cambie el propietario al grupo de usuarios nginx.

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

Pruebe la configuración de nginx y asegúrese de que no haya ningún error, luego reinicie el servicio de nginx.

nginx -t
systemctl restart nginx

Se completó la configuración de Nginx para la transmisión en vivo RTMP y la transmisión vod.

Paso 7 - Prueba

Pruebe la transmisión en vivo RTMP y la transmisión de vod con el reproductor VLC.

Transmisión de video a pedido

Abre la aplicación VLC en tu computadora.

Haga clic en el menú 'Archivo' y seleccione la opción 'Abrir red'.

Ahora escriba la URL RTMP para nuestra transmisión de vod.

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

Haga clic en el botón 'Abrir'.

Y los siguientes son los resultados de la transmisión de video.

Transmisión en vivo usando OBS (Open Broadcaster Software)

En este tutorial, probaremos la transmisión en vivo RTMP usando el software obs y el reproductor vlc.

Transmitiremos solo la ventana de la terminal usando el software de transmisión abierta e intentaremos ver la transmisión en vivo RTMP usando el reproductor VLC.

La siguiente es mi configuración para el software obs.

Abre la aplicación VLC en tu computadora.

Haga clic en el menú 'Archivo', elija la opción 'Abrir red'.

Ahora escriba la URL de RTMP para nuestra transmisión en vivo.

rtmp://192.168.1.10:1935/stream/

Haga clic en el botón 'Abrir'.

Y el siguiente es el resultado de la transmisión en vivo usando una emisora ​​abierta a través del módulo nginx rtmp.

La instalación del servidor web Nginx con módulo RTMP en CentOS 7 se completó con éxito.


Cent OS
  1. Cómo instalar WordPress con Nginx en CentOS 7

  2. Cómo instalar phpMyAdmin con Nginx en CentOS 7

  3. Cómo instalar Nextcloud con Nginx y PHP 7.3 en CentOS 8

  4. Cómo instalar phpMyAdmin con Nginx en CentOS 7 / RHEL 7

  5. Cómo instalar Sitemagic CMS en CentOS 7 – Con Nginx

Cómo instalar Nginx con ngx_pagespeed en CentOS

Cómo instalar Nginx con el módulo GeoIP

Cómo instalar Nginx con PHP-FastCGI en CentOS 6

Cómo instalar Magento con Nginx en CentOS 7

Cómo instalar Laravel con Nginx en CentOS 8

Cómo instalar Nginx con módulo RTMP en CentOS 8