티스토리 뷰

728x90

우분투 데스크톱에서 형상 관리 도구인 서브버전(Subversion)을 설치하고 프로젝트 리포지토리를 만들고 서버를 가동해서 다른 컴퓨터에서도 해당 리포지토리를 통해서 형상관리하고 협업할 수 있는 환경을 만들고자 한다. 

 

우선 "sudo apt install subversion"으로 서브버전은 간편하게 설치할 수 있다.

 

다음에 해야 할 작업은 리포지토리(저장소)를 만드는 작업인데 여러 프로젝트들의 형상 관리 정보가 모이는 곳이므로 용량이 넉넉한 적절한 공간을 저장소의 루트로 삼는다. 필자의 경우에는 홈 디렉터리에 svnrepo라는 폴더를 만들어 저장소 루트로 사용하기로 했다.

 

새로운 프로젝트의 형상관리를 시작하려면 저장소 루트로 이동하여 위의 그림과 같이 프로젝트 폴더를 만들고 "svnadmin create 프로젝트폴더명"으로 프로젝트 저장소를 생성한다. 프로젝트 저장소가 정상적으로 만들어지면 위의 그림과 같은 폴더 구조가 만들어진다. 

 

이 상태만으로도 로컬 컴퓨터에서는 file://로 시작하는  URL로 형상 관리를 하면서 개발을 진행할 수 있다. 그렇지만, 이번 포스팅의 목표는 다른 컴퓨터에서도 접근할 수 있도록 하는 것이므로 서버 설정을 진행한다.

 

[Unit]
After=network.service

[Service]
ExecStart=/usr/bin/svnserve -d --foreground -r /home/ubuntu/svnrepo

[Install]
WantedBy=default.target

우선 /etc/systemd/system/svnserve.service 파일을 위와 같이 생성한다. 서버는 svnserve이고 -r 옵션으로 저장소의 루트 경로를 지정하는데 필자의 예제에서는 /home/ubuntu/svnrepo로 지정했다. 

 

sudo systemctl daemon-reload
sudo systemctl start svnserve.service
sudo systemctl enable svnserve.service

서비스 파일 작성했으면 위와 같은 명령으로 서브버전 서비스를 가동 및 등록한다. 서브버전은 기본적으로 3690 포트로 서비스한다.

 

다른 컴퓨터에서 새롭게 생성한 저장소를 체크아웃받아 형상관리를 수행하려면 "svn://주소/프로젝트아이디"를 URL로 지정하면 된다.

 

정상적으로 체크아웃된 것으로 확인할 수 있다. 통상적으로 서브버전을 사용하는 경우 trunk, tags, branch를 생성하여 trunk에서 형상 관리를 하지만 이것에 구애받지 않아도 된다.

 

네트워크로 형상관리를 진행한다는 이야기는 여러 사용자가 동시에 접근할 수 있다는 말이므로 인증 작업이 개입되어야 한다. 

일단, svnserve가 비밀번호 암호화(Cyrus SASL)를 지원하는지 --version 옵션을 부여해서 확인한다. 맨 끝에 "인증이 가능합니다"라는 메시지가 나온다.

 

SASL 지원을 확인했으면 위와 같이 "sudo apt install sasl2-bin" 명령으로 연관 도구들을 설치한다.

 

START=yes

연관 도구 설치가 끝나면 /etc/default/saslauthd 파일을 열고 위와 같이 saslauthd 대몬이 정상 가동되도록 설정하고 시스템을 재부팅해야 한다. 대몬의 정상 가동 여부는 "sudo systemctl status saslauthd"로 확인할 수 있다.

 

anon-access = none
auth-access = write
realm = MyRepos
use-sasl = true
min-encryption = 128
max-encryption = 256

saslauthd  대몬의 정상 가동 여부가 확인되었으면 서브버전 각 프로젝트의 설정 파일을 수정해 주어야 한다. 각 프로젝트의 저장소 폴더에 가면 conf/svnserve.conf 파일이 있는데 파일 내용에서 주석을 풀고 내용을 위와 같이 수정해 준다. 설정의 의미는 등록되지 않은 사용자는 읽기도 불가하다는 것이고, 등록된 사용자는 모든 프로젝트에 동일하게 읽기/쓰기 접근이 가능하다는 것이다. 만약 프로젝트 단위로 접근 가능한 사용자를 구분하고 싶다면 authz-db 설정을 통해서 별도로 권한을 부여해야 한다. 본 예제는 소규모 단위에 단순하게 인증하기 위한 방법이다. realm 설정은 사용자 추가/비밀번호 설정에 사용되므로 공백 없이 입력한다. 다른 프로젝트 저장소의 설정과 새로운 프로젝트 저장소를 추가한 경우에도 동일한 방법으로 설정한다. 동일하게 복사해도 된다.

 

사용자를 추가하는 방법은 위와 같이 " sudo saslpasswd2 -c -u realm이름 사용자아이디" 형태로 수행할 수 있고 삭제는 -c 옵션 대신에 -d 옵션을 사용한다. 주의할 것은 반드시 sudo 사용자로 명령을 수행해야 정상 수행된다. 사용자 목록 조회는 "sudo sasldblistusers2" 명령으로 수행할 수 있다.

 

이제 등록된 사용자만 저장소에 접근할 수 있으므로 체크아웃받으려면 위와 같이 사용자 정보를 입력해야 체크아웃받을 수 있다. realm으로 지정한 이름에 등장하는 것을 확인할 수 있다.

728x90
댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함