[CalendarServer-users] How to install as system service?

Damion Theobald D.Q.A.Theobald at swansea.ac.uk
Thu Nov 22 07:31:48 PST 2007


Hi,

This is my script to work on SUSE Linux enterprise Server 10.

The line, export USER="", was added to facilitate the server starting
automatically when booting as the CalendarServer/run script looks for the
user variable that is not set until you login to the machine.

This script was added to the /etc/init.d/ folder and using chkconfig command
to auto start.

Regards
Damion


#! /bin/sh
#
#
# /etc/init.d/caldav
#
### BEGIN INIT INFO
# Provides: 		caldav 
# Required-Start: 	$network $syslog
# Required-Stop: 	$network $syslog
# Default-Start: 	3 5
# Default-Stop: 	0 1 2 4 6
# Description: 		Calendar server Demon
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Apple Calendar Server"
NAME=caldav
DAEMON=/srv/caldav/CalendarServer/run
PIDFILE=/srv/caldav/CalendarServer/logs/caldavd.pid
SCRIPTNAME=/etc/init.d/$NAME
CALUSER=root
CALOPTIONS=-d
SERVICE="python /srv/caldav/Twisted/bin/twistd"

test -s /etc/rc.status && \
     . /etc/rc.status


# First reset status of this service
rc_reset

case "$1" in
   start)
         echo -e "Starting $DESC"  
         export USER="" 
	   startproc -u root -p $PIDFILE $DAEMON $CALOPTIONS
         export USER=
	   rc_status -v
 	  ;;
 
   stop)
         echo -n "Stopping $DESC"
	   killproc -TERM -p $PIDFILE $SERVICE
	   rc_status -v
	   ;;
   
   restart)
	$0 stop
	$0 start	 
	rc_status 
        ;;
Esac




> -----Original Message-----
> From: calendarserver-users-bounces at lists.macosforge.org
> [mailto:calendarserver-users-bounces at lists.macosforge.org] On Behalf Of
> David Szego
> Sent: 07 November 2007 00:50
> To: Jindan Zhou
> Cc: calendarserver-users at lists.macosforge.org
> Subject: Re: [CalendarServer-users] How to install as system service?
> 
> On 6-Nov-07, at 5:06 PM, Jindan Zhou wrote:
> 
> > Yeah, it would be nice if some one could donate their linux shell
> > script, so
> > that it can be installed as a linux service, too.
> 
> Here's mine. This needs work... It starts, but doesn't yet stop (PIDs
> not seen right I guess, haven't looked much at it yet.)
> 
> I've installed:
> - the conf files and account.xml in /etc/caldavd
> - the actual software in /opt/calendarserver/ which includes:
> 	/opt/calendarserver/CalDAVTester, /opt/calendarserver/
> CalendarServer, /opt/calendarserver/Twisted, and so on,
> - the data (calendars themselves) in /var/cache/calendarserver
> 
> At the moment it's running as root, (CALUSER=root) so I don't have to
> worry about any permission issues. The init.d script is taken from
> some random script in my init.d directory, running Ubuntu.
> 
> If I happened to be set up for svn, I'd post it to the official code,
> but I leave it for someone else to do, as I'm really just a good
> amateur hack! =-)
> 
> Cheers,
> David Szego.
> 
> -----------
> /etc/init.d/calendarserver
> -----------
> 
> #!/bin/sh
> # Apple CalendarServer startup script, taken from an Ubuntu script.
> 
> set -e
> 
> PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
> DESC="Apple Calendar Server"
> NAME=calendarserver
> DAEMON=/opt/calendarserver/CalendarServer/run
> PIDFILE=/var/run/$NAME.pid
> SCRIPTNAME=/etc/init.d/$NAME
> CACHEDIR=/var/cache/$NAME
> CALUSER=root
> CALOPTIONS=-d
> 
> #
> #       Function that starts the daemon/service.
> #
> d_start() {
>          start-stop-daemon --start --quiet \
>                  --chuid $CALUSER \
>                  --pidfile $PIDFILE \
>                  --exec $DAEMON \
>                  --background \
>                  --make-pidfile \
>                  -- \
>                  $CALOPTIONS
> }
> 
> d_start_direct() {
>          start-stop-daemon --start --quiet \
>                  --chuid $CALUSER \
>                  --pidfile $PIDFILE \
>                  --exec $DAEMON \
>                  -- \
>                  $CALOPTIONS
> }
> 
> #       Function that stops the daemon/service.
> #
> d_stop() {
>          start-stop-daemon --stop --pidfile $PIDFILE --name $NAME
> }
> 
> #
> #       Function that sends a SIGHUP to the daemon/service.
> #
> d_reload() {
>          start-stop-daemon --stop --quiet --pidfile $PIDFILE \
>                  --name $NAME --signal 1
> }
> 
> case "$1" in
>    start)
>          echo -n "Starting $DESC"
>          d_start
>          echo "."
>          ;;
>    stop)
>          echo -n "Stopping $DESC"
>          d_stop
>          echo "."
>          ;;
>    restart|force-reload)
>          #
>          #       If the "reload" option is implemented, move the
> "force-reload"
>          #       option to the "reload" entry above. If not, "force-
> reload" is
>          #       just the same as "restart".
>          #
>          echo -n "Restarting $NAME"
>          d_stop
>          sleep 1
>          d_start
>          echo "."
>          ;;
>    *)
>          # echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-
> reload}" >&2
>          echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}"
> >&2
>          exit 1
>          ;;
> esac
> 
> exit 0
> 
> -----------------
> 
> _______________________________________________
> calendarserver-users mailing list
> calendarserver-users at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo/calendarserver-users




More information about the calendarserver-users mailing list