GNU/Linux >> Tutoriels Linux >  >> Linux

Comment installer Nginx avec le module RTMP sur CentOS 8

RTMP est un protocole de messagerie en temps réel développé par Macromedia qui peut être utilisé pour diffuser de l'audio, de la vidéo et des données sur Internet. Nginx RTMP est un streamer multimédia basé sur Nginx qui comprend de nombreuses fonctionnalités, notamment la prise en charge H264/AAC, le transcodage en ligne avec FFmpeg, la prise en charge du rappel HTTP et un module de contrôle HTTP pour l'enregistrement audio/vidéo.

Dans ce tutoriel, nous allons vous montrer comment compiler Nginx avec le module RTMP et créer un flux en direct RTMP sur CentOS 8.

Prérequis

  • Un nouveau VPS CentOS 8 sur la plate-forme cloud Atlantic.Net
  • Un mot de passe root configuré sur votre serveur

Étape 1 - Créer un serveur cloud Atlantic.Net

Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant CentOS 8 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.

Une fois que vous êtes connecté à votre serveur CentOS 8, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.

yum update -y

Étape 2 - Installer les dépendances requises

Avant de commencer, vous devrez installer les dépendances nécessaires pour compiler Nginx avec le support RTMP. Tout d'abord, installez le package du groupe Development Tool avec la commande suivante :

yum groupinstall 'Development Tools' -y

Ensuite, installez le référentiel EPEL avec la commande suivante :

yum install epel-release -y

Une fois installé, installez les autres dépendances requises à l'aide de la commande suivante :

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

Une fois tous les packages installés, vous pouvez procéder à la compilation de Nginx.

Étape 3 – Télécharger les composants requis

Tout d'abord, vous devrez télécharger les composants requis pour compiler Nginx avec le support RTMP.

Tout d'abord, téléchargez la dernière version stable de Nginx avec la commande suivante :

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

Une fois téléchargé, extrayez-le à l'aide de la commande suivante :

tar -xvzf nginx-1.18.0.tar.gz

Ensuite, téléchargez PCRE et Zlib avec la commande suivante :

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

Une fois téléchargés, extrayez-les avec la commande suivante :

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

Une fois les deux extraits, téléchargez OpenSSL avec la commande suivante :

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

Ensuite, extrayez le package téléchargé avec la commande suivante :

tar -xzvf openssl-1.1.0h.tar.gz

Ensuite, téléchargez la dernière version du module Nginx RTMP à partir du référentiel Git à l'aide de la commande suivante :

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

Une fois tous les composants téléchargés, vous pouvez passer à l'étape suivante.

Étape 4 - Installer Nginx avec prise en charge RTMP

Tout d'abord, changez le répertoire en Nginx avec la commande suivante :

cd nginx-1.18.0/

Ensuite, configurez Nginx avec le support RTMP à l'aide de la commande suivante :

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

Une fois le processus de configuration terminé, vous devriez obtenir le résultat suivant :

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"

Ensuite, installez Nginx avec la commande suivante :

make
make install

Après avoir installé Nginx, vérifiez la version installée de Nginx avec la commande suivante :

nginx -V

Vous devriez obtenir le résultat suivant :

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

Étape 5 - Créer un fichier de service Systemd pour Nginx

Ensuite, vous devrez créer un fichier de service Nginx pour gérer le service Nginx. Vous pouvez le créer avec la commande suivante :

nano /lib/systemd/system/nginx.service

Ajoutez les lignes suivantes :

[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

Enregistrez et fermez le fichier lorsque vous avez terminé, puis rechargez le démon systemd avec la commande suivante :

systemctl daemon-reload

Ensuite, démarrez Nginx et activez-le au redémarrage du système avec la commande suivante :

systemctl start nginx
systemctl enable nginx

Étape 6 - Configurer Nginx pour utiliser 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

Créez ensuite un nouveau fichier de configuration Nginx à l'aide de la commande suivante :

nano /etc/nginx/nginx.conf

Ajoutez les lignes suivantes :

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

Enregistrez et fermez le fichier, puis créez un nouveau répertoire pour la configuration HLS et attribuez-lui le propriétaire :

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

Enregistrez et fermez le fichier lorsque vous avez terminé.

Étape 7 - Créer un flux en direct RTMP

Ensuite, vous devrez créer une vidéo de flux RTMP et créer un nouveau flux RTMP en direct. Vous pouvez le faire en modifiant le fichier de configuration principal de Nginx :

nano /etc/nginx/nginx.conf

Recherchez les lignes suivantes :

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

Ajoutez les lignes suivantes exactement en dessous de la ligne ci-dessus :

application vod {
play /mnt/mp4s;
}

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

Enregistrez et fermez le fichier, puis redémarrez le service Nginx avec la commande suivante :

systemctl restart nginx

Ensuite, créez un répertoire pour stocker la vidéo MP4 :

mkdir -p /mnt/mp4s

Ensuite, téléchargez l'exemple de vidéo à l'aide de la commande suivante :

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

Ensuite, attribuez la propriété appropriée au répertoire /mnt/mp4s :

chown -R nginx:nginx /mnt/mp4s

Étape 8 - Installez FFmpeg et démarrez le serveur de streaming

Tout d'abord, vous devrez installer FFmpeg sur votre serveur. Par défaut, il n'est pas installé dans le référentiel par défaut CentOS 8, vous devrez donc activer le référentiel Powertool dans votre système. Vous pouvez l'activer avec la commande suivante :

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

Ensuite, installez le FFmpeg avec la commande suivante :

yum install ffmpeg -y

Une fois le FFmpeg installé, démarrez le serveur de streaming avec la commande suivante :

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

Étape 9 – Tester le streaming RTMP

Ensuite, vous devrez tester le flux RTMP vod avec le lecteur multimédia VLC.

Une fois le système client, ouvrez le lecteur multimédia VLS, allez dans VLC Media => Open Network Stream . Vous devriez voir l'écran suivant :

Indiquez l'URL de votre serveur de streaming RTMP et cliquez sur Lire bouton.

Une fois que vous êtes connecté avec succès, vous devriez voir votre vidéo MP4 dans l'écran suivant :

Conclusion

Dans le didacticiel ci-dessus, vous avez appris à installer Nginx avec le support RTMP. Vous avez également appris à configurer Nginx pour diffuser des vidéos MP4 et les lire avec le lecteur multimédia VLC à partir du système distant. Essayez d'installer Nginx avec le support RTMP sur l'hébergement VPS d'Atlantic.Net dès aujourd'hui !

En savoir plus sur nos services d'hébergement VPS et nos serveurs privés virtuels.


Linux
  1. Comment installer phpMyAdmin avec Nginx sur CentOS 7

  2. Comment installer Nginx avec le module RTMP sur CentOS 7

  3. Comment installer SuiteCRM avec Nginx sur CentOS 7

  4. Comment installer ModSecurity avec Nginx sur Rocky Linux 8

  5. Installer Nginx sur CentOS 6

Comment installer Java sur CentOS 8

Comment installer Yarn sur CentOS 8

Comment installer Bludit CMS avec NGINX sur Ubuntu 20.04

Comment installer Kubernetes avec Minikube sur CentOS 8

Comment installer Talkyard Forum avec Nginx sur Ubuntu 18.04

Comment installer Nginx sur CentOS 7 ?