view init.d/kallithea-daemon-redhat @ 7633:1bafb2d07709 stable

hooks: make the Python interpreter for Git hooks configurable as 'git_hook_interpreter' (Issue #333) Commit 5e501b6ee639 introduced the use of 'sys.executable' as interpreter for git hooks instead of 'python2' with the following argument: "Windows doesn't necessarily have "python2" available in $PATH, but we still want to make sure we don't end up invoking a python3. Using the absolute path seems more safe." But, sys.executable does not necessarily point to Python. When Kallithea is started under uWSGI, sys.executable points to the uwsgi executable. As a result, the interpreter encoded in the git hooks on the server repositories would be: #!/path/to/uwsgi And pushing to such repo would result in following client errors: $ git push Password for 'http://user@localhost:5050': Enumerating objects: 3, done. Counting objects: 100% (3/3), done. Writing objects: 100% (3/3), 241 bytes | 241.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0) remote: unable to load configuration from hooks/pre-receive To http://localhost:5050/gitrepo-new ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'http://user@localhost:5050/gitrepo-new' Fix this problem by introducing a configuration setting 'git_hook_interpreter' that allow administrators to specify which Python interpreter to use. A subsequent commit will cause its value to be filled in automatically when generating a new ini file, but an administrator can always override it.
author Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
date Mon, 08 Apr 2019 21:32:57 +0200
parents 2c3d30095d5e
children 71bdbf129190
line wrap: on
line source

#!/bin/sh
########################################
#### THIS IS A REDHAT INIT.D SCRIPT ####
########################################

##################################################
#
# Kallithea server startup script
# Recommended default-startup: 2 3 4 5
# Recommended default-stop: 0 1 6
#
##################################################


APP_NAME="kallithea"
# the location of your app
# since this is a web app, it should go in /var/www
APP_PATH="/var/www/$APP_NAME"

CONF_NAME="production.ini"

# write to wherever the PID should be stored, just ensure
# that the user you run gearbox as has the appropriate permissions
# same goes for the log file
PID_PATH="/var/run/kallithea/pid"
LOG_PATH="/var/log/kallithea/kallithea.log"

# replace this with the path to the virtual environment you
# made for Kallithea
PYTHON_PATH="/opt/python_virtualenvironments/kallithea-venv"

RUN_AS="kallithea"

DAEMON="$PYTHON_PATH/bin/gearbox"

DAEMON_OPTS="serve --daemon \
    --user=$RUN_AS \
    --group=$RUN_AS \
    --pid-file=$PID_PATH \
    --log-file=$LOG_PATH -c $APP_PATH/$CONF_NAME"

DESC="kallithea-server"
LOCK_FILE="/var/lock/subsys/$APP_NAME"

# source CentOS init functions
. /etc/init.d/functions

RETVAL=0

remove_pid () {
  rm -f ${PID_PATH}
  rmdir `dirname ${PID_PATH}`
}

ensure_pid_dir () {
  PID_DIR=`dirname ${PID_PATH}`
  if [ ! -d ${PID_DIR} ] ; then
    mkdir -p ${PID_DIR}
    chown -R ${RUN_AS}:${RUN_AS} ${PID_DIR}
    chmod 755 ${PID_DIR}
  fi
}

start_kallithea () {
    ensure_pid_dir
    PYTHON_EGG_CACHE="/tmp" daemon --pidfile $PID_PATH \
        --user $RUN_AS "$DAEMON $DAEMON_OPTS"
    RETVAL=$?
    [ $RETVAL -eq 0 ] && touch $LOCK_FILE
    return $RETVAL
}

stop_kallithea () {
    if [ -e $LOCK_FILE ]; then
      killproc -p $PID_PATH
      RETVAL=$?
      rm -f $LOCK_FILE
      rm -f $PID_PATH
    else
      RETVAL=1
    fi
    return $RETVAL
}

status_kallithea() {
  if [ -e $LOCK_FILE ]; then
    # exit with non-zero to indicate failure
    RETVAL=1
  else
    RETVAL=0
  fi
  return $RETVAL
}

restart_kallithea () {
    stop_kallithea
    start_kallithea
    RETVAL=$?
}

case "$1" in
  start)
    echo -n $"Starting $DESC: "
    start_kallithea
    echo
    ;;
  stop)
    echo -n $"Stopping $DESC: "
    stop_kallithea
    echo
    ;;
  status)
    status_kallithea
    RETVAL=$?
    if [ ! $RETVAL -eq 0 ]; then
      echo "Kallithea server is running..."
    else
      echo "Kallithea server is stopped."
    fi
    ;;
  restart)
    echo -n $"Restarting $DESC: "
    restart_kallithea
    echo
    ;;
  *)
    echo $"Usage: $0 {start|stop|restart|status}"
    RETVAL=1
    ;;
esac

exit $RETVAL