From 7b5e280314c86a4742fe6770e4f2d933a0521a3d Mon Sep 17 00:00:00 2001 From: kthoden Date: Wed, 10 Jun 2020 17:14:33 +0200 Subject: [PATCH] Init and service files for gunicorn --- gunicorn.init | 146 +++++++++++++++++++++++++++++++++++++++++++++++ gunicorn.service | 12 ++++ 2 files changed, 158 insertions(+) create mode 100755 gunicorn.init create mode 100644 gunicorn.service diff --git a/gunicorn.init b/gunicorn.init new file mode 100755 index 0000000..a829d2c --- /dev/null +++ b/gunicorn.init @@ -0,0 +1,146 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: gunicorn-initscript +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Should-Start: $nginx +# Default-Start: 30 2 3 4 5 +# Default-Stop: 70 0 1 6 +# Short-Description: virtualenv + gunicorn + nginx debian init script +# Description: virtualenv + gunicorn + nginx debian init script +### END INIT INFO + +# Author: Klaus Thoden +# +# Please remove the "Author" lines above and replace them +# with your own name if you copy and modify this script. +# +# Enable with update-rc.d gunicorn-example start 30 2 3 4 5 . stop 70 0 1 6 . +# (parameters might not be necessary, test) + +# Do NOT "set -e" + +PROJECT=/var/www/djangows/eoapp_ve/eoapp/ +LOGDIR=/var/log/gunicorn/ +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/bin:/usr/bin +USER=djwsuser +GROUP=djangows +SOCKET=unix:/var/www/djangows/eoapp_ve/run/eoapp.sock +WORKERS=3 +NAME=`basename $0` +DESC=$NAME +LOGFILE="$LOGDIR$NAME.log" +PIDFILE="$PROJECT$NAME.pid" +CMD="../bin/gunicorn --user=$USER --group=$GROUP --daemon --workers=$WORKERS --bind=$SOCKET --pid=$PIDFILE --name=$NAME --log-file=$LOGFILE eoapp.wsgi:application" + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.2-14) to ensure that this file is present +# and status_of_proc is working. +. /lib/lsb/init-functions + +# +# Function that starts the daemon/service +# +do_start() { + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + if [ -e $PIDFILE ]; then + return 1 + fi + cd $PROJECT + $CMD + if [ $? = 0 ]; then + return 0 + else + return 2 + fi +} + +# +# Function that stops the daemon/service +# +do_stop() { + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + # other if a failure occurred + if [ -f $PIDFILE ]; then + PID=`cat $PIDFILE` + rm $PIDFILE + kill -15 $PID + if [ $? = 0 ]; then + return 0 + else + return 2 + fi + else + return 1 + fi +} + +do_reload() { + if [ -f $PIDFILE ]; then + PID=`cat $PIDFILE` + kill -HUP $PID + return $? + fi + return 2 +} + +case "$1" in + start) + [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + stop) + [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; + 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; + esac + ;; + restart) + log_daemon_msg "Restarting $DESC" "$NAME" + do_stop + case "$?" in + 0|1) + do_start + case "$?" in + 0) log_end_msg 0 ;; + 1) log_end_msg 1 ;; # Old process is still running + *) log_end_msg 1 ;; # Failed to start + esac + ;; + *) + # Failed to stop + log_end_msg 1 + ;; + esac + ;; + reload) + log_daemon_msg "Reloading $DESC" "$NAME" + do_reload + case "$?" in + 0) log_end_msg 0 ;; + *) log_end_msg 1 ;; + esac + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2 + exit 3 + ;; +esac + +: diff --git a/gunicorn.service b/gunicorn.service new file mode 100644 index 0000000..17616ca --- /dev/null +++ b/gunicorn.service @@ -0,0 +1,12 @@ +[Unit] +Description=eoapp gunicorn daemon +After=networking.target + +[Service] +User=djwsuser +Group=djangows +WorkingDirectory=/var/www/djangows/eoapp_ve/eoapp +ExecStart=/var/www/djangows/eoapp_ve/bin/gunicorn --access-logfile - --workers 3 --name gunicorn-eoapp --bind unix:/var/www/djangows/eoapp_ve/run/eoapp.sock eoapp.wsgi:application + +[Install] +WantedBy=multi-user.target