diff options
author | Carlo Landmeter <clandmeter@gmail.com> | 2016-06-13 12:13:06 +0200 |
---|---|---|
committer | Carlo Landmeter <clandmeter@gmail.com> | 2016-06-13 15:56:29 +0200 |
commit | dfb4b4cbc698aaa4e4f1798d46e3fda349a599a6 (patch) | |
tree | d6921615042860e9d1353ae644d5c368071dff74 /main/uwsgi/uwsgi.initd | |
parent | cffed188deeaab6395053d91ca464ce1495b9569 (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.initd | 142 |
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 } |