cirandas.net-etc

ref: main

scripts/cirandas


#! /bin/sh
### BEGIN INIT INFO
# Provides:          cirandas
# Required-Start:    $remote_fs
# Required-Stop:     $remote_fs
# Should-Start:      postgresql
# Should-Stop:       postgresql
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

# Sample init.d script for cirandas
#
# This script was based on the skeleton init.d script present in a Debian
# GNU/Linux system (sid), on Sat Feb 16 11:12:03 BRT 2008. It must be placed in
#
# Author: Antonio Terceiro 

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Noosfero web platform"
NAME=cirandas
SCRIPTNAME=/etc/init.d/$NAME

# default values
NOOSFERO_DIR=/home/cirandas/noosfero-ecosol
NOOSFERO_USER=cirandas

PIDFILE="$NOOSFERO_DIR/tmp/pids/unicorn.pid"

. /lib/lsb/init-functions
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

if test -x /usr/sbin/noosfero-check-dbconfig ; then
  if ! noosfero-check-dbconfig; then
    echo "Noosfero database access not configured, service disabled."
    exit 0
  fi
fi

######################


noosfero_run() {
  if [ "$NOOSFERO_USER" != "$USER" ]; then
    # su -l is buggy to load rc and profile
    su $NOOSFERO_USER -l -c "bash -l -c \"cd $NOOSFERO_DIR &&
      rbenv shell 2.3.4 &&
      export RUBY_GC_MALLOC_LIMIT='90000000'
export LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libjemalloc.so.1'
      $*\""
  else
    cd $NOOSFERO_DIR && \
      rbenv shell 2.3.4 &&
      export RUBY_GC_MALLOC_LIMIT='90000000'
export LD_PRELOAD='/usr/lib/x86_64-linux-gnu/libjemalloc.so.1'
      $*
  fi
}

main_script() {
  # WARN: Solr doesn't need a restart
  if [ "$1" != "restart" ]; then
    noosfero_run RAILS_ENV=production rake solr:$1
  fi
  if [ "$1" = "restart" ]; then
    kill -USR2 `cat $NOOSFERO_DIR/tmp/pids/unicorn.pid` 2>&1 > /dev/null
  elif [ "$1" = "start" ]; then
    noosfero_run bundle exec unicorn -D -c config/unicorn.conf.rb -E production
  elif [ "$1" = "stop" ]; then
    kill `cat $NOOSFERO_DIR/tmp/pids/unicorn.pid` 2>&1 > /dev/null
  fi
}


do_start() {
  if ! running; then
    # actually start the service
    main_script start
  else
    echo 'Noosfero is already running, nothing to do...'
  fi
}

do_stop() {
  if running; then
    main_script stop
  else
    echo 'Noosfero is already stopped, nothing to do...'
  fi
}

do_restart() {
  if ! running; then
    do_start
  else
    main_script restart
  fi
}

do_status() {
  status_of_proc -p $PIDFILE "noosfero" "$NAME"
}

running(){
  status_of_proc -p $PIDFILE "noosfero" "$NAME" 2>&1 > /dev/null
}


case "$1" in
  start|stop|restart|status)
    do_$1
    exit $?
    ;;
  force-reload)
    do_restart
    ;;
  *)
    echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status}" >&2
    exit 3
    ;;
esac

: