2007.02.14 22:44

[INSTALL] 나도 Trac을 써보자! Apache-2.2.2/SVN-1.3.1/Trac-0.9.5/FastCGI (4) - subversion설치 및 연동

[INSTALL] 나도 Trac을 써보자! Apache-2.2.2/SVN-1.3.1/Trac-0.9.5/FastCGI (4) - subversion설치 및 연동
이 글에 있는 내용.

   - 2. subversion의 설치
   - 3. subversion의 설정 및 사용
   - 4. subversion과 apache 의 연동.

2. subversion의 설치

    subversion 1.3.1 은 apache 2.0.55 이상의 버전에 의존성이 걸려있다.

    /etc/portage/profile/package.provided 파일에

        dev-libs/apr-0.9.7
        dev-libs/apr-util-0.9.7
        net-www/apache-2.0.55-r1
        dev-libs/apr-1.2.7
        dev-libs/apr-util-1.2.7

    를 추가해 준다.

    또한 1.3.1 버전은 ~x86 상태 이므로 /etc/portage/package.keywords 파일에

        =dev-util/subversion-1.3.1 ~x86

[출처] http://classpath.egloos.com/2026809
    를 추가해 준다.

    emerge -Dpv subversion 은 다음과 같다. 

    [ebuild  N    ] dev-util/subversion-1.3.1  USE="apache2 berkdb emacs nls perl python ruby zlib -bash-completion -java -minimal -nowebdav"

    apache2, berkdb 는 꼭 USE 플래그상에 존재하도록 해준다.

    emerge subversion

    rc-update add subversion default

3. subversion의 설정 및 사용
    (1) 그룹 및 계정 생성
        groupadd svnusers

    (2) 저장소의 root 경로를 결정한다.

        기본 설치시 /var/svn 을 가르키도록 되어있다. var 파티션은 4 Gb 정도의 여유랑이 있긴 하지만, 남아도는 /data 파티션을 사용할 것이다.

        /data/svn 디렉터리를 생성한다.
        /data/svn 디렉터리의 권한을 775 로 변경
        svnadmin create /data/svn/newface 를 실행하여 저장소를 생성한다.

        chown -R root:svnusers /data/svn/newface
        chmod -R g+w /data/svn/newface

        file:// 와 같은 형태로 접속할 것이면 위의 방법까지면 된다. 그 이외의 방법으로 접속하려면 아래의 작업을 추가로 수행한다.

        svn:// 로 접속시 

            /data/svn/newface/conf 디렉터리의 svnserve.conf 파일을 편집한다. 시간여유가 나거든 모든 주석을 다 읽어보고.. 아니라면.. 다음만 남긴다.

            [general]
            anon-access = none
            auth-access = write
            password-db = passwd

            권한은 none, read, write 가 있는데 첫라인은 익명 사용자의 권한, 둘째 라인은 인증된 사용자의 권한, 세번째 줄은 사용자 인증을 위한 사용자 id/password 가 들어있는 파일명이다.

            다음으로 passwd 파일을 편집한다.

            [users]
            testuser = asdf1234

            형식은 사용자ID=비밀번호 형태이다.

    (3) 자동 기동 방법으로는 데몬으로 실행하는 방법과 xinetd 로 실행하는 방법이 있다.

        * 만약 file:// 혹은 svn+ssh:// 으로만 접속할 경우 2-1 이나 2-2 가 필요 없다.
   
        - 데몬으로 실행 할 경우 (root 계정으로 작업)

            당연히 /etc/init.d 에 svnserve 라고 기동 스크립트가 복사 되며, rc-update add svnserve default 로 부팅시 자동 기동되도록 할 수 있다. svnserve 에서 중요한 부분은 start 부분이다. 참고로 ${..} 변수는 /etc/conf.d/svnserve 에 정의 되어있다.

             start-stop-daemon --start --quiet --background --make-pidfile
                --pidfile /var/run/svnserve.pid --exec /usr/bin/svnserve
                --chuid ${SVNSERVE_USER:-apache}:${SVNSERVE_GROUP:-apache} --
                --foreground --daemon ${SVNSERVE_OPTS:---root=/data/svn}

            이중 subversion 과 직접 적인 관련이 있거나 영향을 주는 부분은 다음과 같다.

            --exec subversion 의 실행파일을 지정한다. 물론 디폴트로 그냥 사용한다.
            --chuid Change  to  this  username/uid before starting the process 라고 start-stop-daemon 의 man 페이지에 나온다.                         ${SVNSERVE_USER:-apache}:${SVNSERVE_GROUP:-apache} 사용자와 그룹을 지정한다. ${A:-B} 는 A가 설정되어있지 않다면 B 란 뜻이다. SVNSERVE_USER 와 SVNSERVE_GROUP 은 /etc/conf.d/svnserve 에 정의 되어있다.
            --foreground When used together with -d, this option causes svnserve to stay in the foreground. This option is mainly useful for debugging. 라고 man page 에...
            --daemon Causes svnserve to run in daemon mode.  svnserve backgrounds itself and accepts and serves TCP/IP connections on  the  svn port (3690, by default). 라고 man page 에...
             ${SVNSERVE_OPTS:---root=/data/svn} subversion 으로 직접 전달 되는 인자 부분이다. 저장소의 루트를 지정한다. 역시나 ${A:-B} 는 A가 설정되어있지 않다면 B 란 뜻이다.
            * /etc/init.d 에서 실행하거나 커맨드라인에서 실행할 경우 따로 옵션을 명기하지 않는 한 /etc/conf.d/svnserve 파일을 읽는다.

            /etc/conf.d/svnserve 파일에 있는 내용 중 SVNSERVE_GROUP 을 SVNSERVE_GROUP="svnusers" 로 변경해준다.

            /etc/init.d/svnserve start 로 서브버전을 시작한다.( 물론 rc-update 로 등록 했을경우 다음 부팅시부터 자동 시작이다 )

        - xinet 으로 실행되게 할 경우 (root 계정으로 작업)

            /etc/xinetd.d/svnserve 를 편집한다.

            service svn
            {
                socket_type     = stream
                wait            = no
                user            = root
                group           = svnusers
                umask           = 002
                protocol        = tcp
                log_on_failure += USERID HOST
                port            = 3690
                server          = /usr/bin/svnserve
                server_args     = -i --root=/data/svn
                disable         = no
            }

            이중.. 데몬으로 실행과 비교해서
                user 와 group 은 --chuid
                server 는 --exec
                server_args 는 ${SVNSERVE_OPTS:---root=/data/svn/} 와 같다고 보면 된다.
       
            /etc/init.d/xinetd restart 로 xinet 을 재 시작한다.

    이 후 subversion 메뉴얼에 따라 사용하면 된다.

    완료 되었다면, svn 명령이나 subverion 클라이언트 프로그램을 이용해 svn://localhost/newface 로 접속해보자.

4. subversion과 apache의 연동 (이경우에 subversion 이 데몬이나 xinet 로 기동될 필요가 없다)

    (1) apache 사용자를 subversion그룹에 추가한다.

        gwpass -a apache subversion

    (2) 설정파일 수정
        /etc/conf.d/apache2 의 APACHE_OPTS 에 -D SVN -D SVN_AUTHZ -D DAV -D DAV_FS 를 추가한다.
        /etc/apache2/conf/httpd.conf 파일에

        # SVN
        include /etc/apache2/modules.d/47_mod_dav_svn.conf

        를 추가한다. emerge 로 설치되는 패키지들은 module 설정과 관련된 파일들을 /etc/apache2/module.d 에 설치한다. subversion 도 이 디렉터리에 47_mod_dav_svn.conf 이란 파일을 생성한다. 읽어들일 수 있도록 설정해주자.

        /etc/apache2/modules.d/47_mod_dav_svn.conf 파일을 다음과 같이 수정한다.

        <IfDefine SVN>
            <IfModule !mod_dav_svn.c>
                LoadModule dav_svn_module       modules/mod_dav_svn.so
            </IfModule>
            <Location /svn/newface>
                DAV svn
                SVNPath /data/svn/newface
                AddDefaultCharset utf-8
                #AuthType Basic
                #AuthName "Subversion repository"
                #AuthUserFile /var/svn/conf/svnusers
                #Require valid-user
            </Location>

            <IfDefine SVN_AUTHZ>
                <IfModule !mod_authz_svn.c>
                    LoadModule authz_svn_module     modules/mod_authz_svn.so
                </IfModule>
            </IfDefine>
        </IfDefine>

        * 역시나 권한 관련한 문제는 나중에 한꺼번에 다룬다.
        * SVNPath 가 실제 svn repository 가 있는 경로이고, Location 부분은 http 접근시 컨텍스트 경로이다.

    (3) 재기동 및 확인

        아파치를 재 기동한다. /etc/init.d/apahce2 reload (중지된 상태라면 start)

        http://localhost/svn/newface

        아무 에러 없이, 저장소의 파일들이 보여지면 OK!
신고
Trackback 0 Comment 0
2007.02.02 12:01

Subversion 설치 및 Eclipse와의 연동

Subversion 설치 및 Eclipse와의 연동

Summary : 현재 버전 관리 시스템으로는 CVS를 가장 많이 사용하고 있다. Subversion은 CVS가 가지고 있는 기능 외에 더 많은 기능들을 제공하고 있다. 속도 또한 CVS보다 더 좋은 상태로 현재 많은 오픈 소스 진영에서 CVS 대신 Subversion을 사용하고 있다. 이번 강좌는 Subversion의 설치에서부터 Eclipse와 연동하는 과정까지 다룬다.

Apache, Subversion설치하기

  • 1. http://httpd.apache.org/download.cgi에서 2.x 버전의 apache를 다운 받는다.
  • 2. http://subversion.tigris.org/project_packages.html에서 가장 최신의 subversion을 다운 받는다.
  • 3. 먼저 apache를 설치한다.
  • 4. 그리고 subversion을 설치한다. subversion설치중에 다음과 같은 화면이 나오는데 3번째 Apache modules부분에 체크가 되어 있는지 확인한다. 디폴트로는 체크가 되어 있을것이다.

  • 5. apache설치 디렉토리\conf\httpd.conf파일을 열어보면 중간쯤에
LoadModule dav_module modules/mod_dav.so 
LoadModule dav_svn_module modules/mod_dav_svn.so

두줄이 주석이 없는
것이 보일것이다. Subversion이 설치중에 관련 모듈을 설치하면서 주석을 삭제하기 때문이다. 자동으로
된다. 따로 할필요가 없다.

  • 6. svnadmin create 명령어로 저장소를 생성한다.

필자는 다음과 같이 수행했다.
E:\svn\repository에 저장소를 생성한다는것이다.

파일 시스템 타입으로 생성한것이다.
버클리 DB타입은 ?fs-type bdb라고 하면된다.

svnadmin --fs-type
fsfs create e:/svn/repository

  • 7. 다음처럼 유저 파일을 생성한다. 물론 이때 path가 안걸려 있을때는 아파치 설치디렉토리밑에
    bin디렉토리를 path에 걸어주고 다시 실행한다.

htpasswd -cm
e:/svn/svn-auth-file 유저명

-> 여기서 c옵션은 새로운 파일 생성, m옵션은
md5타입으로 암호화하는것을 의미한다.

필자는 htpasswd -cm
e:/svn/svn-auth-file fromm0 으로 명령을 수행했다.

htpasswd -m
e:/svn/svn-auth-file 유저명

-> 따라서 이건 해당 유저의 패스워드만
바꾸는것이다.

  • 8. httpd.conf파일에 저장소 관련 셋팅 추가하기.

파일 검색해서 Location이
위치한 부분 마지막에 다음과 같이 추가해준다.

<Location /repos> 
  DAV svn
  SVNPath e:/svn/repository

  Require valid-user

  # how to authenticate a user
  AuthType Basic
  AuthName "Subversion repository"
  AuthUserFile e:/svn/svn-auth-file
</Location>

이 셋팅엔 여러가지 방법이 있다. 자세한 내용은 매뉴얼을 참조하기 바란다.

<Location>
태그내의 /repos는 나중에 http로 접근할 때 http://서버주소/repos형식으로 붙는다.

SVNPath : 저장소 위치를 적어준다. 여러 개의 저장소를 생성할때는 SVNParentPath라고 적어주면
된다.

Require : valid-user라는 값은 승인된 유저만 접근이 가능하다는 것을 의미한다.

AuthType : 인증 타입으로는 필자는 Basic인 기본타입을 사용한다.

AuthUserFile에는 위에서 셋팅한것처럼 사용자 정보가 들어가는 파일의 위치를 지정한다.

  • 9. 보통 아파치 설치후 subversion을 설치하면 아파치 관련 서비스가 사라진다. 이때는 명령창에서
    apache -k install 라고 해주면 다시 서비스가 설치된다.
  • 10. 아파치를 다시 시작 시키고 나서 웹브라우저로 http://localhost/repos 해주면
    Revision 0: / 라는 메시지를 보여준다. 물론 위처럼 설정을 했다면 인증절차를 거치게
    된다.

Eclipse와 Subversion을 연동해서 사용하기.

필자는 eclipse3.1.M4버전을 사용했다.

  • 1. 일단 eclipse용 subversion플러그인은 현재 두가지가 나와있다.

http://subclipse.tigris.org

http://ar.geocities.com/itcrespo/eclipse/

두가지 중에 필자는 위의 것을 사용한다.

  • 2. 홈페이지에서 보면 알겠지만 subclipse는 eclipse내의 software updates를
    사용한다.

Help -> software updates -> find and install를
누른다.

  • 3. search for new features to install를 체크하고 next한다.
  • 4. 다음처럼 new remote site를 추가해 준다. 그럼 sites to include in
    search에 추가가 되고, subclipse에 체크를 한 다음에 다음으로 넘어가자.

  • 5. 다음처럼. 선택한다. 그리고 몇번의 페이지 이동을 한다.

  • 6. 그럼 다음과 같은 화면이 나온다.

  • 7. 설치하고 나면 eclipse를 다시 시작할지 물어본다. 그냥 다시 시작한다.

window->preferences에 team부분을 보면 다음처럼 svn관련이 추가된걸 볼수있다.

  • 8. 메뉴에 window -> show view -> other -> svn하위의 svn
    repositories를 선택한다.

그럼 다음과 같은데 마우스 오른쪽을 클릭해서 new ->
repository location으로 새 저장소를 생성한다.

  • 9. 다음처럼 셋팅해주고 finish를 해준다.

  • 10. 그럼 svn repositories에 등록이 된다. 그리고 다음과 같이 보여준다.

필자의
경우 기존에 등록된 프로젝트가 있어서. 조금 다르게 나온다.

  • 11. 프로젝트를 생성하고 svn에 연결을 시도한다.

  • 12. 다음처럼 cvs와 svn을 선택하는 화면이 나온다.

  • 13. 셋팅이 되어 있는 svn repository를 선택하면 된다.

  • 14. 그럼 svn연결이 되면서 다음과 같은 화면이 나온다. cvs와는 조금 다르게 연결이 되었는데, ?
    표시가 보인다.

Subversion은 연결후 다시 subversion version
control등록을 해야 한다.

  • 15. 다음처럼 version control제어에 추가하고 다시 commit를 하면 연결작업이 사실상 끝난다.

강좌에 대하여

작성자 : [이동국]
작성일 : 2005년 2월 20일

문서이력 :

  • 2005년 2월 20일 이동국 문서 최초 생성

참고 자료

출처 : http://blog.naver.com/phark99?Redirect=Log&logNo=120033039226

신고
Trackback 0 Comment 0


티스토리 툴바