From 807e8cd67d8c8795354b104333a85603b616892f Mon Sep 17 00:00:00 2001 From: Jordan Tardif Date: Mon, 11 Aug 2014 16:51:42 -0400 Subject: [PATCH 1/4] Add akanda-router-api-server init script and remove rc.local since we no longer need it. --- scripts/create-akanda-raw-image.sh | 9 +++-- scripts/etc/init.d/akanda-router-api-server | 41 +++++++++++++++++++++ scripts/etc/rc.local | 7 ---- 3 files changed, 47 insertions(+), 10 deletions(-) create mode 100755 scripts/etc/init.d/akanda-router-api-server delete mode 100755 scripts/etc/rc.local diff --git a/scripts/create-akanda-raw-image.sh b/scripts/create-akanda-raw-image.sh index 0337c52..7bcbd61 100755 --- a/scripts/create-akanda-raw-image.sh +++ b/scripts/create-akanda-raw-image.sh @@ -98,8 +98,14 @@ rm /tmp/akanda.sh echo "[*] Add init scripts...." cp $APPLIANCE_SCRIPT_DIR/etc/init.d/ssh /etc/init.d/ssh cp $APPLIANCE_SCRIPT_DIR/etc/init.d/metadata /etc/init.d/metadata +cp $APPLIANCE_SCRIPT_DIR/etc/init.d/akanda-router-api-server /etc/init.d/akanda-router-api-server chmod 555 /etc/init.d/ssh chmod 555 /etc/init.d/metadata +chmod 555 /etc/init.d/akanda-router-api-server + +echo "[*] Update rc.d" +update-rc.d akanda-router-api-server start + echo "[*] Add some stuff to sysctl.conf" cat > /etc/sysctl.conf < Date: Wed, 13 Aug 2014 12:29:01 -0400 Subject: [PATCH 2/4] Update PIDFILE to correct location and make stop/start/status use it --- scripts/etc/init.d/akanda-router-api-server | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/etc/init.d/akanda-router-api-server b/scripts/etc/init.d/akanda-router-api-server index 4cc97c7..9ec9f3e 100755 --- a/scripts/etc/init.d/akanda-router-api-server +++ b/scripts/etc/init.d/akanda-router-api-server @@ -2,8 +2,9 @@ PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON="/usr/local/bin/gunicorn" +NAME="akanda-router-api-server" OPTIONS="-c /etc/akanda_gunicorn_config akanda.router.api.server:app" -PIDFILE=/var/run/akanda-router-api-server.pid +PIDFILE=/tmp/gunicorn.pid test -x $DAEMON || exit 0 @@ -16,12 +17,12 @@ akanda_configure_gunicorn() { case "$1" in start) akanda_configure_gunicorn - log_daemon_msg "Starting akanda-router-api-server" "akanda-router-api-server" + log_daemon_msg "Starting akanda-router-api-server" $NAME start_daemon -p $PIDFILE $DAEMON $OPTIONS log_end_msg $? ;; stop) - log_daemon_msg "Stopping akanda-router-api-server" "akanda-router-api-server" + log_daemon_msg "Stopping akanda-router-api-server" $NAME killproc -p $PIDFILE $DAEMON log_end_msg $? ;; @@ -30,7 +31,7 @@ case "$1" in $0 start ;; status) - status_of_proc -p $PIDFILE $DAEMON akanda-router-api-server && exit 0 || exit $? + status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? ;; *) echo "Usage: /etc/init.d/akanda-router-api-server {start|stop|restart|force-reload|status}" From 35b29b2cbe7041c8618904d9ec9beab4bfe6b5ec Mon Sep 17 00:00:00 2001 From: Jordan Tardif Date: Wed, 13 Aug 2014 12:44:03 -0400 Subject: [PATCH 3/4] Add custom bird6 init script with support for "status" --- scripts/create-akanda-raw-image.sh | 2 + scripts/etc/init.d/bird6 | 139 +++++++++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100755 scripts/etc/init.d/bird6 diff --git a/scripts/create-akanda-raw-image.sh b/scripts/create-akanda-raw-image.sh index 7bcbd61..d35d49c 100755 --- a/scripts/create-akanda-raw-image.sh +++ b/scripts/create-akanda-raw-image.sh @@ -97,9 +97,11 @@ rm /tmp/akanda.sh echo "[*] Add init scripts...." cp $APPLIANCE_SCRIPT_DIR/etc/init.d/ssh /etc/init.d/ssh +cp $APPLIANCE_SCRIPT_DIR/etc/init.d/bird6 /etc/init.d/bird6 cp $APPLIANCE_SCRIPT_DIR/etc/init.d/metadata /etc/init.d/metadata cp $APPLIANCE_SCRIPT_DIR/etc/init.d/akanda-router-api-server /etc/init.d/akanda-router-api-server chmod 555 /etc/init.d/ssh +chmod 555 /etc/init.d/bird6 chmod 555 /etc/init.d/metadata chmod 555 /etc/init.d/akanda-router-api-server diff --git a/scripts/etc/init.d/bird6 b/scripts/etc/init.d/bird6 new file mode 100755 index 0000000..2db233e --- /dev/null +++ b/scripts/etc/init.d/bird6 @@ -0,0 +1,139 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: bird6 +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO + +# Author: Ondřej Surý +# + +# PATH should only include /usr/* if it runs after the mountnfs.sh script +PATH=/sbin:/usr/sbin:/bin:/usr/bin +DESC="BIRD Internet Routing Daemon (IPv6)" +NAME=bird6 +DAEMON=/usr/sbin/$NAME +BIRD_ARGS="" +SCRIPTNAME=/etc/init.d/$NAME + +# Exit if the package is not installed +[ -x "$DAEMON" ] || exit 0 + +# read the RUN variables +. /etc/bird/envvars + +# Define LSB log_* functions. +# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. +. /lib/lsb/init-functions + +# Create /run/bird with correct permissions +/usr/lib/bird/prepare-environment + +# +# 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 + start-stop-daemon --start --quiet --name $NAME --exec $DAEMON --test > /dev/null \ + || return 1 + start-stop-daemon --start --quiet --name $NAME --exec $DAEMON -- \ + -u $BIRD_RUN_USER -g $BIRD_RUN_GROUP $BIRD_ARGS \ + || return 2 + # Add code here, if necessary, that waits for the process to be ready + # to handle requests from services started subsequently which depend + # on this one. As a last resort, sleep for some time. +} + +# +# 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 + start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --name $NAME --exec $DAEMON + RETVAL="$?" + [ "$RETVAL" = 2 ] && return 2 + # Wait for children to finish too if this is a daemon that forks + # and if the daemon is only ever run from this initscript. + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --name $NAME --exec $DAEMON + [ "$?" = 2 ] && return 2 + return "$RETVAL" +} + +# +# Function that sends a SIGHUP to the daemon/service +# +do_reload() { + # + # If the daemon can reload its configuration without + # restarting (for example, when it is sent a SIGHUP), + # then implement that here. + # + start-stop-daemon --stop --signal 1 --quiet --name $NAME --exec $DAEMON + return 0 +} + +case "$1" in + start) + log_daemon_msg "Starting $DESC" "$NAME" + do_start + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac + ;; + stop) + log_daemon_msg "Stopping $DESC" "$NAME" + do_stop + case "$?" in + 0|1) log_end_msg 0 ;; + 2) log_end_msg 1 ;; + esac + ;; + status) + status_of_proc $DAEMON $NAME && exit 0 || exit $? + ;; + reload|force-reload) + # + # If do_reload() is not implemented then leave this commented out + # and leave 'force-reload' as an alias for 'restart'. + # + log_daemon_msg "Reloading $DESC" "$NAME" + do_reload + log_end_msg $? + ;; + 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 + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2 + exit 3 + ;; +esac + +: From bb43a29335312caeab71b3dce934c286d1b075a0 Mon Sep 17 00:00:00 2001 From: Jordan Tardif Date: Wed, 13 Aug 2014 13:05:55 -0400 Subject: [PATCH 4/4] Update pid file locations for router-api-server and akanda-metadata-proxy --- scripts/etc/init.d/akanda-router-api-server | 2 +- scripts/etc/init.d/metadata | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/etc/init.d/akanda-router-api-server b/scripts/etc/init.d/akanda-router-api-server index 9ec9f3e..8e5d002 100755 --- a/scripts/etc/init.d/akanda-router-api-server +++ b/scripts/etc/init.d/akanda-router-api-server @@ -4,7 +4,7 @@ PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON="/usr/local/bin/gunicorn" NAME="akanda-router-api-server" OPTIONS="-c /etc/akanda_gunicorn_config akanda.router.api.server:app" -PIDFILE=/tmp/gunicorn.pid +PIDFILE=/var/run/gunicorn.pid test -x $DAEMON || exit 0 diff --git a/scripts/etc/init.d/metadata b/scripts/etc/init.d/metadata index ee00acf..bdddbaa 100755 --- a/scripts/etc/init.d/metadata +++ b/scripts/etc/init.d/metadata @@ -2,6 +2,7 @@ PATH=/bin:/usr/bin:/sbin:/usr/sbin DAEMON="/usr/local/bin/akanda-metadata-proxy" +NAME="akanda-metadata-proxy" OPTIONS="/etc/metadata.conf" PIDFILE=/var/run/metadata.pid @@ -11,12 +12,12 @@ test -x $DAEMON || exit 0 case "$1" in start) - log_daemon_msg "Starting akanda-metadata-proxy" "akanda-metadata-proxy" + log_daemon_msg "Starting $NAME" $NAME start_daemon -p $PIDFILE $DAEMON $OPTIONS log_end_msg $? ;; stop) - log_daemon_msg "Stopping akanda-metadata-proxy" "akanda-metadata-proxy" + log_daemon_msg "Stopping $NAME" $NAME killproc -p $PIDFILE $DAEMON log_end_msg $? ;; @@ -25,7 +26,7 @@ case "$1" in $0 start ;; status) - status_of_proc -p $PIDFILE $DAEMON akanda-metadata-proxy && exit 0 || exit $? + status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $? ;; *) echo "Usage: /etc/init.d/akanda-metadata-proxy {start|stop|restart|force-reload|status}"