영삼이의 IT정보2012. 6. 12. 14:13

나는 내가 할줄 아는 대부분의 것들도 인터넷으로 찾아서 하는 편인데 그 이유는

  • 내가 아는 것에서 한정짓지 않고 다른 사람이 어떻게 하고 있는지 확인하며
    • 내가 모르는 무엇을 추가로 좀더 파악하고
    • 최신 트렌드를 연마하기 위해서이다.
  • 또한 지식을 축적하여 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 웹서버의 플러그인으로 볼 수 있다.

  1. 지금부터 할 대부분의 작업들이 admin 권한을 요구하므로 sudo 로 shell에게 모든 권한을 부여한다.
    • sudo bash
    • 자신 계정의 password 입력.
    • terminal (터미널) 앱으로 해야 하는 것은 당연.
  2. apache2 설정 directory 로 이동하여 mod_dav_svn 이 없음을 확인 
    • bash-3.2# cd /etc/apache2
      bash-3.2# grep -R ‘svn’ *
    • 위의 명령을 날려보면 conf 파일을 포함하여 svn관련 내용이 없다는 것을 알 수 있다.
  3. 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 로 호출할 수 있는 파일이다.
  4. 모듈을 이용할 수 있도록 apache가 컴파일 되어 있음을 확인
    • bash-3.2# httpd -l
      Compiled in modules:
        core.c
        prefork.c
        http_core.c
        mod_so.c
    • 위의 mod_so.c 때문에 동적으로 모듈을 로딩할 수 있다. 만약 mod_so 가 없다면 동적으로 모듈을 할 수 없으므로 필요한 모듈을 같이 다시 컴파일 해야 한다. 요즘은 대부분 기본으로 동적 모듈을 제공한다.
  5. 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줄을 추가 하였다.
  6. 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 에 추가할 것이다.
  7. /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 등으로 상세하게 설정할 수 있다.
  8.   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
Posted by 다오나무