본문 바로가기
IT/SCM

svn 설치 및 구성

by 마이오픈마인드 2022. 3. 10.

 

 

1. svn server 설치 

   

   1.1 svn 다운로드 

      apache svn 사이트에 접속하면 source, binary package 를 다운로드 할 수 있다. 

      source 를 다운받아서 직접 컴파일 할 수도 있지만, 간단히 OS환경에 맞는 binary package를 다운 받아서 실행할 수도 있다.      

사이트 : Apache Subversion Binary Packages

 

   1.2 Binary Package - Red Hat

        OS환경별로 제공해주는 binary package가 다양하다. 

        본 블로그에는 Red hat 기준으로 설명하려고 한다.       

       - Red hat : apache subversion의 기본 client / server 버전을 설치하고 사용할 수 있다. 

                      본 페이지에서는 yum을 통해 서버에 subversion을 설치하고 세팅하였다. 

 

       - CollabNet : 솔루션 업체에서 제공해주는 community 버전이라고 할 수 있다. 

                         관리자 페이지를 제공해주기 때문에 설치 및 운용하기 좋기는 하지만 기능에 제한이 있다. (ex. 사용인원 제한, repository 생성 제한)

        1.2.1 redhat - yum 설치 

          - 설치계정 : root

          - 설치 명령어 :

yum install subversion
yum install mod_dav_svn

            

     1.3 Binary Package - Windows

      window 환경에서 제한된 인원/기능 으로 간단히 사용하려고 한다면 visualSVN 을 사용해도 유용하다. 

 

 

2. 환경구성

 

    2.1 최상위 디렉토리 구성 

           - Repository 디렉토리 :  /repo/svn/repository

           - dump 디렉토리 : /repo/svn/dump

           - 계정 및 권한 디렉토리 : /repo/svn/conf 

                               파일명 : passwd(계정), authz(권한설정)

            - 스크립트 모임 디렉토리 : 

   

   2.2 물리적 Repository 생성 및 구성정책

         2.2.1 Repository 생성

             - 수행 디렉토리 : /repo/svn/repository 

             - Repository 생성 명령어 : svnadmin create --fs-type fsfs /repo/svn/repository/신규Repository명

             - 설명 : 

                      #일반 파일시스템으로 생성

                            svnadmin create --fs-type fsfs /repo/svn/repository/신규Repository명

                      #Berkeley db 형식으로 생성

                            svnadmin create --fs-type bdb /repo/svn/repository/신규Repository명 

        2.2.2 Repository 구성

               svnadmin create 명령어 수행시 기본 디렉토리 및 설정 파일들이 생성된다.            

              - 환경설정 디렉토리 : /repo/svn/repository/신규Repository명/conf

              - 설정파일 : svnserve.conf

anon-access = none // 인증받지 않은 사용자에 대한 권한
auth-access = write // 인증받은 사용자에 대한 권한
password-db = /repo/svn/conf/passwd     // 사용자 계정 및 패스워드
authz-db = /repo/svn/conf/authz   //Repository group 및 access관리

3. Repository Dump 및 Load

        

     3.1 Repository Dump 가이드

        - Repository dump 파일관리 경로 : /repo/svn/dump

        - Repository dump 파일 생성 명령어 : 

svnadmin dump /repo/svn/repository/Repository명 | gzip -9 > /repo/svn/dump/Repository명.dump.yyyymmdd.gz

       

     3.1 Repository Load 가이드

      - Repository dump 압축 해제 명령어 : gzip -d Reository명.dump.yyyymmdd.gz

      - Repository dump 로드 명령어 :

svnadmin load /repo/svn/repository/신규Repository명 < /repo/svn/dump/Repository명.dump.yyyymmdd

 

4. 운용 스크립트 

 

  4.1 기동 스크립트

           - 디렉토리 : /sw/ci/svn

           - 파일명 : svnserve_startup.sh

           - 스크립트 내용 :

#!/bin/bash
               
 svnserve -d -r /repo/svn/repository --listen-port 기동포트

                         

   4.2 종료 스크립트

          - 디렉토리 : /sw/ci/svn

          - 파일명 : svnserve_shutdown.sh

          - 스크립트 내용 :

#!/bin/bash
                
 ps -ef | grep svnserve | grep 기동포트 | awk '{print "kill -9 " $2}' | sh

               

 

    4.3 모니터링 스크립트

          - 디렉토리 : /sw/ci/svn

          - 파일명 : svnserve_monitor.sh

          - 스크립트 내용 :

 #!/bin/bash
 Proc='svnserve'  //프로세스명
 User='ci'   //접속계정
 NumProc=`ps -ef | grep $Proc | grep $User | grep -v grep | grep -v svnserve_monitor.sh | wc -l `

 if [$NumProc = 0]
 then 
    echo "OFFLINE"
    exit 100
 else
    echo "ONLINE"
    exit 110
 fi 

 

    4.4 Repository dump 생성스크립트

          - 디렉토리 : /repo/svn/script

          - 파일명 : repository_dump_make.sh

          - 스크립트 내용 :

  #!/bin/bash
                
  DATE=${date +"%Y%m%d"}
               
  svnadmin dump /repo/svn/repository/A레파지토리명 | gzip -9 > /repo/svn/dump/A레파지토리명.dump.yyyymmdd.gz
  svnadmin dump /repo/svn/repository/B레파지토리명 | gzip -9 > /repo/svn/dump/B레파지토리명.dump.yyyymmdd.gz

            

    4.5 Repository dump 삭제스크립트

          - 디렉토리 : /repo/svn/script

          - 파일명 : repository_dump_delete.sh

          - 스크립트 내용 :

 #!/bin/bash
             
 find /repo/svn/dump -name "*.gz" -mtime +1 | awk '{ print "ls -l " $1 }' | sh
 find /repo/svn/dump -name "*.gz" -mtime +1 | awk '{ print "rm " $1 }' | sh

 

'IT > SCM' 카테고리의 다른 글

Gitlab-ce 설치 및 구성  (0) 2022.03.12