나는 내가 할줄 아는 대부분의 것들도 인터넷으로 찾아서 하는 편인데 그 이유는
- 내가 아는 것에서 한정짓지 않고 다른 사람이 어떻게 하고 있는지 확인하며
- 내가 모르는 무엇을 추가로 좀더 파악하고
- 최신 트렌드를 연마하기 위해서이다.
- 또한 지식을 축적하여 KnowHow를 늘려가는 것보다는 KnowWhere 가 좀더 중요도가 높다고 판단하기 때문이다. (물론 KnowWhere 는 제대로된 bookmark가 필수 요소이다.)
mac os x Leopard 에 dav_svn 을 설치하는 과정은 검색해 보았으나 쉽게 찾을 수는 없었다. 검색 결과(mac leopard dav_svn) 중 하단의 블로그 결과로 봐줄만 한게 있었으나 "고기를 잡는 과정은 있으나. 고기를 잡는 방법에 대한 과정" 이 기술되어 있지 않은듯 하여 직접 기술 하게 되었다.
Running a subversion server on my Mac Mini
– 2010년 1월 3일 I recently installed a Mac Mini to be run as a media server. … Create a new file for dav_svn.conf. sudo vi /private/etc/apache2/extra/dav_svn.conf …
dav_svn 은 WebDAV 에 Subversion 을 융합시키기 위한 모듈이다. WebDAV 는 Web-based Distributed Authoring and Versioning 으로서 웹을 통한 웹을 기반으로 하는 공동 저작활동을 할 수 있도록 해 주는 http 서버의 모듈이다. SubVersion 은 CVS의 단점을 개선하여 나온 신 버전 관리 시스템으로 볼 수 있다. dav_svn 을 융합시키면 좋은 이유는 다음의 2가지 정도로 볼 수 있다.
- 인터넷이 되는 곳이라면 subversion을 이용할 수 있다.
- WebDAV가 http 서버의 모듈이기 때문에 http protocol을 사용하고 때문에 방화벽에 대부분 안전하다. 즉, 인터넷이 되는 환경이라면 일단 subversion 이 된다고 볼 수 있다.
- 웹으로 versioning 한 내용을 살펴 볼 수 있다.
따라서 svn server 를 잘 운영하고 있다 하더라도 WebDAV 를 이용해서 한단계 업그레이드 시키는 것은 권할만한 사항이라고 생각한다.
사실 mac 이든 어디든 dav_svn 을 설정하는 것은 그다지 어려운 일이 아니다. 다만 mac은 다른 리눅스 진영과 달리 컴파일보다는 바이너리 설치에 사람들이 익숙하고 아래 순서에 나와 있지만 하필 httpd.conf 에 svn관련 설정만 딱 빠져 있기 때문에 컴파일을 다시 해야 하나? 등의 오해를 불러 일으킬 수 있다. 따라서 해당 모듈이 이미 mac에 있다는 사실만 알면 된다. 참고로 아래 내용은 httpd.conf 그리고 module 이 무엇인지 아는 정도 레벨에서 이해할 수 있도록 기술 되어 있다. 짧게나마 쓴다면 httpd.conf 는 apache 웹서버의 설정값이 기술되어 있고 module 은 apache 웹서버의 플러그인으로 볼 수 있다.
- 지금부터 할 대부분의 작업들이 admin 권한을 요구하므로 sudo 로 shell에게 모든 권한을 부여한다.
- > sudo bash
- 자신 계정의 password 입력.
- terminal (터미널) 앱으로 해야 하는 것은 당연.
- apache2 설정 directory 로 이동하여 mod_dav_svn 이 없음을 확인
- bash-3.2# cd /etc/apache2
bash-3.2# grep -R ‘svn’ * - 위의 명령을 날려보면 conf 파일을 포함하여 svn관련 내용이 없다는 것을 알 수 있다.
- bash-3.2# cd /etc/apache2
- svn 관련 모듈이 mac의 어딘가에 파일로 존재함을 확인
- nzMini:apache2 nzin4x$ cd /usr/libexec/apache2/
nzMini:apache2 nzin4x$ ls -al *svn*
-rwxr-xr-x 1 root wheel 64896 Oct 5 2009 mod_authz_svn.so
-rwxr-xr-x 1 root wheel 429632 Oct 5 2009 mod_dav_svn.so
nzMini:apache2 nzin4x$ - /usr/libexec/apache2 안의 파일들이 httpd.conf 에서 LoadModule 로 호출할 수 있는 파일이다.
- nzMini:apache2 nzin4x$ cd /usr/libexec/apache2/
- 모듈을 이용할 수 있도록 apache가 컴파일 되어 있음을 확인
- bash-3.2# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c - 위의 mod_so.c 때문에 동적으로 모듈을 로딩할 수 있다. 만약 mod_so 가 없다면 동적으로 모듈을 할 수 없으므로 필요한 모듈을 같이 다시 컴파일 해야 한다. 요즘은 대부분 기본으로 동적 모듈을 제공한다.
- bash-3.2# httpd -l
- httpd.conf 에 수동으로 추가 함
- LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so
LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so - 적당한 위치에 추가하며 필자는 mod_dav_fs 위에다가 2줄을 추가 하였다.
- LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so
- httpd.conf 에 관련 설정 모듈을 webdav 에 추가했음을 밝힘
- # Distributed authoring and versioning (WebDAV), and svn
Include /private/etc/apache2/extra/httpd-dav.conf - ,and svn 이라는 단순한 주석을 추가하였다. 현재까지의 과정은 apache가 svn 관련 module을 설치하는 과정이었고, 이제 이 모듈이 어떻게 동작할지에 대해서는 ./extra/http-dav.conf 에 추가할 것이다.
- # Distributed authoring and versioning (WebDAV), and svn
- /etc/apache2/conf/extra/httpd-dav.conf 수정
- <Location "/svn">
Dav svn
SVNPath /Users/nzin4x/svnrepo
AuthType Digest
AuthName webhard
AuthUserFile /etc/apache2/htpswd
require valid-user
</Location> - 위의 내용을 마지막 라인에 추가한다.
- http://nz.pe.kr/svn 에 접속했을때 repository 인 /Users/nzin4x/svnrepo 에 접속(매핑)하라는 뜻이며 /etc/apache2/htpswd 에 만들어져있는 패스워드 정의 파일에 webhard realm (영역) 에 digest 방식으로 패스워드를 인증하여 사용하라는 뜻이다. 이 영역에 접근하기 위해서는 valid-user 여야 한다.
- htdigest 를 이용해서 패스워드를 만드는 과정은 다음을 참고 한다. (http://httpd.apache.org/docs/2.0/programs/htdigest.html)
- SVNPath 는 repository 가 하나일때 사용하는 것이고 여러개라면 SVNParentPath 등으로 상세하게 설정할 수 있다.
- <Location "/svn">
- apachectl restart
좀 길게 적은감이 있다. 사실 중요한 것은 mac os x에는 dav_svn 을 위한 설정은 존재 하지 않지만 수동으로 추가 할 수 있도록 해당 모듈은 준비해 놓고 있다. 결국 위의 과정중 module 을 찾아내고 그것에 대한 설정을 추가하는 과정이 핵심이라고 할 수 있다.
'영삼이의 IT정보' 카테고리의 다른 글
svn merge 방법 (0) | 2012.06.12 |
---|---|
mac용 svn시작하기 [출처] mac용 svn시작하기|작성자 seungbeomi (0) | 2012.06.12 |
맥용 SVN 서버 설치 (0) | 2012.06.12 |
Tabbar 아이콘 (0) | 2012.06.11 |
StoreKit (0) | 2012.06.10 |