#!/sbin/openrc-run # Copyright 1999-2015 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 PROGNAME=${SVCNAME#*.} UWSGI_EXEC=/usr/bin/uwsgi if [ "${SVCNAME}" = "uwsgi" ]; then PIDPATH=/run/uwsgi else PIDPATH="/run/uwsgi_${PROGNAME}" fi PIDFILE="${PIDPATH}/${PROGNAME}.pid" extra_started_commands="${opts} reload stats" depend() { need net } 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" [ -z "${UWSGI_EMPEROR_PIDPATH_MODE}" ] && UWSGI_EMPEROR_PIDPATH_MODE=0770 if [ -n "${UWSGI_EXTRA_OPTIONS}" ]; then OPTIONS="${OPTIONS} ${UWSGI_EXTRA_OPTIONS}" fi ebegin "Starting uWSGI emperor" checkpath -d -m ${UWSGI_EMPEROR_PIDPATH_MODE} -o "${UWSGI_USER}":"${UWSGI_EMPEROR_GROUP:-${UWSGI_GROUP}}" "${PIDPATH}" 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" [ -z "${UWSGI_PIDPATH_MODE}" ] && UWSGI_PIDPATH_MODE=0750 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}" checkpath -d -m ${UWSGI_PIDPATH_MODE} -o "${UWSGI_USER}":"${UWSGI_GROUP}" "${PIDPATH}" cd "${UWSGI_DIR}" && \ start-stop-daemon --start --user "${UWSGI_USER}" --group "${UWSGI_GROUP}" \ --exec "${UWSGI_EXEC}" -- ${OPTIONS} --pidfile "${PIDFILE}" return $? } start() { if [ -n "${UWSGI_EMPEROR_PATH}" ]; then start_emperor eend $? else if [ "${SVCNAME}" = "uwsgi" ]; then 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 else start_app eend $? fi fi } stop() { if [ -n "${UWSGI_EMPEROR_PATH}" ]; then ebegin "Stopping uWSGI emperor" else ebegin "Stopping uWSGI application ${PROGNAME}" fi # retry should be set higher than uwsgi worker-reload-mercy (default 60) start-stop-daemon --stop --signal QUIT --retry 90 --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 $? }