Tools/SVN

[기본.1] Linux 서버에 SVN 구축(설치), 권한 설정 하기

tavris 2017. 5. 5. 23:16

 

[기본.1] Linux 서버에 SVN 구축(설치)하기


최근 어플리케이션 개발을 진행하면서 협업이 많아지고, 프로젝트의 크기가 커지는 바람에 프로그램 코드를 공유해 질 일이 많아졌습니다.

단계별로 프로그램 코드를 저장하고 다른 인원과 효율적으로 공유할 수 있는 프로그램이 필요하여, 어느것이 좋을까 하고 찾다보니 범용성이 넓은 "Subversion"을 선택하게 되었습니다.


최신 기술에 많이 익숙해지신 분들은 "GitHub"를 사용하지 않고, 왜 "Subversion"을 사용하냐고 물어보실 분들도 있으 실 수도 있겠네요.

뭐.. 사람들마다 좋아하는 아이스크림이 다르듯이, 서포트 툴의 취향도 다 다른 법이므로... 양해를 해주 실 거라 믿습니다.


저 역시도 실무에 사용해야하는 서버를 구축해야하는터라, 구축도 할겸 포스팅도 남길겸, 겸사겸사 설치 방법 쓰게 되었습니다.

강좌용 포스팅이 아니다보니 설치를 진행하는 사진이 없더라도 이해 해 주셨으면 좋겠습니다.



먼저, "Subversion"이 무엇인지를 알아보고 설치 방법으로 넘어가도록 하겠습니다.


Subversion은 버전관리 시스템이라고 보시면 됩니다. 그렇다면.. 버전관리 시스템이 무엇인지를 묻는 분들이 있으실테니..


버전관리 시스템의 정의

  • 파일의 변경 이력을 관리하는 시스템으로 소스코드나 문서 파일의 수정 이력을 보관하고 관리한다.
  • 여러 개발자가 동시에 많은 파일을 변경하더라도 덮어 쓰거나 충돌하는 문제를 방지할 수 있어야 한다.
  • 다른 버전(Branch)으로 개발된 소스를 현재 소스와 합치고, 변경 이력에 대해서도 추적이 가능하다.
  • 버전관리 시스템은 코딩작업 중 예상하지 못한 문제를 방지할 수 있으며, 소스코드의 변경 이력 추적이 가능하고, 동시에 다양한 버전의 개발 작업이 가능하다.
  • 버전관리스시스템의 종류로는 CVS(Concurrent Version System), Visual SourceSafe, SVN(Subversion), GIT(Distributed Version Control Systems)이 있다.


Subversion. 즉, 줄여서 SVN이라고 불리는 프로그램을 간략하게 요약하자면 프로그램 소스 코드를 관리해주는 시스템을 의미합니다.


그럼, 지금부터 리눅스(Linux) 운영체제에 SVN(Subversion)을 설치하는 방법을 알아보도록 하겠습니다.

하지만... 요새 리눅스도 많이 좋아진 관계로.. 예전처럼 SVN 소스코드를 다운받아 'make'하고 'make install'하는 것은 아님으로 안심하셔도 될 듯 합니다.



솔직하게, 리눅스에 SVN을 설치하는 방법은 매우 간단합니다.

본인이 설치한 운영체제의 종류를 확인하시고, 설치한 리눅스가 CentOS/Fedora라면 레드햇 계열의 명령라인을, UbuntU라고 하신다면 데비안 계열의 명령라인만을 보시면됩니다.


먼저, Terminal에 접속하시고, root권한 또는 동일레벨권한을 요청하신 후 아래 명령어를 입력해 주시면 됩니다.


1
2
yum install subversion        //(레드헷 계열)
apt-get install subversion   //(데비안 계열)


위 명령어를 입력해주시면, 자동으로 설치가 완료됩니다. 이제 저장소를 생성하시면 사용이 가능한 상태가 되었네요.

저장소 생성은 아래 처럼 해주시면 됩니다.


1
2
3
mkdir {PATH}/repo        // SVN Repo(저장소의 Root)의 폴더를 생성
cd {PATH}/repo           // SVN Repo(저장소의 Root)의 폴더로 이동
svnadmin create --fs-type fsfs {PROJECT}   // 새로운 SVN프로젝트{PROJECT}를 생성


이제 기본 저장소가 생성되었습니다.

SVN의 기본 저장소를 설정하고 데몬을 실행시키는 명령어를 입력해 줍니다.


1
svnserve --r {PATH}/repo


여기까지 하셨다면, 기본 svn 사용이 가능한 상태가 되었습니다.

이제 SVN프로젝트만 설정해주시면, 완벽하게 사용이 가능하도록 되었네요.


이제 {PROJECT}의 세부 설정을 하는 방법을 알려드리도록 하겠습니다.

설정 파일의 위치는 {PATH}/{PROJECT}/conf에 있습니다.


먼저, 해당 프로젝트의 기본 설정을 하는 방법입니다.


1
2
3
4
5
6
7
8
9
cd {PATH}/repo/{PROJECT}/conf    // 해당 프로젝트 폴더로 이동
vi svnserve.conf                 // 해당 프로젝트의 설정을 편집
 
-------------------------------------------------------------------------
anon-access = none         // 비인증 사용자의 접속을 거부
auth-access = write        // 인증 사용자는 R/W가 가능
password-db = passwd     // 사용자 인증을 할 파일명
authz-db = auth            // 인증된 사용자가 접속가능한 폴더의 정보를 갖고있는 파일명
-------------------------------------------------------------------------


각 프로젝트를 생성하면, 해당 프로젝트 하위에 conf폴더가 생성되며, 폴더 하위에 svnserve.conf라는 파일이 자동 생성됩니다.

이 파일이 바로 해당 프로젝트의 기본 설정을 해주는 설정파일입니다.


이제 사용자 추가와 권한 설정을 하는 방법입니다.


1
2
3
4
5
6
7
vi passwd                // 사용자 인증을 위한 파일 수정
 
--------------------------------------------
[users]
test1 = password // test1 사용자를 추가 (비밀번호 : password)
test2 = password // test2 사용자를 추가 (비밀번호 : password)
--------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vi auth                // 사용자 권한 파일을 수정
 
--------------------------------------------
// 최상위 디렉토리 접속 권한
[/]
test1 = rw // test1은 읽고/쓰기가 가능
test2 = r // test2는 읽기만 가능
 
// OR //
 
// 하위 폴더 중 tag 폴더 사용 권한
// 위의 설정을 하지 않으셔도 /tag 폴더에 test1의 접속이 가능하며
// test1은 최상위 폴더에는 접근 할 수 없다.
[/tag]
test1 = rw // test1의 경우 /tag 및 하위폴더에 읽고/쓰기가 가능
--------------------------------------------

이처럼 사용자 인증 및 권한 수정을 해주시면됩니다.

기본적으로 권한 설정 시 [] 안에 들어가는 폴더 및 하위 폴더에 설정한 권한이 부여되지만

하위폴더에 추가적으로 권한을 설정 해 줄 경우, 해당 권한을 따라 권한이 변경됩니다.

예를 들어,

1
2
3
4
5
6
7
8
9
10
11
12
--------------------------------------------
[/]
test1 = rw
test2 = rw
 
[/tag]
test1 = r
test2 = rw
 
[/tag/{DIR}]
test2 = r
--------------------------------------------

위처럼 권한을 설정할 경우,

2~4라인의 권한 설정으로 "test1"과 "test2"는 최상위 폴더 및 하위 폴더에 읽고/쓰기가 가능한 상태로 설정되며,

6~8라인의 권한으로 /tag 폴더 및 해당 하위 폴더의 권한이 "test1"은 읽기만 가능하고, "test2"는 읽고/쓰기가 가능한 상태로 변경됩니다.

10~11라인의 권한으로 /tag/{DIR} 폴더 및 해당 하위 폴더의 권한이 "test2"는 읽기만 가능하도록 변경됩니다.

최종적으로, "test1"은 /tag 폴더를 제외한 나머지 폴더에는 읽고/쓰기가 가능하지만 /tag 폴더 및 하위 폴더에는 읽기만 가능하게 설정되며,

"test2"는 /tag/{DIR} 폴더를 제외한 나머지 폴더에는 읽고/쓰기가 가능하지만 /tag/{DIR} 폴더 및 하위 폴더에는 읽기만 가능한 상태로 설정됩니다.



이상  Linux 서버에 SVN 구축, 사용자 설정, 권한 설정하는 방법이었습니다.

'Tools > SVN' 카테고리의 다른 글

[기본.2] SVN에서 폴더(Trunk, Branch, Tag)별 의미  (0) 2018.01.24