ports/125766: [patch] www/nginx-devel - extra command: upgrade
Maxim Dounin
mdounin at mdounin.ru
Sat Jul 19 09:50:03 UTC 2008
>Number: 125766
>Category: ports
>Synopsis: [patch] www/nginx-devel - extra command: upgrade
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sat Jul 19 09:50:02 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Maxim Dounin
>Release: FreeBSD 7.0-RC2 i386
>Organization:
>Environment:
System: FreeBSD mdounin.cust.ramtel.ru 7.0-RC2 FreeBSD 7.0-RC2 #1: Mon Feb 18 19:55:43 MSK 2008 root at mdounin.cust.ramtel.ru:/usr/obj/usr/src/sys/GENERIC i386
>Description:
Extra command to rc script: upgrade.
Runs simple form of nginx binary upgrade procedure, allowing to change binary
on-the-fly without loosing any single request.
>How-To-Repeat:
>Fix:
# HG changeset patch
# User Maxim Dounin <mdounin at mdounin.ru>
# Date 1216436541 -14400
# Node ID 8d0ab4f3900bb4e6fdb22564ff2b33ee2f49e33a
# Parent 695fa767cf2984222d07b57f288c27f1d54c9706
Extra command: upgrade.
Runs simple form of nginx binary upgrade procedure, allowing to change binary
on-the-fly without loosing any single request.
diff --git a/files/nginx.sh.in b/files/nginx.sh.in
--- a/files/nginx.sh.in
+++ b/files/nginx.sh.in
@@ -28,6 +28,8 @@ restart_precmd="nginx_checkconfig"
restart_precmd="nginx_checkconfig"
reload_precmd="nginx_checkconfig"
configtest_cmd="nginx_checkconfig"
+upgrade_precmd="nginx_checkconfig"
+upgrade_cmd="nginx_upgrade"
command="%%PREFIX%%/sbin/nginx"
_pidprefix="/var/run/nginx"
pidfile="${_pidprefix}.pid"
@@ -89,6 +91,23 @@ nginx_checkconfig()
eval ${command} ${nginx_flags} -t
}
+nginx_upgrade()
+{
+ echo "Upgrading nginx binary:"
+
+ reload_precmd=""
+ sig_reload="USR2"
+ run_rc_command ${rc_prefix}reload $rc_extra_args || return 1
+
+ sleep 1
+
+ echo "Stopping old binary:"
+
+ sig_reload="QUIT"
+ pidfile="$pidfile.oldbin"
+ run_rc_command ${rc_prefix}reload $rc_extra_args || return 1
+}
+
nginx_precmd()
{
nginx_checkconfig
@@ -102,5 +121,5 @@ nginx_precmd()
}
-extra_commands="reload configtest"
+extra_commands="reload configtest upgrade"
run_rc_command "$1"
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list