diff files/uwsgi.in @ 0:748e69c58ee3 origin

Added the FreeBSD port www/uwsgi as of 2017-09-13 as origin port
author Franz Glasner <hg@dom66.de>
date Wed, 13 Sep 2017 17:09:22 +0200
parents
children 9b7ee2483282
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/files/uwsgi.in	Wed Sep 13 17:09:22 2017 +0200
@@ -0,0 +1,159 @@
+#!/bin/sh
+#
+# $FreeBSD: head/www/uwsgi/files/uwsgi.in 448482 2017-08-21 17:49:01Z ultima $
+#
+# 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
+
+: ${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_uid}"}
+		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"