리눅스:Ubuntu/GitSvn

우분투 20.04 에 svn 설치 및 포트 설정, 서비스 등록

photoner 2020. 10. 19. 15:55
728x90
반응형

포트 변경 및 서비스 실행 / 중단을 위한 서비스 등록, 재부팅 시 자동 시작 

지난 포스팅(https://typingdog.tistory.com/99)에서 SVN 서버 설치 및 구동 방법을 다루었다. 이번 포스팅에서는 시스템 부팅 시 자동 재 실행, 포트 변경 등을 정리해보았다.1. 서비스 등록자동 재 실행 및 systemctl 등을 통해 명령하기 위해서는 서비스에 등록을 해야한다. 

먼저, svn 을 자동으로 실행하는 데몬을 만든다.

sudo vim /etc/rc.local

# Subversion
svnserve -d -r /svn/svnrepo
위 내용을 rc.local 에 기록하고 저장.

/etc/init.d 디렉토리 내에 svnserve 라는 스크립트를 생성 후, 

아래와 같은 내용을 기록한다. 단,

DAEMON_ARGS="-d -r /svn/svnrepo --listen-port 5012" 

이 부분만 자신에게 맞게 수정한다.

-------------------------------------------

#! /bin/sh
### BEGIN INIT INFO
# Provides:          svnserve
# Required-Start:    $local_fs $syslog $remote_fs
# Required-Stop:     $local_fs $syslog $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start svnserve
### END INIT INFO

# Author: Michal Wojciechowski <odyniec@odyniec.net>

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="svnserve"
NAME=svnserve
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-d -r /svn/svnrepo --listen-port 5012"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

[ -x "$DAEMON" ] || exit 0

[ -r /etc/default/$NAME ] && . /etc/default/$NAME

. /lib/init/vars.sh

. /lib/lsb/init-functions

do_start()
{
        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                || return 1
                        start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
                                $DAEMON_ARGS \
                                || return 2
                        }

                do_stop()
                {
                        start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
                        RETVAL="$?"
                        [ "$RETVAL" = 2 ] && return 2
                        start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
                        [ "$?" = 2 ] && return 2
                        rm -f $PIDFILE
                        return "$RETVAL"
                }

        case "$1" in
                start)
                        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
                        do_start
                        case "$?" in
                                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
                        esac
                        ;;
                stop)
                        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
                        do_stop
                        case "$?" in
                                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
                        esac
                        ;;
                restart|force-reload)
                        log_daemon_msg "Restarting $DESC" "$NAME"
                        do_stop
                        case "$?" in
                                0|1)
                                        do_start
                                        case "$?" in
                                                0) log_end_msg 0 ;;
                                                1) log_end_msg 1 ;; # Old process is still running
                                                *) log_end_msg 1 ;; # Failed to start
                                        esac
                                        ;;
                                *)
                                        # Failed to stop
                                        log_end_msg 1
                                        ;;
                        esac
                        ;;
                *)
                        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
                        exit 3
                        ;;
        esac

        exit 0

-------------------------------------------

저장이 완료되었다면, 다음 명령을 통해서 실행 권한을 설정한다.

sudo chmod u+x /etc/init.d/svnserve

서비스를 등록한다.

sudo update-rc.d svnserve defaults

실행한다.

sudo service svnserve start

리부트 한 뒤, 아래 명령을 통해서 실행 중인지 확인해보고 실제 svn 브라우저를 통해서도 확인해본다.

netstat -tnl

728x90
반응형