#!/bin/sh # # WebKit application server # part of Webware for Python # www.webwareforpython.org # # /etc/init.d/webkit # # init.d script for SuSE Linux # ### BEGIN INIT INFO # Provides: webkit # Required-Start: $local_fs $remote_fs $network $syslog # Required-Stop: $local_fs $remote_fs $network $syslog # Default-Start: 3 5 # Default-Stop: 0 1 2 6 # Description: WebKit Application Server (Webware for Python) ### END INIT INFO ### START LOCAL CONFIGURATION # If you store this script in your Webware working directory # and create a symlink to it as /etc/init.d/webkit_appname, # it will try to guess your configuration parameters. You can # make changes either directly here or you can also override # the configuration in the Launch.py script. # The name of your Webware application: APP_NAME=`basename "$0"` # The location of the start sript: if [ -h "$0" ]; then # Get the target file if start script is given as a link: START_SCRIPT=`readlink -f "$0"` else START_SCRIPT="$0" fi # The working directory or path to WebKit: WORK_DIR=`dirname "$START_SCRIPT"` # Make sure to have the absolute path: test -d "$WORK_DIR" || exit 5 WORK_DIR=`cd "$WORK_DIR" 2>/dev/null && pwd` # The app server launch script: APP_SERVER="$WORK_DIR/AppServer" test -x "$APP_SERVER" || exit 5 # The app server configuration: APP_SERVER_CONFIG="$WORK_DIR/Configs/AppServer.config" test -f "$APP_SERVER_CONFIG" || exit 5 # The WebKit app server log file # (you can set this in Launch.py as well): #LOG_FILE="/var/log/$APP_NAME.log" LOG_FILE="$WORK_DIR/Logs/webkit.log" # Use this extension if you want to move the last log away # (also consider using logrotate or something similar): LOG_OLD=".old" # The app server process id file # (you can set this in Launch.py as well): #PID_FILE="/var/run/$APP_NAME.pid" PID_FILE="$WORK_DIR/webkit.pid" # The user and group to run the app server # (you can set this in Launch.py as well). # If undefined, it will be the user and group # running the start script (usually root). # You should use a low-privilege account, # like the work dir owner, wwwrun or nobody. # This will use the owner of the AppServer script: WEBWARE_USER=`stat -c "%U" "$APP_SERVER"` WEBWARE_GROUP=`stat -c "%G" "$APP_SERVER"` # Unset the following variable if you want to store the # pid and log files as the user running the start script # (usually root) or set it if you want these files to be # written after switching to WEBWARE_USER:WEBWARE_GROUP. LAUNCH_AS_WEBWARE="yes" # Additional options -u or -O to be passed on to Python: PYTHONOPTS= # Additional libraries to be included in the Python path: PYTHONPATH= export PYTHONPATH ### END LOCAL CONFIGURATION # Source SuSE Linux function library: . /etc/rc.status rc_reset case "$1" in start) echo -n "Starting $APP_NAME " # Keep backup of last log file: if [ "$LOG_OLD" -a -f "$LOG_FILE" ]; then if [ -s "$LOG_FILE" ]; then mv "$LOG_FILE" "$LOG_FILE$LOG_OLD" else rm "$LOG_FILE" fi fi # Prepare options to set user and group if [ "$WEBWARE_USER" ]; then WEBWARE_USER="-u $WEBWARE_USER" fi if [ "$WEBWARE_GROUP" ]; then WEBWARE_GROUP="-g $WEBWARE_GROUP" fi # Note that the pid file does not record the pid of the # wrapper script, but the pid of the Python app server: if [ "$LAUNCH_AS_WEBWARE" ]; then # Switch user first, then create pid and log files: startproc -f -l /dev/null \ $WEBWARE_USER $WEBWARE_GROUP \ "$APP_SERVER" $PYTHONOPTS \ -i "$PID_FILE" -d "$WORK_DIR" -o "$LOG_FILE" else # Create pid and log files first, then switch user: startproc -f -l "$LOG_FILE" \ "$APP_SERVER" $PYTHONOPTS \ -i "$PID_FILE" -d "$WORK_DIR" \ $WEBWARE_USER $WEBWARE_GROUP fi rc_status -v ;; stop) echo -n "Shutting down $APP_NAME " # Note that we are terminating the Python app server here; # the app server wrapper script will follow automatically: if [ -f "$PID_FILE" ] ; then killproc -p "$PID_FILE" -TERM python else rc_failed 7 fi rc_status -v ;; try-restart) "$0" status >/dev/null && "$0" restart rc_status ;; restart) "$0" stop "$0" start rc_status ;; force-reload|reload) echo -n "Reloading $APP_NAME " if [ -f "$PID_FILE" ] ; then killproc -p "$PID_FILE" -HUP python else rc_failed 7 fi rc_status -v ;; status) echo -n "Checking for $APP_NAME " if [ -f "$PID_FILE" ] ; then checkproc -p $PID_FILE python else rc_failed 1 fi rc_status -v ;; probe) test "$APP_SERVER_CONFIG" -nt "$PID_FILE" && echo reload ;; *) echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload|reload|probe}" exit 1 ;; esac rc_exit