nginx com serviço rtmp

Brevemente um post sobre este processo
tps://johnathan.org/rtmp-nginx-apt/
instalado na pasta /tmp

Pretendia criar uma forma de redireccionar o streaming para vários serviços, como youtube e twitch, uma das maneiras é fazer uso da aplicação Nginx e adicionar o serviço RTMP, muito usado para streamimng.
O problema é que aplicação Nginx não inclui o serviço RTMP e não é possível adicionar como módulo externo, a solução passa por re-compilar Nginx com adição do módulo. A re-compilação, por si, nem é muito complexa, existem tutoriais, o mais complexo é ter já instalado com o próprio pacote de Ubuntu, para além de a versão actual de Nginx ser divergente com a de Ubuntu, os locais de instalação também divergem. assim tive que re-compilar o pacote Nginx do Ubuntu.

Apesar de estar a usar Armbian, a base é Ubuntu e o próprio sistema inclui as flags necessário para compilar. Atenção que Armbian não usa sudo, existem acções que requerem poderes de root.

Antes de iniciar o trabalho de recompilação, é importante actualizar o sistema.

apt-get update
apt-get upgrade

Agora é preciso criar a “cama” para re-compilar o pacote, criar a pasta para receber o código ao descarrega-lo e aplicações necessárias para compilar.

mkdir /tmp/src
cd /tmp/src
apt-get build-dep nginx
apt-get source nginx

Exemplo do conteúdo da pasta /tmp/src.

drwxr-xr-x 10 root root    300 Jan  2 18:24 nginx-1.10.3
-rw-r--r--  1 root root 649900 Jul 13 18:08 nginx_1.10.3-0ubuntu0.16.04.2.debian.tar.xz
-rw-r--r--  1 root root   3158 Jul 13 18:08 nginx_1.10.3-0ubuntu0.16.04.2.dsc
-rw-r--r--  1 root root 911509 Feb 11  2017 nginx_1.10.3.orig.tar.gz

Será necessário ir à pasta modules e descarregar o módulo adicionar.

cd nginx-1.10.3/debian/modules
git clone https://github.com/arut/nginx-rtmp-module

Os próximos passos são a preparação para o processo mais doloroso de todo.
A seguir é preciso alguma cautela, vai ser necessário editar um ficheiro, construção errada e pode representar perda de tempo.
Realizar backup é sempre a melhor recomendação, apesar de não mexer em nada crítico do sistema, nada melhor que aproveitar o momento para ter um ponto de restauro actualizado.
Abrir o ficheiro /tmp/src/nginx-1.10.3/debian/rules, procurar pela linha que contenha common_configure_flags, se usarem o nano carregar em ctrl+w para fazer a pesquisa, ctrl+o para gravar e ctrl+x para sair. Adicionar –add-module=$(MODULESDIR)/nginx-rtmp-module à flag.

nano /tmp/src/nginx-1.10.3/debian/rules
common_configure_flags := \
                        --with-cc-opt="$(debian_cflags)" \
(...)
                        --with-http_auth_request_module \
                        --add-module=$(MODULESDIR)/nginx-rtmp-module

Na edição do texto é preciso ter atenção que no final de cada linha existe a barra \, EXCEPTO a última, o que essa barra faz é “dizer” que a linha ainda não acabou e continua na próxima linha. Se a intenção é terminar o comando na última linha, não pode conter a barra, caso contrário irá gerar erro na compilação.
Se tudo estiver como esperado, está tudo pronto para criar o novo pacote com o processo de compilação, este será o tal processo mais doloroso que tinha falado anteriormente, vários MINUTOS de espera, os minutos dependem da performance da máquina, CPU e capacidade de ler e escrever dados, durante o processo de compilar estive a ver o uso de CPU, com o htop, pareceu-me que o CPU tinha pouca intensidade de trabalho [teste do youtube], estando mais dependente da leitura e escrita do dispositivo.

cd /tmp/src/nginx-1.10.3
dpkg-buildpackage -uc -b

Exemplo dos ficheiro obtidos.

drwxr-xr-x 10 root root    4096 Jan  2 18:24 nginx-1.10.3
-rw-r--r--  1 root root   26042 Jan  2 20:12 nginx_1.10.3-0ubuntu0.16.04.2_all.deb
-rw-r--r--  1 root root    5026 Jan  2 20:13 nginx_1.10.3-0ubuntu0.16.04.2_armhf.changes
-rw-r--r--  1 root root  649900 Jul 13 18:08 nginx_1.10.3-0ubuntu0.16.04.2.debian.tar.xz
-rw-r--r--  1 root root    3158 Jul 13 18:08 nginx_1.10.3-0ubuntu0.16.04.2.dsc
-rw-r--r--  1 root root  911509 Feb 11  2017 nginx_1.10.3.orig.tar.gz
-rw-r--r--  1 root root   47360 Jan  2 20:12 nginx-common_1.10.3-0ubuntu0.16.04.2_all.deb
-rw-r--r--  1 root root  495184 Jan  2 20:12 nginx-core_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root 4046964 Jan  2 20:12 nginx-core-dbg_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root   37562 Jan  2 20:12 nginx-doc_1.10.3-0ubuntu0.16.04.2_all.deb
-rw-r--r--  1 root root  676372 Jan  2 20:13 nginx-extras_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root 6537274 Jan  2 20:13 nginx-extras-dbg_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root  516808 Jan  2 20:12 nginx-full_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root 4485050 Jan  2 20:12 nginx-full-dbg_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root  394328 Jan  2 20:12 nginx-light_1.10.3-0ubuntu0.16.04.2_armhf.deb
-rw-r--r--  1 root root 3106048 Jan  2 20:12 nginx-light-dbg_1.10.3-0ubuntu0.16.04.2_armhf.deb

O pacote está pronto a ser instalado, mas antes de iniciar o processo de instalação, é preciso remover o que já existe no sistema.

apt-get remove nginx [nginx-core]

O passo mais esperado, a instalação.

dpkg --install /usr/src/nginx-common_1.10.3-0ubuntu0.16.04.2_all.deb

Ou outro pacote, como nginx-full_1.10.3-0ubuntu0.16.04.2_armhf.deb. Verificar se o módulo está funcional.

nginx -V

Deve existir no meio do texto com –add-module=/usr/src/nginx-1.10.1/debian/modules/nginx-rtmp-module.
Para que os updates do sistema não passe por cima da alteração.

apt-mark hold nginx-full

Com este trabalho todo, se tudo estiver como esperado, o Nginx contem o módulo para o serviço RTMP.
Mais tarde, caso seja necessário reverter e permitir o update alterar, basta usar o comando.

apt-mark unhold

Assim termino o meu tutorial de como compilar e instalar Nginx com o serviço RTMP integrado.

Faça o seu comentário