суббота, 30 апреля 2016 г.

Сборка nginx-rtmp

Чтобы собрать модуль для rtmp-стриминга, нужно собственно:
Подготовить все необходимое:
  1. установим необходимые для сборки пакеты:
    
    $ sudo apt-get update
    $ sudo apt-get install build-essential
    $ sudo apt-get build-dep nginx
    
  2. создадим где-нибудь в домашнем каталоге «сборочный» каталог и «перейдём» в него:
    
    $ mkdir -p ~/sborka/nginx
    $ cd ~/sborka/nginx
    
  3. скачаем и распакуем исходники дистрибутивного пакета nginx:
    
    $ apt-get source nginx
    
  4. помимо нескольких необходимых файлов появился и каталог с исходниками пакета — nginx-номер.версии
  5. в каталоге debian/modules хранятся каталоги с исходниками модулей, которые собираются в одно целое с программой nginx. туда и скачаем исходники дополнительного модуля, в каталог (к примеру) debian/modules/nginx-rtmp-module (т.к. нам не нужна вся история из репозитория, добавим опцию --depth 1):
    
    $ wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
    $ unzip master.zip
    $ mv nginx-rtmp-module-master  nginx-1.10.0/debian/modules/nginx-rtmp-module
    
    «перейдём» в каталог:
    
    $ cd nginx-номер.версии
    
  6. теперь самое «сложное» — надо добавить опцию --add-module=путь/к/модулю в «правильном» месте, чтобы она была передана скрипту configure при сборке пакета.
    делается это в файле debian/rules. это «обыкновенный» makefile, но «особого,debian-овского назначения». тут два варианта:
    1. в более старых версиях пакета надо использовать переменную CONFIGURE_OPTS. если есть её упоминания, то добавьте где-нибудь в начале файла строку:
      
      CONFIGURE_OPTS = --add-module=$(MODULESDIR)/nginx-rtmp-module
      
    2. в более новых есть переменная common_configure_flags. найдите строки вида:
      
      
      common_configure_flags := \
                              --with-cc-opt="$(debian_cflags)" \
                              ...
                              --with-http_realip_module \
      
      и после последней добавьте нужную строку, чтобы выглядело примерно так (не забудьте про обратный слэш в конце строки и не удаляйте следующую пустую строку):
      
      common_configure_flags := \
                              --with-cc-opt="$(debian_cflags)" \
                              ...
                              --with-http_realip_module \
                              --add-module=$(MODULESDIR)/nginx-rtmp-module \
         --with-http_auth_request_module
      
  7. Добавляем файлы для отображения статистики rtmp-стриминга. Открываем файлdebian/nginx-common.install и в самый низ добавляем
    
    html/50x.html var/www/html
    debian/modules/nginx-rtmp-module/test/www/* var/www/html
    debian/modules/nginx-rtmp-module/stat.xsl var/www/html
    
  8. теперь можно собирать пакет (точнее, их соберётся несколько разных):
    
    $ dpkg-buildpackage -b -us -uc
    
если последняя команда завершилась успешно (строкой типа dpkg-buildpackage: binary only upload (no source included)), то пакеты — собрались.
файлы с ними лежат на каталог выше текущего, т.е. непосредственно в нашем «сборочном» каталоге ~/sborka/nginx. там присутствуют файлы, включающие в названии буквы dbg — это пакеты с отладочной информацией, они обычно не нужны.
нужен как минимум пакет из файла nginx-common_версия.и.другие.буквы.deb и один из пакетов, начинающихся с: nginx-core (базовая функциональность, «умолчальная» версия) или nginx-light («облегчённая» версия) или nginx-full («навороченная» версия).
для начала удалите установленную версию nginx (если есть):
$ sudo apt-get remove 'nginx-*'
и поставьте собранные пакеты из файлов:

$ sudo dpkg -i ~/sborka/nginx/nginx-common_*.deb ~/sborka/nginx/nginx-core_*.deb
если в выводе команды появятся упоминания про неудовлетворённые зависимости, установите их, выполнив:

$ sudo apt-get -f install
теперь можно проверить, присутствует ли упоминание про тот модуль, который вы добавляли (пример был про rtmp, эту строку и ищем):

$ /usr/sbin/nginx -V |& sed 's/ /\n/g' | grep rtmp
--add-module=/home/.../sborka/nginx/nginx-версия/debian/modules/nginx-rtmp-module

Комментариев нет:

Отправить комментарий