123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- #!/bin/bash
- #
- # init script build as PoC for
- # 1) normal user (non root)
- # 2) rvm support
- # 3) pid files in user space
- # 4) fedora os
- # source function library
- . /etc/rc.d/init.d/functions
- # Get network config
- . /etc/sysconfig/network
- [ "${NETWORKING}" = "no" ] && exit 0
- DAEMON_HOME=/home/kraftvoll/zammad/
- #RAILS_ENV=production
- RAILS_ENV=test
- NAME=zammad
- APP_PORT=3000
- WS_PORT=6042
- ZAMMAD_CONFIG=/etc/sysconfig/zammad
- # Read config
- [ -f "$ZAMMAD_CONFIG" ] && . "$ZAMMAD_CONFIG"
- # Load RVM into a shell session *as a function*
- if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
- # First try to load from a user install
- source "$HOME/.rvm/scripts/rvm"
- elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
- # Then try to load from a root install
- source "/usr/local/rvm/scripts/rvm"
- else
- printf "ERROR: An RVM installation was not found.\n"
- exit 1
- fi
- rvm use ruby-2.0.0
- RUBY=$(which ruby)
- RAILS=$(which rails)
- BUNDLE=$(which bundle)
- APP_PIDFILE=$DAEMON_HOME/tmp/pids/puma.pid
- WS_PIDFILE=$DAEMON_HOME/tmp/pids/websocket.pid
- SCHEDULER_PIDFILE=$DAEMON_HOME/tmp/pids/scheduler_runner.pid
- start() {
- cd $DAEMON_HOME
- # precompile assets
- if [ "$RAILS_ENV" = "production" ]; then
- echo -n $"Precompile assets for ${NAME}/${RAILS_ENV}"
- $BUNDLE exec rake assets:precompile &> /dev/null && echo_success || echo_failure
- echo
- fi
- # start web server
- echo -n $"Starting ${NAME}/${RAILS_ENV} application server on port: ${APP_PORT}"
- # $RAILS server -d -p $APP_PORT --pid $APP_PIDFILE &> /dev/null
- # thin start --threaded -d -p $APP_PORT --pid $APP_PIDFILE
- puma --pidfile $APP_PIDFILE -d -p $APP_PORT -e $RAILS_ENV &> /dev/null
- sleep 2
- status -p $APP_PIDFILE &> /dev/null && echo_success || echo_failure
- echo
- # start websocket server
- echo -n $"Starting ${NAME}/${RAILS_ENV} web socket server on port: ${WS_PORT}"
- script/websocket-server.rb start -d -p $WS_PORT -i $WS_PIDFILE &> /dev/null &
- sleep 2
- status -p $WS_PIDFILE &> /dev/null && echo_success || echo_failure
- echo
- # start scheduler worker
- echo -n $"Starting ${NAME}/${RAILS_ENV} scheduler worker"
- script/scheduler.rb start &> /dev/null && echo_success || echo_failure
- echo
- }
- stop() {
- # stop scheduler worker
- echo -n $"Shutting down ${NAME}/${RAILS_ENV} scheduler worker"
- script/scheduler.rb stop &> /dev/null && echo_success || echo_failure
- echo
- # stop websocket server
- echo -n $"Shutting down ${NAME}/${RAILS_ENV} web socket server on port: ${WS_PORT}"
- if test -e $WS_PIDFILE; then
- killproc -p $WS_PIDFILE
- fi
- echo
- # stop web server
- echo -n $"Shutting down ${NAME}/${RAILS_ENV} application server on port: ${APP_PORT}"
- if test -e $APP_PIDFILE; then
- killproc -p $APP_PIDFILE
- fi
- echo
- }
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- restart)
- stop
- start
- ;;
- status)
- status -p $APP_PIDFILE "${NAME} ${RAILS_ENV} - application server"
- status -p $WS_PIDFILE "${NAME} ${RAILS_ENV} - web socket server"
- ;;
- *)
- echo "Usage: $SCRIPTNAME {start|stop|restart|status}" >&2
- exit 3
- ;;
- esac
|