mirror of
https://github.com/beard7n/bsdports.git
synced 2026-04-10 10:31:20 +02:00
160 lines
5.0 KiB
Bash
160 lines
5.0 KiB
Bash
#!/bin/sh
|
|
#
|
|
# $FreeBSD: head/www/uwsgi/files/uwsgi.in 473044 2018-06-22 14:59:33Z swills $
|
|
#
|
|
# PROVIDE: uwsgi
|
|
# REQUIRE: DAEMON
|
|
# KEYWORD: shutdown
|
|
#
|
|
# Add the following lines to /etc/rc.conf to enable uwsgi:
|
|
#
|
|
# uwsgi_enable (bool): Set it to "YES" to enable uwsgi
|
|
# Default is "NO".
|
|
# uwsgi_socket (path/str): Set the path to the uwsgi unix socket
|
|
# Default is /tmp/uwsgi.sock.
|
|
# uwsgi_socket_mode (int): Set the mode of the socket.
|
|
# Default is 660.
|
|
# uwsgi_socket_owner (str): Set the owner of the socket.
|
|
# Default is uwsgi:www.
|
|
# uwsgi_emperor (bool): Set it to "YES" to run uwsgi in emperor mode
|
|
# Default is "NO".
|
|
# uwsgi_configfile (path): Set the path to the config file
|
|
# Default is %%PREFIX%%/etc/uwsgi/uwsgi.ini.
|
|
# uwsgi_vassals_dir (path): Set the path to the vassals directory
|
|
# Default is %%PREFIX%%/etc/uwsgi/vassals.
|
|
# uwsgi_logfile (path): Set the path to the uwsgi log file
|
|
# Default is /var/log/uwsgi.log.
|
|
# uwsgi_pidfile (path): Set the path to the uwsgi pid file
|
|
# Default is /var/run/uwsgi.pid.
|
|
# uwsgi_uid (int): Set the UID of the process to run with
|
|
# Default is uwsgi.
|
|
# uwsgi_gid (int): Set the GID of the process to run with
|
|
# Default is uwsgi.
|
|
# uwsgi_flags (str): Set the uwsgi command line arguments
|
|
# Default is "-L".
|
|
# uwsgi_procname (str): Define to "uWSGI" if you start uwsgi with
|
|
# --auto-procname option.
|
|
#
|
|
# If you would like to have multiple uWSGI instances running, you can
|
|
# define multiple profiles:
|
|
#
|
|
# uwsgi_profiles (str): Set the list of uwsgi profiles
|
|
# Default is "".
|
|
#
|
|
# For each profile you can then define different options (except for
|
|
# uwsgi_enable) using the syntax uwsgi_<profile>_<option>
|
|
|
|
. /etc/rc.subr
|
|
|
|
name="uwsgi"
|
|
rcvar=uwsgi_enable
|
|
|
|
load_rc_config $name
|
|
|
|
command=%%PREFIX%%/bin/uwsgi-%%PYTHON_VER%%
|
|
|
|
: ${uwsgi_enable="NO"}
|
|
: ${uwsgi_socket="/tmp/${name}.sock"}
|
|
: ${uwsgi_socket_mode="660"}
|
|
: ${uwsgi_socket_owner="uwsgi:www"}
|
|
: ${uwsgi_configfile="%%PREFIX%%/etc/uwsgi/uwsgi.ini"}
|
|
: ${uwsgi_profiles=""}
|
|
: ${uwsgi_logfile="/var/log/${name}.log"}
|
|
: ${uwsgi_pidfile="/var/run/${name}.pid"}
|
|
: ${uwsgi_uid="uwsgi"}
|
|
: ${uwsgi_gid="uwsgi"}
|
|
: ${uwsgi_flags="-L"}
|
|
: ${uwsgi_emperor="NO"}
|
|
: ${uwsgi_vassals_dir="%%PREFIX%%/etc/uwsgi/vassals"}
|
|
|
|
is_uwsgi_profile() {
|
|
local profile
|
|
|
|
for profile in $uwsgi_profiles; do
|
|
if [ "$profile" = "$1" ]; then
|
|
return 0
|
|
fi
|
|
done
|
|
|
|
return 1
|
|
}
|
|
|
|
if [ -n "${uwsgi_profiles}" ]; then
|
|
if [ -n "$2" ]; then
|
|
profile="$2"
|
|
if ! is_uwsgi_profile $profile; then
|
|
echo "$0: no such profile defined in uwsgi_profiles."
|
|
exit 1
|
|
fi
|
|
eval uwsgi_socket=\${uwsgi_${profile}_socket:-"/tmp/${name}-${profile}.sock"}
|
|
eval uwsgi_socket_mode=\${uwsgi_${profile}_socket_mode:-${uwsgi_socket_mode}}
|
|
eval uwsgi_socket_owner=\${uwsgi_${profile}_socket_owner:-${uwsgi_socket_owner}}
|
|
eval uwsgi_logfile=\${uwsgi_${profile}_logfile:-"/var/log/${name}-${profile}.log"}
|
|
eval uwsgi_pidfile=\${uwsgi_${profile}_pidfile:-"/var/run/${name}-${profile}.pid"}
|
|
eval uwsgi_uid=\${uwsgi_${profile}_uid:-"${uwsgi_uid}"}
|
|
eval uwsgi_gid=\${uwsgi_${profile}_gid:-"${uwsgi_gid}"}
|
|
eval uwsgi_flags=\${uwsgi_${profile}_flags:-"${uwsgi_flags}"}
|
|
eval uwsgi_procname=\${uwsgi_${profile}_procname:-"${uwsgi_procname}"}
|
|
eval uwsgi_emperor=\${uwsgi_${profile}_emperor:-"${uwsgi_emperor}"}
|
|
eval uwsgi_vassals_dir=\${uwsgi_${profile}_vassals_dir:-"${uwsgi_vassals_dir}"}
|
|
eval uwsgi_configfile=\${uwsgi_${profile}_configfile:-"${uwsgi_configfile}"}
|
|
elif [ -n "$1" ]; then
|
|
for profile in ${uwsgi_profiles}; do
|
|
echo "Processing ${name} profile: ${profile}"
|
|
%%PREFIX%%/etc/rc.d/uwsgi $1 ${profile}
|
|
done
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
pidfile=${uwsgi_pidfile}
|
|
start_precmd=start_precmd
|
|
stop_postcmd=stop_postcmd
|
|
reload_precmd=reload_precmd
|
|
brutalreload_cmd=brutalreload_cmd
|
|
sig_stop="INT"
|
|
extra_commands="reload brutalreload"
|
|
procname=${uwsgi_procname}
|
|
|
|
start_precmd()
|
|
{
|
|
rc_flags=""
|
|
if [ -e ${uwsgi_configfile} ]; then
|
|
rc_flags="--ini ${uwsgi_configfile} "
|
|
fi
|
|
|
|
if checkyesno uwsgi_emperor; then
|
|
echo "Running uWSGI as Emperor. Vassals loaded from "$uwsgi_vassals_dir
|
|
required_dirs=${uwsgi_vassals_dir}
|
|
rc_flags=${rc_flags}"--emperor-pidfile ${uwsgi_pidfile} -d ${uwsgi_logfile} --emperor ${uwsgi_vassals_dir}"
|
|
rc_flags=${rc_flags}" --vassals-set uid=${uwsgi_uid} --vassals-set gid=${uwsgi_gid}"
|
|
rc_flags=${rc_flags}" --vassals-set chmod-socket=${uwsgi_socket_mode} --vassals-set chown-socket=${uwsgi_socket_owner}"
|
|
else
|
|
rc_flags=${rc_flags}"--master --uid ${uwsgi_uid} --gid ${uwsgi_gid} --pidfile ${uwsgi_pidfile} -d ${uwsgi_logfile}"
|
|
rc_flags=${rc_flags}" -s ${uwsgi_socket} --chmod-socket=${uwsgi_socket_mode} --chown-socket=${uwsgi_socket_owner}"
|
|
fi
|
|
|
|
rc_flags=${rc_flags}" ${uwsgi_flags}"
|
|
}
|
|
|
|
stop_postcmd()
|
|
{
|
|
rm -f ${uwsgi_pidfile} ${uwsgi_socket}
|
|
}
|
|
|
|
reload_precmd()
|
|
{
|
|
echo "Gracefully reloading ${name} without closing the main sockets."
|
|
}
|
|
|
|
brutalreload_cmd()
|
|
{
|
|
echo "Reloading ${name} without closing the main sockets."
|
|
|
|
reload_precmd=""
|
|
sig_reload="TERM"
|
|
run_rc_command ${rc_prefix}reload $rc_extra_args || return 1
|
|
}
|
|
|
|
run_rc_command "$1"
|