/usr/sbin/nginx alternatives
Hennadii Makhomed
gmm на csdoc.com
Пн Сен 16 18:34:31 UTC 2024
On 16.09.2024 19:25, Konstantin Pavlov wrote:
>> а как Вам идея вместо двух unit-файлов nginx.service
>> и nginx-debug.service использовать только один unit-файл
>> nginx.service и использовать alternatives для переключения
>> бинарника /usr/sbin/nginx между release и debug версиями ?
>
> Мы поддерживаем несколько разных ОС в наших пакетах на nginx.org (и еще
> больше - для коммерческой версии), и не во всех них есть поддержка
> alternatives. По этой причине не хотелось бы это реализовывать для
> какой-то одной конкретной ОС если нельзя сделать везде одинаково.
это можно сделать везде одинаково, на всех Linux/UNIX системах.
в пакет положить два бинарника:
/usr/sbin/nginx-release
/usr/sbin/nginx-debug
а потом симлинк /usr/sbin/nginx устанавливать
на один из этих бинарников внешним скриптом,
если такого симлинка нет - установить
его тогда на /usr/sbin/nginx-release
например, так:
NGINX_VERSION=debug /sbin/service nginx upgrade
NGINX_VERSION=release /sbin/service nginx upgrade
просто добавив скрипт
/usr/libexec/initscripts/legacy-actions/nginx/upgrade
такую логику:
если переменная NGINX_VERSION равна debug то установить симлинк
/usr/sbin/nginx чтобы он указывал на на бинарник /usr/sbin/nginx-debug
если переменная NGINX_VERSION равна release то установить симлинк
/usr/sbin/nginx чтобы он указывал на на бинарник /usr/sbin/nginx-release
если переменная NGINX_VERSION не определена - не трогать симлинк.
если переменная NGINX_VERSION определена, но не равна release или debug
то в таком случае выдать сообщение про ошибку и аварийно завершить
работу скрипта с ненулевым кодом ошибки
переменную NGINX нельзя использовать, потому что
# man nginx
ENVIRONMENT
The NGINX environment variable is used internally by nginx and
should not be set directly by the user.
===============================================================
или так:
nginx upgrade to debug
nginx upgrade to release
nginx upgrade
причем, одинарные или двойные минусы перед словом "upgrade"
тут и не нужны, потому что это же и есть именно что команда
в таком стиле работает и zfs и systemctl и многие другие
команды современного Linux/UNIX например, тот же kubectl
если же переключение между release / debug версями происходит с помощью
двух отдельных сервисов nginx.service и nginx-debug.service, то в таком
случае переключение между ними происходит с потерей соединений клиентов
--
Best regards,
Gena
Подробная информация о списке рассылки nginx-ru