본문 바로가기

Management/Linux

[subversion] 자동 데몬에 대한 정리

  subversion을 설치한 후, 자동으로 데몬으로 실행하지 않습니다. 이러한 문제를 해결하려고 인터넷을 찾고 찾고 하다가 응용을 해서 만들게 되었습니다. 거의 데부분은 copy&paste라고 말들을 하죠. 허나 사용자 입장에서는 잘 사용할 수만 있다면야 좋겠죠. 하지만 근본적인 구조에 대해서 이해를 한다면은 다음에 설치시에 좀 더 편하게 사용하지 않을까 합니다. 그래스 사용하는 환경을 올려서 정리할까 합니다.

일단 subversion설치에 대한 내용은 다음과 같이 사이트를 참조하면 될듯 합니다. 저도 여기서 많은 정보를 얻고 실제로 여기 있는 내용을 조금씩 조금씩 응용해서 사용하고 있습니다. 처음 이 여기를 접하게 된게 몇년이나 지났지만, 아.. 잘만들고 정리도 깔끔하다는 생각을 하게 되었습니다. 지금은 개인적으로 trac을 관리하면서 사용하기 때문에 중요한 내용은 그쪽에서 관리하고 있습니다. 극히 개인적인 내용이나 개발에 대한 테스트에 대한 내용이 주요하게 내포하고 있습니다.

1. 설치에 대해 도움이 될만한 사이트.
 * http://www.pyrasis.com/main/Subversion-HOWTO ( 개인적으로 잘 보고 있습니다. )

2. 설치 후, 자동으로 데몬을 올리기 위해서는 다음과 같이 /etc/init.d/ 에 대몬을 만들어서 올려놓는 방법
#! /bin/sh
# Copyright (c) 1995-2002 SuSE Linux AG, Nuernberg, Germany.
# All rights reserved.
#
# /etc/init.d/svnserve
#   and its symbolic link
# /usr/sbin/rcsvnserve
#
# LSB compatible service control script; see http://www.linuxbase.org/spec/
#
# Note: This script uses functions rc_XXX defined in /etc/rc.status on
# UnitedLinux (UL) based Linux distributions. If you want to base your
# script on this template and ensure that it works on non UL based LSB
# compliant Linux distributions, you either have to provide the rc.status
# functions from UL or change the script to work without them.

### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:
# Should-Start:      $time ypbind sendmail $syslog $remote_fs
# Required-Stop:     $syslog $remote_fs
# Should-Stop:       $time ypbind sendmail
# Default-Start:     3 5
# Default-Stop:      0 1 2 6
# Short-Description:  svnserve
# Description:        readonly access to a subversion repository
### END INIT INFO


# Note on runlevels:
# 0 - halt/poweroff             6 - reboot
# 1 - single user           2 - multiuser without network exported
# 3 - multiuser w/ network (text mode)  5 - multiuser w/ network and X11 (xdm)
#
# Note on script names:
# http://www.linuxbase.org/spec/refspecs/LSB_1.2.0/gLSB/scrptnames.html
# A registry has been set up to manage the init script namespace.
# http://www.lanana.org/
# Please use the names already registered or register one or use a
# vendor prefix.


# Check for missing binaries (stale symlinks should not happen)
SVNSERVE_BIN=/usr/bin/svnserve
test -x $SVNSERVE_BIN || exit 5

# Check for existence of needed config file and read it
SVNSERVE_CONFIG=/etc/sysconfig/svnserve
test -r $SVNSERVE_CONFIG || exit 6
. $SVNSERVE_CONFIG

# Source LSB init functions
# providing start_daemon, killproc, pidofproc,
# log_success_msg, log_failure_msg and log_warning_msg.
# This is currently not used by UnitedLinux based distributions and
# not needed for init scripts for UnitedLinux only. If it is used,
# the functions from rc.status should not be sourced or used.
#. /lib/lsb/init-functions

# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     be verbose in local rc status and clear it afterwards
#      rc_status -v -r  ditto and clear both the local and overall rc status
#      rc_status -s     display "skipped" and exit with status 3
#      rc_status -u     display "unused" and exit with status 3
#      rc_failed        set local and overall rc status to failed
#      rc_failed   set local and overall rc status to 
#      rc_reset         clear both the local and overall rc status
#      rc_exit          exit appropriate to overall rc status
#      rc_active        checks whether a service is activated by symlinks
#      rc_splash arg    sets the boot splash screen to arg (if active)
. /etc/rc.status
# Return values acc. to LSB for all commands but status:
# 0   - success
# 1       - generic or unspecified error
# 2       - invalid or excess argument(s)
# 3       - unimplemented feature (e.g. "reload")
# 4       - user had insufficient privileges
# 5       - program is not installed
# 6       - program is not configured
# 7       - program is not running
# 8--199  - reserved (8--99 LSB, 100--149 distrib, 150--199 appl)
#
# Note that starting an already running service, stopping
# or restarting a not-running service as well as the restart
# with force-reload (in case signaling is not supported) are
# considered a success.

case "$1" in
    start)
    echo -n "Starting svnserve "
    ## Start daemon with startproc(8). If this fails
    ## the return value is set appropriately by startproc.
    svnserve --foreground -d -r /home/svn & # repo 위치를 설정하시면 됩니다.

    # Remember status and be verbose
    rc_status -v
    ;;
    stop)
    echo -n "Shutting down svnserve "
    ## Stop daemon with killproc(8) and if this fails
    ## killproc sets the return value according to LSB.

    killproc -TERM $SVNSERVE_BIN
    # Remember status and be verbose
    rc_status -v
    ;;
    try-restart)
    ## Do a restart only if the service was active before.
    ## Note: try-restart is not (yet) part of LSB (as of 1.2)
    $0 status >/dev/null &&  $0 restart

    # Remember status and be quiet
    rc_status
    ;;
    restart)
    ## Stop the service and regardless of whether it was
    ## running or not, start it again.
    $0 stop
    $0 start

    # Remember status and be quiet
    rc_status
    ;;
    force-reload)

    echo -n "Reload service svnserve "
    $0 stop  &&  $0 start
    #rc_status
    ;;
    status)
    echo -n "Checking for service svnserve "
    ## Check status with checkproc(8), if process is running
    ## checkproc will return with exit status 0.

    # Return value is slightly different for the status command:
    # 0 - service up and running
    # 1 - service dead, but /var/run/  pid  file exists
    # 2 - service dead, but /var/lock/ lock file exists
    # 3 - service not running (unused)
    # 4 - service status unknown :-(
    # 5--199 reserved (5--99 LSB, 100--149 distro, 150--199 appl.)

    # NOTE: checkproc returns LSB compliant status values.
    checkproc $SVNSERVE_BIN
    # NOTE: rc_status knows that we called this init script with
    # "status" option and adapts its messages accordingly.
    rc_status -v
    ;;
    *)
    echo "Usage: $0 {start|stop|status|try-restart|restart|force-reload}"
    exit 1
    ;;
esac
rc_exit

'Management > Linux' 카테고리의 다른 글

[ Ngrep ] Ngrep 정의  (0) 2009.02.21
[svn] SVN 복구 방법.  (0) 2009.02.21
[ TIP ] vi 응용법( diff )  (0) 2009.02.17
[subversion] 각 계정마다 또는 폴더마다 권한 설정하기.  (0) 2009.02.14
[IRC] 설치 문서  (0) 2009.02.14