| #!/sbin/runscript |
| # Copyright 1999-2012 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| PROGNAME=${SVCNAME#*.} |
| |
| UWSGI_EXEC=/usr/bin/uwsgi |
| PIDPATH=/var/run/uwsgi |
| PIDFILE="${PIDPATH}/${PROGNAME}.pid" |
| |
| extra_started_commands="${opts} reload stats" |
| |
| depend() { |
| need net |
| } |
| |
| start_pre() { |
| checkpath -d -m 0750 -o "${UWSGI_USER}":root "${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" |
| |
| 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}" \ |
| -- --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" |
| |
| 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}" --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 $? |
| } |