일반적인 중견 및 중소기업 경력직 면접을 보다보면 물어보는 질문중 가장 흔한 것 중의 하나가 무엇인지 아는가?
바로 다음의 문항이다.
"이슈 트래커 써보신적 있으세요?"
답변예시 : redmine과 mentis는 이전 회사와 현 회사에서 사용하고 있어서 사용상 문제는 없습니다. jira는 전회사에서 도입하려 했으나 비용이 많이 들어서 차선으로 redmine을 직접 서버를 만들어서 사용했습니다.
"소스 관리는 어떻게 하셨어요?"
답변예시 : 이전회사에서는 소프트웨어 개발자가 적고 회사 규모가 작아서 svn으로 충분했었는데, 현 회사에서는 여러명이 공동 작업을 하다보니 주로 gitlab을 이용하여 산출물 관리를 하였습니다.
이러한 문항에서 자유로워 지기 위해서 앞서 이슈트래커로 redmine을 설치하고 사용하는 방법을 조금 익혔고, 그리고 소스 관리를 위해 gitlab을 이용하는 것을 익힐 수 있도록 자료를 만들어 드렸다. 그리고 일부는 svn을 사용하기도 한다. 그래서 svn을 설치하고 사용하는 방법에 대해서 간단히 학습할 수 있도록 준비해 보았다.
SVN은 필요시 웹서버를 같이 사용해야 되는 경우도 있다. 만약 앞서 redmine이나 git에서 웹서버를 설치하였다면, 설치 부분은 배제하고 설정 부분만 참고하기 바란다.
0. 설치 요구사항
필자는 기존 설치환경과 같이 Windows가 설치된 PC(Host)에 vmware를 설치하고 게스트 OS로 Ubuntu 18.04를 설치하여 진행하였다.
- Ubuntu가 설치된 PC(Host)
- Ubuntu가 설치된 PC(Host)는 인터넷에 접근이 가능하여야 한다.
1. 웹서버 설치
앞서 설치하였다면 설정 관련 부분만 참조.
(1) 우분투 저장소 갱신
$ sudo apt-get update |
(2) 웹서버 설치
$ sudo apt-get install apache2 |
2. SVN 서버 설치
(1) SVN과 아파치 관련 패키지를 설치한다.
$ sudo apt-get install subversion libapache2-mod-svn |
(2) 설치된 모듈을 활성화
$ sudo a2enmod dav dav_svn |
(3) 설치가 완료되었으면 수정된 환경 적용을 위한 웹서버 재 시작.
$ sudo service apache2 restart |
(4) svn 저장소 설정
아래와 같이 /var디렉터리 아래에 저장소를 설정한다.
$ sudo mkdir -p /var/svn/ $ sudo svnadmin create /var/svn/myrepo |
저장소가 생성되면 클라이언트에서 접근할 수 있도록 소유권을 설정한다.
$ sudo chown -R www-data:www-data /var/svn $ sudo chmod -R 775 /var/svn |
(5) 사용자 생성
서브버전을 이용하게 될 사용자를 설정
$ sudo htpasswd -m /etc/apache2/dav_svn.passwd shhong |
3. 웹서버 변경사항 설정 및 재시작
웹서버에 변경 사항을 설정하고 재시작한다. 중간중간 마다 서버를 갱신하는 내용에 의아하다는 생각을 한 독자가 있을 것 같아 설명하자면, 각 단계에서 웹서버에 설정된 내용이 잘 적용되었는지 확인을 위해서이다. 정상적으로 설정 했다는 보장을 할 수 있으면 마지막 단계인 지금 설정 후 재시작 해주어도 된다.
(1) 웹서버의 sebversion 모듈 설정
$ sudo vi /etc/apache2/mods-enabled/dav_svn.conf |
수정 또는 입력 위치는 아래의 밑줄친 부분(라인 확인)과 같다. 패키지 버전등에 따라 위치는 다소 달라질 수 있다.
1 #dav_svn.conf - Example Subversion/Apache configuration 3 # For details and further options see the Apache user manual and 4 # the Subversion book. 5 # 6 # NOTE: for a setup with multiple vhosts, you will want to do this 7 # configuration in /etc/apache2/sites-available/*, not here. 8 9 # <Location URL> ... </Location> 10 # URL controls how the repository appears to the outside world. 11 # In this example clients access the repository as http://hostname/svn/ 12 # Note, a literal /svn should NOT exist in your document root. 13 <Location /svn> 14 15 # Uncomment this to enable the repository 16 DAV svn 17 18 # Set this to the path to your repository 19 #SVNPath /var/lib/svn 20 # Alternatively, use SVNParentPath if you have multiple repositories under 21 # under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...). 22 # You need either SVNPath and SVNParentPath, but not both. 23 SVNParentPath /var/svn 24 25 # Access control is done at 3 levels: (1) Apache authentication, via 26 # any of several methods. A "Basic Auth" section is commented out 27 # below. (2) Apache <Limit> and <LimitExcept>, also commented out 28 # below. (3) mod_authz_svn is a svn-specific authorization module 29 # which offers fine-grained read/write access control for paths 30 # within a repository. (The first two layers are coarse-grained; you 31 # can only enable/disable access to an entire repository.) Note that 32 # mod_authz_svn is noticeably slower than the other two layers, so if 33 # you don't need the fine-grained control, don't configure it. 34 35 # Basic Authentication is repository-wide. It is not secure unless 36 # you are using https. See the 'htpasswd' command to create and 37 # manage the password file - and the documentation for the 38 # 'auth_basic' and 'authn_file' modules, which you will need for this 39 # (enable them with 'a2enmod'). 40 AuthType Basic 41 AuthName "Subversion Repository" 42 AuthUserFile /etc/apache2/dav_svn.passwd 43 44 # To enable authorization via mod_authz_svn (enable that module separately ): 45 #<IfModule mod_authz_svn.c> 46 #AuthzSVNAccessFile /etc/apache2/dav_svn.authz 47 #</IfModule> 48 49 # The following three lines allow anonymous read, but make 50 # committers authenticate themselves. It requires the 'authz_user' 51 # module (enable it with 'a2enmod'). 52 #<LimitExcept GET PROPFIND OPTIONS REPORT> 53 Require valid-user 54 #</LimitExcept> 55 56 </Location> |
설정이 완료되었으면 웹서버를 재시작하여 웹서버를 갱신한다.
$ sudo service apache2 restart |
4. SVN 서버 동작 확인
로컬과 외부에서 확인할 수 있다.
(1) 로컬에서 확인
- 우분투의 ip확인
내부 ip를 이용하여도 되고 lo(localhost, 127.0.0.1)을 이용해도 됨.
$ ifconfig ens33 Link encap:Ethernet HWaddr 00:0c:29:b0:98:38 inet addr:192.168.0.51 Bcast:192.168.3.255 Mask:255.255.252.0 inet6 addr: fe80::fdb8:4034:9ae6:af2f/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 ...(생략)... |
- firefox를 이용하여 바로 실행
$ firefox 127.0.0.1/svn/myrepo |
- 정상적으로 svn 서비스가 동작되고 있다면 아래와 같이 사용자 계정과 패스워드를 입력 받게 된다.
그리고 정상적으로 로그인이 가능하다면 아래와 같이 svn 디렉터리로 지정된 곳의 현재 파일 상태가 표시된다. 해당 폴더에 파일이 생성되어있지 않은 경우라면 아래와 같이 빈 화면이 표시된다.
이제 svn 서버는 정상적으로 동작되니, client를 설정하고 사용해 보도록 하자. 다음편에서...
-계속 -
최근댓글