Перед установкой читаем
https://www.digitalocean.com/community/tutorials/h...
https://www.debian-administration.org/article/666/...
What is the difference between the core, full, extras and light packages for nginx?
askubuntu.com/questions/553937/what-is-the-differe...
Обновим систему
sudo apt-get update && sudo apt-get -y upgrade
Директории для пакета
rm -rf /tmp/ngx
mkdir /tmp/ngx
cd /tmp/ngx
Для создания пакета нужно установить
sudo apt-get install -y build-essential dpkg-dev
Поставим все что нужно для самого пакета
sudo apt-get build-dep -y nginx
Заберем исходники актуальной версии софта из основного репозитория
apt-get source -y nginx
Изменяем ченджлог
vim nginx-1.4.6/debian/changelog
Что-то наподобии
nginx (1.4.6.1-1ubuntu3.4) trusty; urgency=medium
* Foo: buz
- bar
-- foo \ Wed, 03 Feb 2016 09:12:00 -0500
Главное тут увеличить версию с 1.4.6 до 1.4.6.1
Хотя я не уверен, что ето на что-то влияет
Пакет собирается и без етого
Тут хранятся модули nginx
cd nginx-1.4.6/debian/modules
меинтейнер пакета добавил пак еще каких-то модулей
не знаю зачем
Берем код из мастера nginx-rtmp-module-master
curl -skL https://github.com/arut/nginx-rtmp-module/tarball/master | tar zx
для удобства переименуем
mv arut-nginx-rtmp-module-* nginx-rtmp-module
nginx-vod-module-master
скорее всего нужно будет поставить
sudo apt-get install libav-tools
curl -skL https://github.com/kaltura/nginx-vod-module/tarball/master | tar zx
mv kaltura-nginx-vod-module-* nginx-vod-module
cd /tmp/ngx/nginx-1.4.6
Редактируем конфигурацию для ./configure + make nginx
vim debian/rules
тут все просто, если прочитан линк про версии nginx для убунту
Можно добавить
--add-module=$(MODULESDIR)/nginx-vod-module \
--add-module=$(MODULESDIR)/nginx-rtmp-module \
в common_configure_flags
после
--with-http_realip_module \
или в config.status.full: config.env.full после
--add-module=$(MODULESDIR)/ngx_http_substitutions_filter_module \
перед
>$@
И вообще стоит подумать, какой набор модулей нужен тебе
Теперь все готово к конфигурированию, компилированию и созданию деб-пакета
dpkg-buildpackage -us -uc -b
Пояснение
-us Do not sign the source package.
-uc Do not sign the .changes file.
-b Specifies a binary-only build, no source files are to be built and/or distributed.
Passed to dpkg-genchanges.
Устанавливаемся в той же системе, где и собирали пакет
sudo dpkg -i ../nginx-common_*
sudo dpkg -i ../nginx-full_*
если в другой (желательно в другой), то при установке будет ругань
Решается так
sudo apt-get -f install
Проверяем версии
nginx -V
nginx version: nginx/1.4.6 (Ubuntu)
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro' --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_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_spdy_module --with-http_sub_module --with-http_xslt_module --with-mail --with-mail_ssl_module --add-module=/tmp/ngx/nginx-1.4.6/debian/modules/nginx-auth-pam --add-module=/tmp/ngx/nginx-1.4.6/debian/modules/nginx-dav-ext-module --add-module=/tmp/ngx/nginx-1.4.6/debian/modules/nginx-echo --add-module=/tmp/ngx/nginx-1.4.6/debian/modules/nginx-upstream-fair --add-module=/tmp/ngx/nginx-1.4.6/debian/modules/ngx_http_substitutions_filter_module --add-module=/tmp/ngx/nginx-1.4.6/debian/modules/nginx-vod-module --add-module=/tmp/ngx/nginx-1.4.6/debian/modules/nginx-rtmp-module
Проблема с конфигом
sudo service nginx start
sudo service nginx status
* nginx is not running
cat /var/log/nginx/error.log
[emerg] 18447#0: could not build the variables_hash, you should increase either variables_hash_max_size: 512 or variables_hash_bucket_size: 64
Какой-то умник поставил туда переменную types_hash_max_size 2048; с большим значением
Решение или закоментить или добавить
variables_hash_max_size 1024;
variables_hash_bucket_size 128;
sudo vim /etc/nginx/nginx.conf
# types_hash_max_size 2048;
# variables_hash_max_size 1024;
# variables_hash_bucket_size 128;
Проблема с обновлениями
Тк теперь в системе имеется пакет уже существующий в базовом репозитории при очередном ap-get update + upgrade он будет заменен на пакет с большим номером версии
Решение
sudo apt-mark hold nginx-full
чтоб обновить пакет повторям все с начала
sudo apt-mark unhold