반응형
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
반응형
728x90
반응형

전에 다니던 회사에서는 SVN을 전통적으로(?) 사용을 하고 있었다. 그래서 정말 뜻 깊은 경험을 하게 되었다. 그래서 로컬에서 한 번 깔아보려고 한다.

1. subversion 설치

sudo apt install subversion

이미 깔린 광경을 목격할 수 있다.

2. 저장소 설정

SVN 서버를 운영하기 위해서는 변경 이력들 및 svn 관련 데이터를 저장할 저장소를 만들어야 한다.

나는 루트 디렉토리(/) 아래에 svn 이라는 디렉토리를 저장소로 사용할 것이다.

 sudo mkdir /svn

sudo svnadmin create svnrepo

위의 명령어를 작성하면 여러 설정 파일들이 생성되는데 아래의 경로로 들어가면 svnserver.conf 파일이 존재하는데 이 파일을 통해 설정을 진행할 예정이다.

노란 색으로 칠한 부분을 주석을 해제하면 된다.

anon-access = read  # 익명 엑세스의 경우 읽기까지 가능
auth-access = write  # 권한있는 엑세스의 경우 쓰기까지 가능
password-db = passwd # 사용자 계정 정보 DB로 passwd 파일 사용 
authz-db = authz # 사용자 계정 권한 정보 DB로 authz 파일 사용

3. 유저 설정 및 권한 설정

유저 설정

아래의 경로로 들어가면 passwd 파일이 존재하는데 이 파일을 통해 설정을 진행할 예정이다.

아래와 같이 아이디 = 비밀번호 형식으로 맞춰주면 된다.

유저 권한 설정

아래의 경로로 들어가면 authz 파일이 존재하는데 이 파일을 통해 유저의 권한 설정을 진행할 예정이다.

아래와 같이 아이디 = 권한(r or rw) 형식으로 맞춰주면 된다.

4. svn 서비스 실행

sudo svnserve –d –r SVN 저장소 경로

위 명령을 실행하면 SVN 서비스가 실행된다. 그리고 형상 관리할 프로젝트를 "import" 하면 svn 저장소에 이력들이 올라간다!!!

문제!!

show log 하려는데 svn "Item is not readable" 등의 오류가 발생할 경우에는 아래와 같이 수정한다. 일종의 버그라고 한다.

sudo vim ./svnserve.conf
sudo vim ./authz

 

다음 포스팅에서는 포트 변경 및 서비스 실행 / 중단을 위한 서비스 등록, 재부팅 시 자동 시작 등을 다룰 것이다.

 

 

 

 

 

 

 

 

728x90
반응형

+ Recent posts