gentoo/www-servers/nginx/files/nginx-r6.initd
Zurab Kvachadze 75c2cb66ee
www-servers/nginx: fix fastcgi.conf, nginx-r6.initd regressions from nginx.eclass
nginx.eclass prefers fastcgi_params over fastcgi.conf for consistency.
For some reason, when I was writing nginx.eclass I missed the fact that
fastcgi.conf has one extra `fastcgi_param` vs fastcgi_params. This
commit uses fastcgi.conf as new fastcgi_params by renaming the former to
the latter.

In 8481acdc2c34e960f08cd90ce09068d791e42901[1] ("www-servers/nginx: use
default start/stop initd functions"), the custom start() was removed,
where the `-c` and `-g` cmdline parameters were hardcoded, which regressed
services that were symlinked to /etc/init.d/nginx.

This commit fixes both issues at the same time to avoid revbumping
ebuilds twice. KEYWORDS were not dropped because this fixes regressions.

[1]: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8481acdc2c34e960f08cd90ce09068d791e42901

Closes: https://bugs.gentoo.org/966799
Closes: https://bugs.gentoo.org/966798
Signed-off-by: Zurab Kvachadze <zurabid2016@gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/44853
Closes: https://github.com/gentoo/gentoo/pull/44853
Signed-off-by: Sam James <sam@gentoo.org>
2025-12-02 00:05:42 +00:00

92 lines
2.8 KiB
Plaintext

#!/sbin/openrc-run
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
name="NGINX"
description="Robust, small and high performance HTTP and reverse proxy server"
description_configtest="Run NGINX's internal config check."
description_upgrade="Upgrade the NGINX binary without losing connections."
description_reload="Reload the NGINX configuration without losing connections."
NGINX_CONFIGFILE=${NGINX_CONFIGFILE:-/etc/nginx/${RC_SVCNAME}.conf}
NGINX_MAXWAITTIME=${NGINX_MAXWAITTIME:-3}
command="/usr/sbin/nginx"
start_stop_daemon_args=${NGINX_SSDARGS:-"--wait 1000"}
pidfile="/run/${RC_SVCNAME}/${RC_SVCNAME}.pid"
user=${NGINX_USER:-nginx}
group=${NGINX_GROUP:-nginx}
retry=${NGINX_TERMTIMEOUT:-"TERM/60/KILL/5"}
command_args="-c \"${NGINX_CONFIGFILE}\" -g 'pid ${pidfile};'"
extra_commands="configtest"
extra_started_commands="upgrade reload"
depend() {
use net dns logger netmount
}
start_pre() {
checkpath -d -m 0755 -o 0:0 "/run/${RC_SVCNAME}"
}
stop_pre() {
if [ "${RC_CMD}" = "restart" ]; then
configtest || return 1
fi
}
reload() {
ebegin "Refreshing NGINX's configuration"
start-stop-daemon --signal SIGHUP --pidfile "${pidfile}"
eend $? "Failed to reload NGINX's configuration, please correct the errors above"
}
upgrade() {
einfo "Upgrading NGINX"
configtest || { eerror "Unable to upgrade NGINX: Configuration check failed";
return 1; }
einfo "Sending USR2 signal to the old binary"
start-stop-daemon --signal SIGUSR2 --pidfile "${pidfile}"
ebegin "Waiting up to ${NGINX_MAXWAITTIME} seconds for NGINX to upgrade"
local startdate pidfile_found
pidfile_found=0
endtime=$(("$(date +%s)" + NGINX_MAXWAITTIME))
while [ "$(date +%s)" -le "${endtime}" ]; do
if [ -f "${pidfile}" ] && [ -f "${pidfile}.oldbin" ]; then
pidfile_found=1
break
fi
sleep 1
done
[ "${pidfile_found}" = 1 ]
if ! eend $?; then
eerror "NGINX has failed to upgrade in time. This might have been caused either"
eerror "by a configuration error, uncaught by the configuration check, or, more"
eerror "likely, by NGINX taking more time to load the configuration than is"
eerror "allowed by the NGINX_MAXWAITTIME variable"
eerror "The maximum waiting time can be adjusted by setting the NGINX_MAXWAITTIME"
eerror "variable to a larger value in /etc/conf.d/nginx"
return 1
fi
einfo "Sending QUIT signal to the old binary"
start-stop-daemon --signal SIGQUIT --pidfile "${pidfile}.oldbin" ||
{ eerror "The old NGINX binary may not have been stopped properly: Sending QUIT signal failed";
return 1; }
einfo "The upgrade has completed successfuly"
}
configtest() {
ebegin "Checking NGINX's configuration"
"${command}" -c "${NGINX_CONFIGFILE}" -t
if ! eend $?; then
eerror "Configuration check failed, please correct the errors above"
return 1
fi
}