안녕하세요 IT 뽀로로 입니다.
오늘은 형상관리 (Software Configuration Management)에 대해서 살짝 알고 실무에서 대표적으로 사용되는
SVN에 대하여 설치 방법 및 사용법에 대하여 소개할까 합니다.
#형상 관리란?
소프트웨어에서 형상 관리는 개발 중 발생하는 모든 산출물들이 변경됨으로써 점차 변해가는 소프트웨어 형상을 체계적으로 관리하고 유지하는 기법이다. 좀 더 자세히 설명하면 형상 관리는 소프트웨어 개발 생명주기 전반에 걸쳐 생성되는 모든 산출물의 종합 및 변경 과정을 체계적으로 관리하고 유지하는 일련의 개발 관리 활동으로, 소프트웨어에 가시성과 추적 가능성을 부여하여 제품의 품질과 안전성을 높인다.
[네이버 지식백과] 형상 관리의 개념과 절차 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 한빛아카데미(주))
라고 합니다. 형상관리로 사용하는 툴은 Git , SVN 등등이 있습니다.
협업하여 개발할때는 형상관리가 필수적으로 중요하죠!
그럼 이제 SVN 설치 방법에 대하여 알아 봅시다.
#SVN Server 구축
SVN Server를 구축하는건 굉장히 쉽습니다.
먼저 SVN Server로 사용되는 SVN Subversion을 설치합니다.
명령어는 다음과 같습니다.
$sudo apt-get install subversion
설치가 완료되면 Repository를 관리할 디렉터리를 하나 만들어 줍니다.
$sudo mkdir -p /home/svn
이 디렉터리는 Repository를 관리하기 위한 디렉터리일 뿐입니다.
그럼 이제 Repository를 만들어야겠죠?
이때는 svnadmin create 명령을 사용합니다
$sudo svnadmin create /home/svn/[Repository name]
이렇게 Repository를 만들고 ls 명령어를 쳐보면 README.txt 부터 conf 등등 여러 파일 및 디렉터리가 존재 합니다.
이제 SVN 환경 설정을 해주기 위해 Repository 의 conf 디렉터리로 이동해 줍니다.
$cd /home/svn/[Repository name]/conf
경로를 이동해서 ls를 쳐보면 밑의 그림과 같은 파일들이 존재합니다.
이 파일들이 SVN 서버를 구축하는데 필요한 설정들을 해줍니다.
먼저 authz를 열어 줍니다. authz는 권한설정 파일로 svn에 접속할때 사용자마다 권한을 설정할 수 있습니다.
$sudo vim authz
해당 파일을 열고 다음과 같이 입력합니다
[/] 사용자id1 = rw 사용자id2 = rw |
이렇게 추가하면 사용자id1과 사용자id2라는 계정은 Repository의 전체 경로에 대하여 쓰기와 읽기 권한이 주어집니다.
다음으로 passwd 파일을 열어 줍니다. 이 파일은 사용자 계정 등록을 해주는 파일입니다.
$sudo vim passwd
파일을 열었으면 안의 내용 양식과 동일하게 계정을 생성해줍니다. 양식은 [id]=[pwd] 입니다.
그리고 마지막으로 svnserver.conf라는 파일을 열어 줍니다. 이 파일은 svn의 기본설정을 담당합니다.
하단의 그림에서 주석이 해제된 부분만 똑같이 해제하시면 됩니다.
그럼 이제 기본적인 svn 서버 설정은 끝!! 이제 svn을 실행해 봅시다.
$svnserve -d -r /home/svn
이때의 경로는 repository를 관리하는 디렉터리를 입력하면 됩니다.
실행이 제대로 됬나 확인해보려면 port를 확인해보면 되겠죠? svn은 기본적으로 3690포트를 사용합니다.
$netstat -ntlp | grep 3690
위 명령어를 수행해서 하단의 그림처럼 나온다면 svn이 작동하고 있는 것입니다.
마지막으로 svn 서버가 컴퓨터가 재부팅 될때마다 다시 켜주고하기 귀찮으니 자동으로 실행되게 설정합니다.
$sudo vim /etc/init.d/svnserve
svnserve라는 파일을 만들고 아래의 내용을 복사 붙여넣기 합니다!!
이때 중요한 점은 DAMON_ARGS 부분에 실제 경로를 입력해주면 됩니다.
#! /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 /home/svn" 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 update-rc.d svnserve defaults
그리고 서비스 재시작을 해줍니다.
$sudo service svnserve restart
서비스 실행 확인은 다음과 같습니다.
$sudo service svnserve status
이상 SVN 서버 구축이 끝났습니다!! 이제 다음 포스팅에서는
SVN 서버를 이용해 파일을 저장하고 업데이트하는 방법에 대하여 알아 보도록 할게요!!