aboutsummaryrefslogtreecommitdiffstats
path: root/www/nginx-devel/files/nginx.sh.in
blob: 68159e9c4d3c27368a195558b88ddf7cfdb69ef1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#!/bin/sh
# $FreeBSD$

# PROVIDE: nginx
# REQUIRE: LOGIN cleanvar
# KEYWORD: shutdown

#
# Add the following lines to /etc/rc.conf to enable nginx:
# nginx_enable (bool):      Set to "NO" by default.
#               Set it to "YES" to enable nginx
# nginx_profiles (str):     Set to "" by default.
#               Define your profiles here.
# nginxlimits_enable (bool):    Set to "NO" by default.
#               Set it to yes to run `limits $limits_args`
#               just before nginx starts.
# nginx_flags (str):        Set to "" by default.
#               Extra flags passed to start command.
# nginxlimits_args (str):   Default to "-e -U %%WWWOWN%%"
#               Arguments of pre-start limits run.

. %%RC_SUBR%%

name="nginx"
rcvar=`set_rcvar`

start_precmd="nginx_precmd"
restart_precmd="nginx_checkconfig"
reload_precmd="nginx_checkconfig"
configtest_cmd="nginx_checkconfig"
gracefulstop_cmd="nginx_gracefulstop"
upgrade_precmd="nginx_checkconfig"
upgrade_cmd="nginx_upgrade"
command="%%PREFIX%%/sbin/nginx"
_pidprefix="/var/run/nginx"
pidfile="${_pidprefix}.pid"
required_files=%%PREFIX%%/etc/nginx/nginx.conf

[ -z "$nginx_enable" ]      && nginx_enable="NO"
[ -z "$nginxlimits_enable" ]    && nginxlimits_enable="NO"
[ -z "$nginxlimits_args" ]  && nginxlimits_args="-e -U %%WWWOWN%%"

load_rc_config $name

if [ -n "$2" ]; then
    profile="$2"
    if [ "x${nginx_profiles}" != "x" ]; then
        pidfile="${_pidprefix}.${profile}.pid"
        eval nginx_configfile="\${nginx_${profile}_configfile:-}"
        if [ "x${nginx_configfile}" = "x" ]; then
            echo "You must define a configuration file (nginx_${profile}_configfile)"
            exit 1
        fi
        required_files="${nginx_configfile}"
        eval nginx_enable="\${nginx_${profile}_enable:-${nginx_enable}}"
        eval nginx_flags="\${nginx_${profile}_flags:-${nginx_flags}}"
        eval nginxlimits_enable="\${nginxlimits_${profile}_enable:-${nginxlimits_enable}}"
        eval nginxlimits_args="\${nginxlimits_${profile}_args:-${nginxlimits_args}}"
        nginx_flags="-c ${nginx_configfile} -g \"pid ${pidfile};\" ${nginx_flags}"
    else
        echo "$0: extra argument ignored"
    fi
else
    if [ "x${nginx_profiles}" != "x" -a "x$1" != "x" ]; then
        for profile in ${nginx_profiles}; do
            echo "===> nginx profile: ${profile}"
            %%PREFIX%%/etc/rc.d/nginx%%RC_SUBR_SUFFIX%% $1 ${profile}
            retcode="$?"
            if [ "0${retcode}" -ne 0 ]; then
                failed="${profile} (${retcode}) ${failed:-}"
            else
                success="${profile} ${success:-}"
            fi
        done
        exit 0
    fi
fi

nginx_checkconfig()
{
    echo "Performing sanity check on nginx configuration:"
    eval ${command} ${nginx_flags} -t
}

nginx_gracefulstop()
{
    echo "Performing a graceful stop:"
    sig_stop="QUIT"
    run_rc_command ${rc_prefix}stop $rc_extra_args || return 1
}

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

    if checkyesno nginxlimits_enable
    then
        eval `/usr/bin/limits ${nginxlimits_args}` 2>/dev/null
    else
        return 0
    fi
}

extra_commands="reload configtest upgrade gracefulstop"
run_rc_command "$1"