diff --git a/debian/roles/appservers-uwsgi/files/usgi.init b/debian/roles/appservers-uwsgi/files/usgi.init new file mode 100644 index 0000000..442cd62 --- /dev/null +++ b/debian/roles/appservers-uwsgi/files/usgi.init @@ -0,0 +1,72 @@ +#!/bin/sh + +### BEGIN INIT INFO +# Provides: uwsgi +# Required-Start: $all +# Required-Stop: $all +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: starts the uwsgi app server +# Description: starts uwsgi app server using start-stop-daemon +### END INIT INFO + +PATH=/opt/uwsgi:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/local/bin/uwsgi + +OWNER=uwsgi + +NAME=uwsgi +DESC=uwsgi + +test -x $DAEMON || exit 0 + +# Include uwsgi defaults if available +if [ -f /etc/default/uwsgi ] ; then + . /etc/default/uwsgi +fi + +set -e + +#DAEMON_OPTS="-s 127.0.0.1:9001 -M 4 -t 30 -A 4 -p 4 -d /var/log/uwsgi.log --pythonpath $PYTHONPATH --module $MODULE" +DAEMON_OPTS="--emperor /etc/uwsgi/apps -d /var/log/uwsgi.log" +case "$1" in + start) + echo -n "Starting $DESC: " + start-stop-daemon --start --chuid $OWNER:$OWNER --user $OWNER \ + --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + stop) + echo -n "Stopping $DESC: " + start-stop-daemon --signal 3 --user $OWNER --quiet --retry 2 --stop \ + --exec $DAEMON + echo "$NAME." + ;; + reload) + killall -1 $DAEMON + ;; + force-reload) + killall -15 $DAEMON + ;; + restart) + echo -n "Restarting $DESC: " + start-stop-daemon --signal 3 --user $OWNER --quiet --retry 2 --stop \ + --exec $DAEMON + sleep 1 + start-stop-daemon --user $OWNER --start --quiet --chuid $OWNER:$OWNER \ + --exec $DAEMON -- $DAEMON_OPTS + echo "$NAME." + ;; + status) + killall -10 $DAEMON + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|reload|force-reload|status}" >&2 + exit 1 + ;; + esac + exit 0 + + + diff --git a/debian/roles/appservers-uwsgi/handlers/main.yml b/debian/roles/appservers-uwsgi/handlers/main.yml new file mode 100644 index 0000000..98ae3e1 --- /dev/null +++ b/debian/roles/appservers-uwsgi/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: start uwsgi + service: name=uwsgi state=started diff --git a/debian/roles/appservers-uwsgi/tasks/main.yml b/debian/roles/appservers-uwsgi/tasks/main.yml new file mode 100644 index 0000000..6d6cba1 --- /dev/null +++ b/debian/roles/appservers-uwsgi/tasks/main.yml @@ -0,0 +1,19 @@ +--- +- name: Install virtualenv + apt: name=python-virtualenv state=latest +- name: Install uwsgi from PyPI + pip: name=uwsgi +- name: Add uwsgi group + group: name=uwsgi state=present +- name: Add uwsgi user + user: name=uwsgi shell=/sbin/nologin createhome=no group=uwsgi password=$6$Qu5GfWUlAPXh$Ie8Fd9Vzl.PpaFciUbRCI4sIryI6i0rDE29Vf86/WYHgPSWG7x9IIkVU.tG1Mtfq2OM9IeH2IuvOKCcnErMgC1 +- name: Copy over the uwsgi init script + copy: src=uwsgi.init dest=/etc/init.d/uwsgi backup=yes +- name: Make sure the init script is executable + file: path=/etc/init.d/uwsgi owner=root group=root mode=0755 +- name: Make configuration directory + file: /etc/uwsgi/apps state=directory +- name: Make sure uwsgi starts on boot + service: name=uwsgi enabled=yes + notify: + - start uwsgi diff --git a/debian/site.yml b/debian/site.yml index bffe893..c322ce2 100644 --- a/debian/site.yml +++ b/debian/site.yml @@ -20,3 +20,10 @@ roles: - appservers-php + +- name: apply configuration to uwsgi app servers + hosts: appservers-uwsgi + user: root + + roles: + - appservers-uwsgi