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.

