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 |
---|