mirror of
https://github.com/YunoHost-Apps/diaspora_ynh.git
synced 2024-09-03 18:26:13 +02:00
222 lines
No EOL
5.6 KiB
Bash
222 lines
No EOL
5.6 KiB
Bash
#! /bin/sh
|
|
### BEGIN INIT INFO
|
|
# Provides: diaspora_ynh
|
|
# Required-Start: $remote_fs $syslog mysql redis-server
|
|
# Required-Stop: $remote_fs $syslog mysql redis-server
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: Diaspora application server
|
|
# Description: Start / stop the Diaspora app server
|
|
### END INIT INFO
|
|
|
|
# Author: FABIAN Tamas Laszlo <giganetom@gmail.com>
|
|
# Updated: Pirate Praveen <praveen@debian.org>
|
|
# Updated: aymhce <aymhce@gmail.com>
|
|
|
|
# PATH should only include /usr/* if it runs after the mountnfs.sh script
|
|
# Note: /usr/local/bin for foreman gem
|
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
|
|
DESC="Diaspora application server"
|
|
NAME=diaspora
|
|
DIASPORA_HOME="/var/www/diaspora"
|
|
|
|
STARTSCRIPT="./script/server"
|
|
|
|
LOGFILE=$DIASPORA_HOME/log/startscript.log
|
|
SCRIPTNAME=$0
|
|
USER=diaspora
|
|
STARTUP_TIMEOUT=100
|
|
|
|
. /lib/init/vars.sh
|
|
. /lib/lsb/init-functions
|
|
|
|
check_unicorn() {
|
|
pgrep -f "unicorn_rails master"
|
|
}
|
|
|
|
check_sidekiq() {
|
|
pgrep -f "sidekiq 2"
|
|
}
|
|
|
|
check_foreman() {
|
|
pgrep -f "foreman-runner"
|
|
}
|
|
|
|
check_foreman_start() {
|
|
pgrep -f "foreman start"
|
|
}
|
|
|
|
check_script_server() {
|
|
pgrep -f "script/server"
|
|
}
|
|
|
|
do_start()
|
|
{
|
|
if ! touch $LOGFILE; then
|
|
log_failure_msg "Could not touch logfile"
|
|
return 2
|
|
fi
|
|
|
|
if ! chown $USER $LOGFILE; then
|
|
log_failure_msg "Could not chown logfile"
|
|
return 2
|
|
fi
|
|
|
|
if check_unicorn && check_sidekiq; then
|
|
log_warning_msg "Diaspora is already running"
|
|
return 1
|
|
fi
|
|
|
|
if check_foreman || check_foreman_start || check_script_server; then
|
|
log_warning_msg "Diaspora is starting"
|
|
return 1
|
|
fi
|
|
|
|
export SERVERNAME=localhost
|
|
export ENVIRONMENT_URL=http://localhost
|
|
export RAILS_ENV=production
|
|
export DB=mysql
|
|
|
|
cd $DIASPORA_HOME
|
|
sudo su - $USER -c " . ~/.bashrc && cd $DIASPORA_HOME && $STARTSCRIPT >> $LOGFILE 2>&1 " &
|
|
if [ $? -gt 0 ]
|
|
then
|
|
log_failure_msg "Could not run start script"
|
|
return 2
|
|
else
|
|
log_success_msg "Starting diaspora server..."
|
|
return 0
|
|
fi
|
|
|
|
[ "$VERBOSE" != no ] && log_action_msg "Waiting for Diaspora processes... "
|
|
c=0
|
|
while ! check_unicorn > /dev/null || ! check_sidekiq > /dev/null; do
|
|
if [ $c -gt $STARTUP_TIMEOUT ]; then
|
|
log_failure_msg "Timeout waiting for Diaspora processes"
|
|
return 2
|
|
fi
|
|
c=`expr $c + 1`
|
|
sleep 1
|
|
[ "$VERBOSE" != no ] && echo -n "."
|
|
done
|
|
[ "$VERBOSE" != no ] && log_action_end_msg 0
|
|
}
|
|
|
|
do_stop()
|
|
{
|
|
for i in `check_unicorn`; do
|
|
[ "$VERBOSE" != no ] && log_action_msg "Killing unicorn master with PID $i"
|
|
kill -TERM $i
|
|
[ "$VERBOSE" != no ] && log_action_end_msg $?
|
|
done
|
|
|
|
for i in `check_sidekiq`; do
|
|
[ "$VERBOSE" != no ] && log_action_msg "Killing sidekiq with PID $i"
|
|
kill -TERM $i
|
|
[ "$VERBOSE" != no ] && log_action_end_msg $?
|
|
done
|
|
|
|
return 0
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
|
|
do_start
|
|
case "$?" in
|
|
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
|
*) [ "$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
|
|
;;
|
|
status)
|
|
log_daemon_msg 'Checking for running Diaspora processes'
|
|
|
|
if ! check_unicorn
|
|
then
|
|
log_action_msg "unicorn not found"
|
|
unicorn_running=false
|
|
else
|
|
for i in `check_unicorn`; do
|
|
log_action_msg "Found unicorn master with PID $i"
|
|
unicorn_running=true
|
|
done
|
|
fi
|
|
|
|
if ! check_foreman
|
|
then
|
|
log_action_msg "foreman not found"
|
|
foreman_running=false
|
|
else
|
|
for i in `check_foreman`; do
|
|
log_action_msg "Found foreman with pid $i"
|
|
foreman_running=true
|
|
done
|
|
fi
|
|
|
|
if ! check_sidekiq
|
|
then
|
|
log_action_msg "sidekiq is not found"
|
|
sidekiq_running=false
|
|
else
|
|
for i in `check_sidekiq`; do
|
|
log_action_msg "Found sidekiq with PID $i"
|
|
sidekiq_running=true
|
|
done
|
|
fi
|
|
|
|
if $foreman_running && ! $unicorn_running; then
|
|
log_action_msg "Diaspora is starting, check after some time..."
|
|
log_end_msg 0
|
|
return 0
|
|
fi
|
|
if $unicorn_running && $sidekiq_running; then
|
|
log_action_msg "Diaspora health is OK"
|
|
log_end_msg 0
|
|
else
|
|
if $unicorn_running; then
|
|
log_failure_msg "Unicorn is RUNNING, but sidekiq is DOWN!"
|
|
log_end_msg 1
|
|
return 1
|
|
fi
|
|
if $sidekiq_running; then
|
|
log_failure_msg "Sidekiq is RUNNING, but unicorn is DOWN!"
|
|
log_end_msg 1
|
|
return 1
|
|
fi
|
|
log_daemon_msg "All Diaspora processes are DOWN"
|
|
log_end_msg 0
|
|
fi
|
|
;;
|
|
restart|force-reload)
|
|
[ "$VERBOSE" != no ] && log_daemon_msg "Restarting $DESC" "$NAME"
|
|
do_stop
|
|
case "$?" in
|
|
0|1)
|
|
do_start
|
|
case "$?" in
|
|
0) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
|
1) [ "$VERBOSE" != no ] && log_failure_msg "old process is still running" && log_end_msg 1 ;;
|
|
*) [ "$VERBOSE" != no ] && log_failure_msg "failed to start" && log_end_msg 1 ;;
|
|
esac
|
|
;;
|
|
*)
|
|
[ "$VERBOSE" != no ] && log_failure_msg "failed to stop"
|
|
[ "$VERBOSE" != no ] && log_end_msg 1
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
|
|
exit 3
|
|
;;
|
|
esac
|
|
|
|
: |