mirror of
https://github.com/zammad/zammad
synced 2026-05-24 09:48:36 +00:00
127 lines
3.2 KiB
Bash
Executable file
127 lines
3.2 KiB
Bash
Executable file
#!/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
|
|
pumactl start --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
|
|
|