이번 포스팅은 AWS EC2 인스턴스 SVN 설치 및 설정하는 방법에 대해서 알아보도록 하겠습니다.



SVN 패키지 확인


다음 명령어를 입력하여 SVN이 설치되어 있는지 확인합니다.

rpm -qa | grep subversion

패키지가 있다면 패키지를 지워주시고,  없다면 새로 설치를 하시면 됩니다. (지우는 방법: rpm -e subversion) 주의!



SVN 설치하기


다음 명령어를 입력하여 SVN을 설치합니다.

sudo yum install subversion


설치 완료 후 터미널에 svn을 입력하시면 "사용법은 'svn help'를 통해 볼 수 있습니다." 라는 내용은 정상적으로 설치된 것입니다.



root 계정 접속


일단 root 계정으로 접속합니다. root 계정 설정을 하지 않았다면 다음 포스팅을 보고 설정하시면 됩니다.

AWS EC2 인스턴스 root 계정 활성화 및 접속하기


다음 명령어를 입력하여 root 계정으로 접속합니다.

su - root



저장소 위치 디렉터리 생성


다음 명령어를 입력하여 저장소 디렉터리를 생성합니다.

mkdir /usr/local/svn



SVN 프로젝트 repository 설정


다음 명령어를 입력하여 프로젝트 repository를 설정합니다.

svnadmin create --fs-type fsfs /usr/local/svn/프로젝트이름



svnserve.conf 설정 파일 변경


vi로 다음 파일을 열어 다음 항목들을 # 주석을 지워줍니다.

vi /usr/local/svn/프로젝트이름/conf/svnserve.conf


[general]

anon-access = none

auth-access = write

password-db = passwd

authz-db = authz

realm = 프로젝트이름



passwd 설정 파일 변경


vi로 다음 파일을 열어 다음과 같이 설정합니다.

vi /usr/local/svn/프로젝트이름/conf/passwd


[users]

사용자아이디1 = 비밀번호

사용자아이디2 = 비밀번호

사용자 아이디1에 자신의 아이디

사용자 아이디2에 같이 함께하는 팀원의 아이디 등...

계속 추가할 수 있습니다.



authz 설정 파일 변경


vi로 다음 파일을 열어 다음과 같이 추가합니다.

vi /usr/local/svn/프로젝트이름/conf/authz


[/]

사용자아이디1 = rw

사용자아이디2 = rw

위에 passwd의 설정한 사용자 아이디의 읽기, 쓰기 권한을 설정하는 것입니다.



SVN 서버 실행


다음 명령어를 입력하여 svn을 실행합니다.

svnserve -d -r /usr/local/svn

ps -ef | grep svnserve

기본적으로 SVN 서버는 3690포트로 설정되기 때문에 외부에서 접속하려면 보안 그룹에 추가 해주어야합니다.


ps 명령어를 이용하여 서버가 제대로 실행되었는지 확인합니다.



SVN 계정 체크아웃 확인


다음 명령어를 입력하여 SVN 계정으로 체크아웃을 확인합니다.

svn checkout svn://127.0.0.1/프로젝트 이름


Checked out revision 0.이라고 나오면 정상적으로 체크아웃된 것 입니다.



SVN EDITOR 설정


다음 명령어를 입력해서 .bash_profile를 수정합니다.

vi ~/.bash_profile


export SVN_EDITOR = vi


source 명령어를 이용하여 .bash_profile을 변경된 내용을 적용시킵니다.

source ~/.bash_profile



SVN 폴더 생성


다음 명령어를 입력하여 SVN 기본 폴더구조를 만들어줍니다.

svn mkdir svn://127.0.0.1/accompany/trunk

svn mkdir svn://127.0.0.1/accompany/branches

svn mkdir svn://127.0.0.1/accompany/tags

svn mkdir svn://127.0.0.1/accompany/merge

:wq! 입력하고 나와서 c를 입력하고 commit을 합니다.




※ SVN 기존 용어 설명


Trunk

  • 단어 자체의 뜻은 본체, 본문 등입니다.
  • 프로젝트에서 가장 중심이 되는 디렉토리입니다.
  • 모든 프로그램의 개발 작업은 trunk 디렉토리에서 이루어  집니다.
  • trunk 디렉토리 바로 아래에는 소스들의 파일과 디렉토리가 들어가게 됩니다.

Branch

  • trunk에서 뻗어져 나온 나무가지를 뜻합니다.
  • 프로그램을 개발하다 보면 trunk 디렉토리에서 또 다른 작은 분류로 빼서 따로 개발해야 할 경우가 있습니다.
    프로젝트안의 작은 프로젝트라고 생각하면 됩니다.
  • branches 디렉토리 안에 또 다른 디렉토리를 두어 그 안에서 개발하게 됩니다.

Tag

  • tag는 꼬리표입니다.
  • 이 디렉토리는 프로그램을 개발하면서 정기적으로 릴리즈 할 때, 0.1 / 0.2 / 1.0 등 이런식의 버전 별로 소스 코드를 따로 저장하는 공간입니다.
  • 버전별로 태그를 붙여서 tag 디렉토리 안에 보관한다고 생각하면 됩니다.

Merge

  • Trunk에서 분기된 Branch를 다시 Trunk로 합쳐는 작입니다.


여기까지 잘 따라오셨다면 SVN 구축에 성공하셨습니다.

이제 SVN 클라이언트를 이용하여 서버 정보를 입력하여 SVN으로 함께 협업을 할 수 있습니다.