https://dragonflybsd.blogspot.com/2019/03/nginx-prometheus-dashboard-grafana.html
Вводные: есть сервер с ubuntu 16.04, которому нужно добавить модуль vts, стоит nginx=1.17.10
Решаем задачу.
Запускаем контейнер с нужной версией
docker run -ti --rm --name ubuntu16 ubuntu:16.04
Подготовка
apt update
apt install -y build-essential wget git sudo vim curl
# для удобства
export VERSION=1.17.10
cd /usr/local/src/
1) вариант через пакеты
Если офрепа
cat >> /etc/apt/sources.list.d/nginx.list << EOF
deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx
EOF
Но может оказаться репа ondrej
#curl https://packages.sury.org/nginx/README.txt | sh
#https://launchpad.net/~ondrej/+archive/ubuntu/nginx
# курл даст не те файлы, по линку получаем нормальные
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C
и тогда версия ниже будет 1.17.10-1+ubuntu16.04.1+deb.sury.org+1
wget http://nginx.org/packages/keys/nginx_signing.key
cat nginx_signing.key | sudo apt-key add -
apt install -y nginx=1.17.10-1~xenial
apt build-dep nginx -y
apt source nginx=1.17.10-1~xenial
тут добавляем модуль для сборки:
--add-dynamic-module=../nginx-module-vts
git clone https://github.com/vozlt/nginx-module-vts.git
cd nginx-1.17.10/
dpkg-buildpackage -uc -b
просто копируем блок configure из вывода и снова запускаем его руками. Это явно неправильно, но - так работает. Впрочем, может и не надо руками перезапускать, просто проигнорировать ошибку и сразу make modules? У нас же нет цели (пока) собрать пакет.
а потом
make modules
и забираем
./objs/ngx_http_vhost_traffic_status_module.so
Теперь его нужно
а) положить на диск: nginx -V 2>&1 | grep --color modules-path
б) подключить: load_module modules/ngx_http_vhost_traffic_status_module.so;
модуль для 1.17 должен лежать тут
/usr/share/nginx/modules/
Также, старые версии типа 1.17 не умеют сами сканировать папку и нужно им явно указать что грузим модуль:
cd /etc/nginx/modules-available
echo >> 99_vts.conf << EOF
load_module modules/ngx_http_vhost_traffic_status_module.so;
EOF
cd ../modules-enabled
ln -s ../modules-available/99_vts.conf
(Хинт: в новых версиях модули в /usr/lib/nginx/modules, проверить можно через nginx -V 2>&1 | grep --color modules-path)
Также проверить, что модули вообще грузятся, в ряде версий/дистров есть подключение modules-enabled/*.conf, но в некоторых вообще такого нет и надо руками делать и/или использовать conf.d.
2) вариант через исходники
# качаем исходник
wget http://nginx.org/download/nginx-${VERSION}.tar.gz
tar zxf nginx-${VERSION}.tar.gz
# и модуль
git clone https://github.com/vozlt/nginx-module-vts.git
# собираем
cd nginx-1.17.10
./configure
Возможно, тут потребуется подбирать аргументы, модули и прочее, особенно если нужен модуль у уже собранному...
https://nginx.org/en/docs/configure.html
тут добавляем модуль для сборки и собираем, посматривая в доку выше. В случае, когда писалась заметка, первый метод сработал ок, второй "как можно ещё".
Вот какой-то пример
https://www.vultr.com/docs/how-to-compile-nginx-from-source-on-ubuntu-16-04/
Комментариев нет:
Отправить комментарий