aboutsummaryrefslogtreecommitdiffstats
path: root/main/uwsgi/uwsgi.initd
diff options
context:
space:
mode:
authorCarlo Landmeter <clandmeter@gmail.com>2016-06-13 12:13:06 +0200
committerCarlo Landmeter <clandmeter@gmail.com>2016-06-13 15:56:29 +0200
commitdfb4b4cbc698aaa4e4f1798d46e3fda349a599a6 (patch)
treed6921615042860e9d1353ae644d5c368071dff74 /main/uwsgi/uwsgi.initd
parentcffed188deeaab6395053d91ca464ce1495b9569 (diff)
main/uwsgi: refactor init and cleanup
* remove extraneous patches * run uwsgi with its own user/group * add support for POSIX Capabilities (libcap) * simplify init with emperor mode * set base emperor config /etc/uwsgi/uwsgi.ini * set emperor dir to /etc/uwsgi/conf.d * put pid and socket into /run/uwsgi (created by init)
Diffstat (limited to 'main/uwsgi/uwsgi.initd')
-rw-r--r--main/uwsgi/uwsgi.initd142
1 files changed, 6 insertions, 136 deletions
diff --git a/main/uwsgi/uwsgi.initd b/main/uwsgi/uwsgi.initd
index 6dc33377e48..21c4586738b 100644
--- a/main/uwsgi/uwsgi.initd
+++ b/main/uwsgi/uwsgi.initd
@@ -1,144 +1,14 @@
#!/sbin/openrc-run
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/www-servers/uwsgi/files/uwsgi.initd-r3,v 1.1 2013/03/01 09:50:06 ultrabug Exp $
-PROGNAME=${SVCNAME#*.}
-
-UWSGI_EXEC=/usr/sbin/uwsgi
-if [ "${SVCNAME}" == "uwsgi" ]; then
- PIDPATH=/var/run/uwsgi
-else
- PIDPATH="/var/run/uwsgi_${PROGNAME}"
-fi
-PIDFILE="${PIDPATH}/${PROGNAME}.pid"
-
-extra_started_commands="${opts} reload stats"
+pidfile="/run/uwsgi/uwsgi.pid"
+command="/usr/sbin/uwsgi"
+command_args="--daemonize=/var/log/uwsgi.log --emperor /etc/uwsgi/conf.d --emperor-pidfile=$pidfile"
depend() {
- need net
+ need net
}
start_pre() {
- checkpath -d -m 0750 -o "${UWSGI_USER}":"${UWSGI_GROUP}" "${PIDPATH}"
-}
-
-start_emperor() {
- local OPTIONS
- OPTIONS="--daemonize"
-
- if [ -n "${UWSGI_LOG_FILE}" ]; then
- OPTIONS="${OPTIONS} ${UWSGI_LOG_FILE}"
- else
- OPTIONS="${OPTIONS} /dev/null --disable-logging"
- fi
-
- [ -z "${UWSGI_DIR}" ] && UWSGI_DIR="/"
- [ -z "${UWSGI_USER}" ] && UWSGI_USER="root"
- [ -z "${UWSGI_GROUP}" ] && UWSGI_GROUP="root"
-
- if [ -n "${UWSGI_EXTRA_OPTIONS}" ]; then
- OPTIONS="${OPTIONS} ${UWSGI_EXTRA_OPTIONS}"
- fi
-
- ebegin "Starting uWSGI emperor"
- cd "${UWSGI_DIR}" && \
- start-stop-daemon --start --user "${UWSGI_USER}" --exec "${UWSGI_EXEC}" \
- --group ${UWSGI_EMPEROR_GROUP:-${UWSGI_GROUP}} \
- -- --emperor "${UWSGI_EMPEROR_PATH}" ${OPTIONS} --pidfile "${PIDFILE}"
- return $?
-}
-
-start_app() {
- local OPTIONS
- OPTIONS="--master --daemonize"
-
- if [ -n "${UWSGI_LOG_FILE}" ]; then
- OPTIONS="${OPTIONS} ${UWSGI_LOG_FILE}"
- else
- OPTIONS="${OPTIONS} /dev/null --disable-logging"
- fi
-
- [ -z "${UWSGI_DIR}" ] && UWSGI_DIR="/"
- [ -z "${UWSGI_USER}" ] && UWSGI_USER="root"
- [ -z "${UWSGI_GROUP}" ] && UWSGI_GROUP="root"
-
- if [ -n "${UWSGI_EXTRA_OPTIONS}" ]; then
- OPTIONS="${OPTIONS} ${UWSGI_EXTRA_OPTIONS}"
- fi
-
- if [ "${UWSGI_THREADS}" = "1" ]; then
- OPTIONS="${OPTIONS} --enable-threads"
- fi
-
- if [ -n "${UWSGI_SOCKET}" ]; then
- OPTIONS="${OPTIONS} --socket ${UWSGI_SOCKET}"
- fi
-
- if [ -n "${UWSGI_PROCESSES}" ]; then
- OPTIONS="${OPTIONS} --processes ${UWSGI_PROCESSES}"
- fi
-
- if [ -n "${UWSGI_CHROOT}" ]; then
- OPTIONS="${OPTIONS} --chroot ${UWSGI_CHROOT}"
- fi
-
- if [ -n "${UWSGI_PROGRAM}" ]; then
- OPTIONS="${OPTIONS} --fileserve-mode ${UWSGI_PROGRAM}"
- fi
-
- if [ -n "${UWSGI_XML_CONFIG}" ]; then
- OPTIONS="${OPTIONS} --xmlconfig ${UWSGI_XML_CONFIG}"
- fi
-
- ebegin "Starting uWSGI application ${PROGNAME}"
- cd "${UWSGI_DIR}" && \
- start-stop-daemon --start --user "${UWSGI_USER}" --group "${UWSGI_GROUP}" \
- --exec "${UWSGI_EXEC}" -- ${OPTIONS} --pidfile "${PIDFILE}"
- return $?
-}
-
-start() {
- if [ "${SVCNAME}" == "uwsgi" ]; then
- if [ -n "${UWSGI_EMPEROR_PATH}" ]; then
- start_emperor
- eend $?
- else
- eerror "You are not supposed to run this script directly unless you"
- eerror "want to run in Emperor mode. In that case please set the UWSGI_EMPEROR_PATH."
- eerror "Otherwise create a symlink for the uwsgi application you want to run as well as"
- eerror "a copy of the configuration file and modify it appropriately like so..."
- eerror
- eerror " ln -s uwsgi /etc/init.d/uwsgi.trac"
- eerror " cp /etc/conf.d/uwsgi /etc/conf.d/uwsgi.trac"
- eerror " nano /etc/conf.d/uwsgi.trac"
- eerror
- return 1
- fi
- else
- start_app
- eend $?
- fi
-}
-
-stop() {
- if [ -n "${UWSGI_EMPEROR_PATH}" ]; then
- ebegin "Stopping uWSGI emperor"
- else
- ebegin "Stopping uWSGI application ${PROGNAME}"
- fi
- start-stop-daemon --stop --signal QUIT --pidfile "${PIDFILE}"
- eend $?
-}
-
-reload() {
- ebegin "Reloading uWSGI"
- start-stop-daemon --signal HUP --pidfile "${PIDFILE}"
- eend $?
-}
-
-stats() {
- ebegin "Logging uWSGI statistics"
- start-stop-daemon --signal USR1 --pidfile "${PIDFILE}"
- eend $?
+ checkpath --directory --owner uwsgi:uwsgi \
+ --mode 0775 /run/uwsgi
}