Date: Tue, 24 Jun 2008 18:47:05 +0400 (MSD) From: Eygene Ryabinkin <rea-fbsd@codelabs.ru> To: FreeBSD-gnats-submit@FreeBSD.org Cc: osa@FreeBSD.org Subject: ports/124940: [patch] add multiple profiles support to www/nginx rc.d script Message-ID: <20080624144705.6D90F1AF41E@void.codelabs.ru> Resent-Message-ID: <200806241450.m5OEo24J094438@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 124940 >Category: ports >Synopsis: [patch] add multiple profiles support to www/nginx rc.d script >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Jun 24 14:50:01 UTC 2008 >Closed-Date: >Last-Modified: >Originator: Eygene Ryabinkin >Release: FreeBSD 7.0-STABLE i386 >Organization: Code Labs >Environment: System: FreeBSD XXX 7.0-STABLE FreeBSD 7.0-STABLE #16: Tue Mar 18 11:49:55 MSK 2008 root@XXX:/usr/obj/usr/src/sys/XXX i386 >Description: Recently I needed to run two nginx instances with different users. In FreeBSD's Apache port this can be accomplished with multiple profiles, but stock rc.d script for nginx lacks this functionality. I had added it along the lines of Apache rc.d script. >How-To-Repeat: Look at the rc.d/nginx: it is not possible to run more that one server with different configuration files. >Fix: The following patch adds the needed functionality. --- nginx.sh-multiple-profiles.patch begins here --- --- files/nginx.sh.in 2008-06-24 18:33:45.000000000 +0400 +++ files/nginx.sh.in.new 2008-06-24 18:33:48.000000000 +0400 @@ -25,6 +25,33 @@ load_rc_config $name +# Handle profiles here +if [ -n "$2" ]; then + if [ -n "${nginx_profiles}" ]; then + eval nginx_configfile=\"\${nginx_${2}_configfile:-}\" + if [ -z "$nginx_configfile" ]; then + echo "nginx_${2}_configfile is not set" + exit 1 + fi + required_files="${nginx_configfile}" + eval nginx_enable=\"\${nginx_${2}_enable:-${nginx_enable}}\" + eval nginx_flags=\"\${nginx_${2}_flags:-${nginx_flags}}\" + eval nginx_pidfile=\"\${nginx_${2}_pidfile:-/var/run/nginx.${2}.pid}\" + nginx_flags="${nginx_flags:-} -c ${nginx_configfile}" + else + echo "$0: no nginx profiles, argument '$2' ignored." + fi +else + # Loop over profiles, spawning ourself. + if [ -n "$nginx_profiles" -a -n "$1" ]; then + for p in ${nginx_profiles}; do + echo "===> nginx profile: ${p}" + %%PREFIX%%/etc/rc.d/nginx%%RC_SUBR_SUFFIX%% "$1" "$p" + done + exit 0 + fi +fi + pidfile="${nginx_pidfile}" extra_commands="configtest reload" --- Makefile.orig 2008-06-24 18:39:12.000000000 +0400 +++ Makefile 2008-06-24 18:39:58.000000000 +0400 @@ -44,6 +44,8 @@ CONFLICTS?= nginx-devel-0.* USE_RC_SUBR= nginx.sh +SUB_LIST+= RC_SUBR_SUFFIX=${RC_SUBR_SUFFIX} + HAS_CONFIGURE= yes CONFIGURE_ARGS+=--prefix=${ETCDIR} \ --with-cc-opt="-I ${LOCALBASE}/include" \ --- nginx.sh-multiple-profiles.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080624144705.6D90F1AF41E>