Comment installer Nginx avec le module RTMP sur CentOS 7

RTMP (Real Time Messaging Protocol) est un protocole très performant pour la transmission de données, d’audio et de vidéo sur Internet entre des technologies de plateforme flash. Développé à l’origine par Macromedia, il appartient désormais à Adobe.

Nginx RTMP est un streamer média basé sur nginx avec RTMP, HLS et MPEG-DASH live streaming. Le module RTMP de Nginx a beaucoup de fonctionnalités, notamment la prise en charge de H264/AAC, la prise en charge des rappels HTTP, le module de contrôle HTTP pour enregistrer l’audio/vidéo, etc.

Dans ce tutoriel, je vais te montrer comment installer et configurer le serveur Web Nginx avec le module RTMP. Nous utiliserons le dernier serveur CentOS 7, et ce guide comprendra la configuration de nginx et du module rtmp et la création d’un flux RTMP en direct et d’une vidéo à la demande.

Conditions préalables

  • Serveur CentOS 7
  • Privilèges de racine

Ce que nous allons faire ?

  1. Installer les dépendances
  2. Télécharge Nginx avec le paquet supplémentaire et le module RTMP
  3. Compiler Nginx et l’installer à partir de la source
  4. Configurer Nginx en tant que service
  5. Configurer le module RTMP de Nginx
  6. Configurer le premier flux RTMP en direct
  7. Test de

Étape 1 – Installer les dépendances

Dans ce tutoriel, nous allons construire le serveur Web Nginx à partir de la source. Nous devons installer toutes les dépendances nécessaires, notamment les outils de développement, le référentiel EPEL et d’autres paquets.

Installe les outils de développement CentOS.

sudo yum -y groupinstall 'Development Tools'

Ajoute le référentiel EPEL.

sudo yum -y install epel-release

Installe les dépendances 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

Attends que tous les paquets soient installés.

Installe les dépendances de Nginx et RTMP

Étape 2 – Télécharge Nginx avec le paquet supplémentaire et le module RTMP

Dans cette étape, nous allons télécharger le code source de Nginx avec les dépendances supplémentaires, notamment pcre, zlib et OpenSSL.

Va dans le répertoire ‘/usr/local/src’.

cd /usr/local/src

Télécharge Nginx 1.14.0 et extrais-le.

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

Télécharge le paquet pcre et extrais-le.

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

Télécharge le paquet zlib et extrais-le.

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

Télécharge le paquet OpenSSL et extrais-le.

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

Ensuite, clone le code source du module RTMP de Nginx en utilisant la commande git.

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

Et supprime tous les fichiers tar.gz et .zip compressés.

rm -f *.tar.gz *.zip

Voici les détails du répertoire que nous avons.

ls -lah

Sources Nginx téléchargées

Et nous sommes prêts à compiler et installer.

Étape 3 – Compile Nginx et installe à partir de la source

Va dans le répertoire ‘nginx-1.14.0’.

cd nginx-1.14.0/

Configure le nginx 1.14.0 en utilisant les paramètres ci-dessous.

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

Compile et installe Nginx avec le module RTMP en exécutant les commandes suivantes.

sudo make
sudo make install

Une fois l’installation terminée, nous devons créer un nouveau répertoire symlink module, créer un nouvel utilisateur et un nouveau groupe nginx, et créer un nouveau répertoire cache nginx.

Crée le module symlink nginx dans le répertoire de configuration ‘/etc/nginx’.

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

Crée un nouvel utilisateur et groupe système ‘nginx’.

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

Crée maintenant un nouveau répertoire de cache Nginx ‘/var/cache/nginx’ et change le propriétaire du répertoire en utilisateur et groupe ‘nginx’.

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

Teste la configuration de Nginx et la version de Nginx installée.

nginx -t
nginx -V

Le résultat est le suivant.

Nginx a compilé avec succès

Le serveur Web Nginx a été installé sur CentOS 7 avec le module RTMP activé.

Étape 4 – Configurer Nginx en tant que service

Dans ce tutoriel, nous allons exécuter nginx en tant que service et nous devons créer un nouveau fichier de service nginx dans le répertoire de service systemd.

Va dans le répertoire ‘/lib/systemd/system’ et crée un nouveau fichier ‘nginx.service’ en utilisant vim.

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

Colle la configuration ci-dessous.

[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

Sauvegarde et quitte.

Recharge maintenant le système systemd.

systemctl daemon-reload

Démarre le service nginx et active-le pour qu’il se lance chaque fois au démarrage du système.

systemctl start nginx
systemctl enable nginx

Le serveur Web Nginx est en place et fonctionne en tant que service sur le système CentOS 7.

Service systemd de Nginx

Étape 5 – Configurer le module RTMP de Nginx

Dans cette étape, nous allons créer une nouvelle configuration Nginx personnalisée pour le module RTMP.

Va dans le répertoire de configuration ‘/etc/nginx’ et sauvegarde le fichier original ‘nginx.conf’.

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

Crée maintenant une configuration personnalisée ‘nginx.conf’.

vim nginx.conf

Colle la configuration RTMP de Nginx ci-dessous.

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

Sauvegarde et quitte.

Ensuite, nous devons créer un nouveau répertoire pour la configuration HLS et nous avons défini que le répertoire racine du Web se trouve dans le répertoire ‘/mnt’.

Crée le répertoire ‘hls’ sous le répertoire ‘/mnt’ et change le propriétaire du répertoire en l’utilisateur et le groupe nginx.

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

Teste la configuration et redémarre le service nginx.

nginx -t
systemctl restart nginx

Configurer Nginx pour RTMP

Étape 6 – Configurer le premier flux RTMP en direct

Dans ce tutoriel, nous allons créer un nouveau flux RTMP vidéo à la demande en utilisant les vidéos mp4 sur le serveur, et créer un nouveau flux RTMP en direct qui sera diffusé depuis l’ordinateur local à l’aide du logiciel OBS.

Va dans le répertoire de configuration ‘/etc/nginx’ et modifie le fichier ‘nginx.conf’.

cd /etc/nginx/
vim nginx.conf

Colle les configurations ci-dessous dans la zone ‘rtmp { …. }’.

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

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

Sauvegarde et quitte.

Crée maintenant un nouveau répertoire ‘mp4s’ pour stocker toutes les vidéos vod, et change le propriétaire en groupe d’utilisateurs nginx.

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

Teste la configuration de nginx et assure-toi qu’il n’y a pas d’erreur, puis redémarre le service nginx.

nginx -t
systemctl restart nginx

La configuration de nginx pour le flux RTMP en direct et le flux vod est terminée.

Configurer le streaming live RTMP

Étape 7 – Test

Teste le flux RTMP en direct et le flux vod en utilisant le lecteur VLC.

Stream de vidéo à la demande

Ouvre l’application VLC sur ton ordinateur.

Clique sur le menu ‘Fichier’ et choisis l’option ‘Ouvrir le réseau’.

Tape maintenant l’URL RTMP pour notre flux vod.

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

Clique sur le bouton « Ouvrir ».

Configuration du client RTMP

Et voici les résultats du flux vidéo.

Flux vidéo RTMP

Stream en direct avec OBS (Open Broadcaster Software)

Dans ce tutoriel, nous allons tester le flux en direct RTMP à l’aide du logiciel obs, et du lecteur vlc.

Nous ferons du streaming uniquement dans la fenêtre du terminal à l’aide du logiciel Open Broadcaster, et nous essaierons de regarder le streaming en direct RTMP à l’aide du lecteur VLC.

Voici ma configuration pour le logiciel obs.

Stream en direct en utilisant OBS (Open Broadcaster Software)

Ouvre l’application VLC sur ton ordinateur.

Clique sur le menu ‘Fichier’ et choisis l’option ‘Ouvrir le réseau’.

Tape maintenant l’URL RTMP pour notre flux en direct.

rtmp://192.168.1.10:1935/stream/

Clique sur le bouton « Ouvrir ».

Configuration du streaming en direct

Et voici le résultat du flux en direct à l’aide d’open broadcaster via le module rtmp de nginx.

Le streaming en direct s'installe dans le client Media

L’installation du serveur Web Nginx avec le module RTMP sur CentOS 7 a été effectuée avec succès.

Référence

Vous aimerez aussi...