#!/bin/sh APP_NAME="peertube" USER="peertube" GROUP="peertube" NODE_ENV="production" APP_DIR="/var/www/peertube/peertube-latest" NODE_APP="dist/server" KWARGS="" CONFIG_DIR="/var/www/peertube/config" 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