Maison  >  Article  >  Opération et maintenance  >  Utilisez nginx et nginx-rtmp-module pour créer un serveur multimédia en streaming

Utilisez nginx et nginx-rtmp-module pour créer un serveur multimédia en streaming

零下一度
零下一度original
2017-06-29 11:11:432416parcourir

J'ai rencontré un problème très embarrassant lors de l'utilisation de nginx et nginx-rtmp-module pour créer un serveur multimédia de streaming. C'était la première approche que j'ai adoptée lors de l'ajout du module nginx-rtmp-module à nginx. puis téléchargez le code source de nginx et nginx-rtmp-module, recompilez-le et installez-le. Après la réinstallation, j'ai testé le serveur multimédia de streaming et c'était normal, mais ensuite le problème est venu parce que j'avais du WEB Les projets étaient déployés dans le LUMP. environnement qui a été construit auparavant. Maintenant que nginx a été réinstallé, ces projets doivent être redéployés. J'ai donc commencé à redéployer ces projets WEB, mais le résultat m'a fait pleurer dans les toilettes car la structure du répertoire nginx a beaucoup changé, je ne peux donc pas configurer le projet WEB d'origine. Après cela, j'ai lutté et erré pendant longtemps, j'ai cherché de nombreuses solutions sur Internet, mais la plupart de ces solutions se concentraient sur la façon de compiler et d'installer nginx et le push-pull. Le test de flux n'impliquait pas mon problème. Plus tard, lorsque je parcourais le message, j'ai vu quelqu'un dire que remplacer la bibliothèque partagée nginx d'origine par le fichier exécutable nginx compilé par moi-même pourrait résoudre le problème, alors je l'ai immédiatement essayé. Il s'est avéré que cela fonctionne vraiment ! Maintenant, nginx peut exécuter des services de streaming multimédia et déployer des projets WEB en même temps, et avoir le meilleur des deux mondes

Laissez-moi vous présenter brièvement mon processus de fonctionnement, dans l'espoir d'aider ceux qui le souhaitent ! rencontrez le même problème. Si vous avez un problème, veuillez apporter de l'aide (mon environnement de configuration : Ubuntu Server 16.04 + nginx1.10.0 + nginx-rtmp-module-master

1. Installez d'abord nginx en utilisant apt). -get. Utilisation actuelle Le numéro de version de nginx installé de cette manière est 1.10.0

1 sudo apt-get update2 sudo apt-get install nginx

2. Accédez à votre répertoire préféré et créez un répertoire avec votre nom préféré pour stocker. nginx et nginx -Le code source du module rtmp, par exemple : j'ai créé le répertoire nginx sous le répertoire racine/softwares (les logiciels ont également été créés par moi-même), puis je téléchargerai nginx et nginx-rtmp-module sur nginx répertoire.

1 cd softwares/2 sudo mkdir nginx

3. Entrez dans le répertoire nginx

1 cd nginx/

4. Téléchargez le code source nginx. La version du code source téléchargée doit être installée à l'étape 1. La version de nginx doit être cohérente pour éviter des problèmes inutiles. Il existe de nombreuses façons d'obtenir le code source de nginx. Voici deux méthodes recommandées :

Méthode a : Exécuter. Commande apt-get source nginx dans le terminal pour l'obtenir directement Le code source de la version correspondante

1 sudo apt-get source nginx

Cette méthode se décompressera automatiquement après le téléchargement. Le répertoire est le répertoire du code source de nginx.

Méthode b : dans Recherchez la version correspondante sur le site officiel de nginx et téléchargez-la

1 sudo wget nginx.org/download/nginx-1.10.0.tar.gz

Après le téléchargement. de cette façon, vous devez le décompresser manuellement vous-même. Commande de décodage :

1 sudo tar zxvf nginx-1.10.0.tar.gz

5. Téléchargez le code source de nginx-rtmp-module. >

Étant donné que nginx-rtmp-module est open source sur GitHub, il peut également être obtenu directement à partir de l'adresse GitHub :
1 sudo wget github.com/arut/nginx-rtmp-module/archive/master.zip
6. Décompressez le package compressé des sources de nginx-rtmp-module. code.

7. Entrez le répertoire du code source nginx
1 sudo unzip master.zip

8. Affichez les informations de configuration actuelles de nginx et. enregistrez complètement les informations de configuration actuelles à un seul endroit. Plus tard, lors de la compilation du code source nginx, vous devrez le configurer en fonction des informations de configuration actuelles
1 cd nginx-1.10.0/

Notez que le V. dans la ligne de commande est en majuscule. En minuscules, vous ne pouvez voir que le numéro de version de nginx. Mes informations de configuration actuelles de nginx sont les suivantes :
1 nginx -V

9. Configurez le code source de nginx. informations de compilation et ajoutez nginx-rtmp-module à nginx
--with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads

Notez que cette ligne de commande est en fait composée comme ceci : sudo ./configure -add-module=../nginx-rtmp-module-master Cela ajoutera nginx-rtmp-module à la configuration nginx, et en même temps, la configuration nginx précédemment enregistrée sera ajoutée aux informations. informations de configuration utilisées pour cette compilation, garantissant que le nginx compilé a autant que possible les mêmes fonctions que le nginx d'origine. Les étudiants attentifs constateront qu'en fait, lorsque je configure les informations de nginx, je n'inclut pas toutes les configurations d'origine. La raison est que si vous copiez et collez toutes les informations, il y aura des erreurs qui ne seront pas faciles à gérer lors de la compilation. Il n'y a pas de bonne solution pour ces erreurs pendant un certain temps, j'ai donc réduit certaines informations de configuration et les ai réduites. Il n'y aura pas beaucoup de différence dans les modules fonctionnels après cela, vous pouvez donc l'utiliser en toute confiance
1 sudo ./configure --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads --add-module=../nginx-rtmp-module-master
10. Une fois la configuration terminée, exécutez la commande make pour commencer à compiler le code source nginx. est terminé, il sera généré dans le répertoire objs du répertoire du code source nginx.

11. Copiez le fichier exécutable nginx généré dans /usr/. sbin et remplacez le fichier de bibliothèque partagée nginx d'origine. Remarque : Original/Il existe un fichier de bibliothèque partagée nginx dans le répertoire usr/sbin. Nous utilisons le fichier exécutable nginx compilé pour le remplacer.
1 sudo make

<.>

12. Redémarrez nginx.
1 sudo nginx /usr/sbin

 13. Vérifiez à nouveau les informations de configuration de nginx.
1 sudo service nginx restart

Vous peut voir que le module nginx-rtmp-module a été ajouté à nginx.
1 nginx -V

J'ai essayé le streaming push et pull, et la fonction était normale. J'ai réexécuté le projet WEB d'origine, et c'était également normal

Enfin, laissez-moi vous expliquer pourquoi vous devez installer nginx via apt- ! get d'abord, puis compiler et remplacer. La raison est de faciliter le déploiement de projets WEB dans l'environnement LUMP. Si vous n'installez pas d'abord nginx via apt-get, mais téléchargez directement le code source pour compiler et installer, la configuration de nginx. Le répertoire sera incomplet et il sera difficile de déployer le projet WEB (le déploiement peut également être réalisé via certaines opérations, mais vous devrez quand même passer du temps à étudier nginx pour l'opération spécifique. Si vous ne créez pas de service de streaming multimédia, je recommande). installer nginx via apt-get. Les étapes sont simples et sans souci !

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn