173 lines
3.2 KiB
Bash
173 lines
3.2 KiB
Bash
#!/bin/sh
|
|
|
|
APP_NAME="peertube"
|
|
USER="peertube"
|
|
GROUP="peertube"
|
|
NODE_ENV="production"
|
|
APP_DIR="/var/www/peertube"
|
|
NODE_APP="dist/server"
|
|
KWARGS=""
|
|
CONFIG_DIR="/etc/peertube"
|
|
PID_DIR="$APP_DIR/pid"
|
|
PID_FILE="$PID_DIR/$APP_NAME.pid"
|
|
LOG_DIR="/var/log/peertube"
|
|
LOG_FILE="$LOG_DIR/$APP_NAME.log"
|
|
NODE_EXEC=$(which node)
|
|
|
|
###############
|
|
|
|
# REDHAT chkconfig header
|
|
|
|
# chkconfig: - 58 74
|
|
# description: peertube service script.
|
|
### BEGIN INIT INFO
|
|
# Provides: peertube
|
|
# Required-Start: $network $remote_fs $local_fs
|
|
# Required-Stop: $network $remote_fs $local_fs
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: start and stop peertube
|
|
# Description: Node process for peertube
|
|
### END INIT INFO
|
|
|
|
###############
|
|
|
|
USAGE="Usage: $0 {start|stop|restart|status} [--force]"
|
|
FORCE_OP=false
|
|
|
|
pid_file_exists() {
|
|
[ -f "$PID_FILE" ]
|
|
}
|
|
|
|
get_pid() {
|
|
echo "$(cat "$PID_FILE")"
|
|
}
|
|
|
|
is_running() {
|
|
PID="$(get_pid)"
|
|
[ -d /proc/$PID ]
|
|
}
|
|
|
|
start_it() {
|
|
mkdir -p "$PID_DIR"
|
|
chown $USER:$GROUP "$PID_DIR"
|
|
mkdir -p "$LOG_DIR"
|
|
chown $USER:$GROUP "$LOG_DIR"
|
|
|
|
echo "Starting $APP_NAME ..."
|
|
echo "cd $APP_DIR && NODE_ENV=$NODE_ENV NODE_CONFIG_DIR=$CONFIG_DIR $NODE_EXEC $APP_DIR/$NODE_APP $KWARGS 1>$LOG_FILE 2>&1 & echo \$! > $PID_FILE" | sudo -i -u $USER
|
|
echo "$APP_NAME started with pid $(get_pid)"
|
|
}
|
|
|
|
stop_process() {
|
|
PID=$(get_pid)
|
|
echo "Killing process $PID"
|
|
pkill -P $PID
|
|
}
|
|
|
|
remove_pid_file() {
|
|
echo "Removing pid file"
|
|
rm -f "$PID_FILE"
|
|
}
|
|
|
|
start_app() {
|
|
if pid_file_exists
|
|
then
|
|
if is_running
|
|
then
|
|
PID=$(get_pid)
|
|
echo "$APP_NAME already running with pid $PID"
|
|
exit 1
|
|
else
|
|
echo "$APP_NAME stopped, but pid file exists"
|
|
if [ $FORCE_OP = true ]
|
|
then
|
|
echo "Forcing start anyways"
|
|
remove_pid_file
|
|
start_it
|
|
fi
|
|
fi
|
|
else
|
|
start_it
|
|
fi
|
|
}
|
|
|
|
stop_app() {
|
|
if pid_file_exists
|
|
then
|
|
if is_running
|
|
then
|
|
echo "Stopping $APP_NAME ..."
|
|
stop_process
|
|
remove_pid_file
|
|
echo "$APP_NAME stopped"
|
|
else
|
|
echo "$APP_NAME already stopped, but pid file exists"
|
|
if [ $FORCE_OP = true ]
|
|
then
|
|
echo "Forcing stop anyways ..."
|
|
remove_pid_file
|
|
echo "$APP_NAME stopped"
|
|
else
|
|
exit 1
|
|
fi
|
|
fi
|
|
else
|
|
echo "$APP_NAME already stopped, pid file does not exist"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
status_app() {
|
|
if pid_file_exists
|
|
then
|
|
if is_running
|
|
then
|
|
PID=$(get_pid)
|
|
echo "$APP_NAME running with pid $PID"
|
|
else
|
|
echo "$APP_NAME stopped, but pid file exists"
|
|
fi
|
|
else
|
|
echo "$APP_NAME stopped"
|
|
fi
|
|
}
|
|
|
|
case "$2" in
|
|
--force)
|
|
FORCE_OP=true
|
|
;;
|
|
|
|
"")
|
|
;;
|
|
|
|
*)
|
|
echo $USAGE
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "$1" in
|
|
start)
|
|
start_app
|
|
;;
|
|
|
|
stop)
|
|
stop_app
|
|
;;
|
|
|
|
restart)
|
|
stop_app
|
|
start_app
|
|
;;
|
|
|
|
status)
|
|
status_app
|
|
;;
|
|
|
|
*)
|
|
echo $USAGE
|
|
exit 1
|
|
;;
|
|
esac
|
|
|