2008-08-19

Many TracD servers at once

The script below runs TracD server connected to Subversion repository. What is home directory of the TracD instance depends on the name of the script. Then a configuration file is parsed - everything depends on name of the script.

If you want to start TracD with home at /home/trac/repo1 change the name of the script to /etc/init.d/tracd-repo1



#!/bin/bash
#
# tracd - brings up the trac daemon
#

PROJECT=`echo $0 | awk -F- '{ print $2; }'`

# Get LSB functions
. /lib/lsb/init-functions
. /etc/default/rcS
. /etc/default/tracd-${PROJECT}

# Check that the package is still installed
[ -x $TRACD ] || exit 0;
[ -d $TRAC_ENV ] || exit 0;

case $1 in
start)
log_begin_msg "Starting tracd..."
#umask 002
if start-stop-daemon --start --pidfile=$TRAC_PID --chuid $TRAC_USER:$TRAC_GROUP \
--chdir $TRAC_HOME --umask 002 \
--exec $TRACD -- --daemonize \
--pidfile=$TRAC_PID \
-p $TRACD_PORT \
-a ${TRAC_INITENV},${TRAC_ENV}/conf/users.htdigest,${PROJECT_REALM} \
${TRAC_PROJECT}
then
log_end_msg 0
else
log_end_msg $?
fi
;;

stop)
log_begin_msg "Stopping tracd..."
#if `ps ax | grep [/]usr/bin/tracd | awk '{ print $1; }' | \
xargs kill 2 > /dev/null`
if start-stop-daemon --stop --pidfile=$TRAC_PID
then
log_end_msg 0
else
log_end_msg $?
fi
;;

restart|force-reload)
$0 stop && $0 start
;;

*)
echo "Usage: /etc/init.d/tracd {start|stop|restart|force-reload}"
exit 1
;;
esac

exit 0


All variables are stored in /etc/default/tracd-${PROJECT}. Below is an example of the file (/etc/default/tracd-docs):


TRACD=/usr/bin/tracd
TRACD_HOST=127.0.0.1
TRACD_PORT=8000
TRAC_USER=trac
TRAC_GROUP=users
TRAC_INITENV=docs
TRAC_PROJECT=docs
PROJECT_REALM=Docs
TRAC_HOME=/home/$TRAC_USER
TRAC_ENV=${TRAC_HOME}/$TRAC_INITENV
TRAC_PID=${TRAC_ENV}/tracd.pid

No comments: