habe mich die letzten zwei Tage durch alle möglichen Dokus und Foren geschlagen, um den Subversion server "svnserve" in SysVInit meines Debian 4.0 Etch einzubinden.
Insgesamt habe ich es auch geschafft. Aber es sind noch einige spezielle Fragen offen geblieben, die leider nirgends beantwortet wurden.
Meistens werden die Fragen zwar technisch beantwortet, aber keine Tipps zum organisatorischen Umfeld gegeben.
Ich hoffe das hier Leute mit reichlich Erfahrung Ihre Meinung dazu geben können.
Also erstmal pi-mal-Daumen was ich gemacht habe:
- 1. Gruppe "svnusers" als System-Gruppe angelegt
2. User "svnowner" als System-User ohne Home-Verzeichnis angelegt und der Gruppe "svnusers" zugeordnet
3. Gruppe und Berechtigungen für das Verzeichnis des Dienstes entsprechend angepasst
4. /etc/init.d/skeleton als /etc/init.d/svnserve kopiert, angepasst und ausführbar gemacht (Inhalt siehe unten)
5. Danach in das SysVInit-System mittels "update-rc.d svnserve defaults" eingefügt
- 1. Sollte man lieber "--chroot" von start-stop-daemon verwenden, anstatt eine Einschränkung durch den Daemon selbst?
2. Ist "--chuid" ein Ersatz von "--user" und "--group"? Darf man die zusammen benutzen?
Die man pages dazu waren für mich nicht eindeutig.
3. In den meisten Texten wurde der User als System-User angelegt?
Ist dies so korrekt, und welche Auswirkung hat das eigentlich genau?
Bzw. wie genau sollte man ein technischen User für einen Daemon / Dienst anlegen?
- 1. Was sollte noch bei "Required-Start" / "Required-Stop" angegeben werden?
Ich vermute das bei mir $local_fs alleine schon ausreichend wäre.
2. Was sollte noch bei "Default-Start" / "Default-Stop" angegeben werden?
Ich vermute das es sich hier um den Debian-Standard handelt und nicht angepasst werden muss. Habe ja auch defaults bei update-rc.d verwendet.
Gruss
Maddes
Debian Subversion Infos auf meiner Homepage
/etc/init.d/svnserve:
Code: Alles auswählen
#! /bin/sh
### BEGIN INIT INFO
# Provides: Subversion Repository Server Daemon
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
#
# Requirements: /var/run/svnserve/ with "<user>:nogroup"
#
# Short-Description: Initscript for Subversion Repository Server Daemon
# Description: Written for Debian 4.0 (Etch) to start/stop Subversion Repository Server Daemon
# Used skeleton script of 4.0 (Etch).
#
# There are some specialities:
# 1. A special SVN user and group is used and stated with
# "--chuid <user>:<group>" (start-stop-daemon).
# Plus a fitting "--umask 002" (start-stop-daemon).
# 2. Make sure that the SVN user can write the pid file to
# "/var/run/svnserve/" by setting it to "<user>:nogroup".
# Otherwise svnserve will not start.
# 3. The variable definition of PIDFILE has been moved before
# DAEMON_ARGS, as it is used as an argument for svnserve.
### END INIT INFO
# Author: Maddes - http://www.maddes.net/
#
# Do NOT "set -e"
# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Subversion Repository Server Daemon"
NAME=svnserve
PIDFILE=/var/run/svnserve/$NAME.pid
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="--daemon --pid-file ${PIDFILE} --root=/data/svn/"
SCRIPTNAME=/etc/init.d/$NAME
# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0
# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh
# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
# Return
# 0 if daemon has been started
# 1 if daemon was already running
# 2 if daemon could not be started
start-stop-daemon --chuid svnowner:svnusers --umask 002 --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
|| return 1
start-stop-daemon --chuid svnowner:svnusers --umask 002 --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
$DAEMON_ARGS \
|| return 2
# Add code here, if necessary, that waits for the process to be ready
# to handle requests from services started subsequently which depend
# on this one. As a last resort, sleep for some time.
}
... Rest des Skriptes wurde nicht angepasst und entspricht dem Skeleton von Debian 4.0 Etch ...