티스토리 뷰
설치[편집]
root@zetawiki:~# apt-get install subversion
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libserf-1-1 libsvn1
Suggested packages:
subversion-tools db5.3-util
The following NEW packages will be installed:
libserf-1-1 libsvn1 subversion
0 upgraded, 3 newly installed, 0 to remove and 75 not upgraded.
Need to get 1,238 kB of archives.
After this operation, 4,701 kB of additional disk space will be used.
Do you want to continue? [Y/n]
root@zetawiki:~# apt-get install subversion
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libserf-1-1 libsvn1
Suggested packages:
subversion-tools db5.3-util
The following NEW packages will be installed:
libserf-1-1 libsvn1 subversion
0 upgraded, 3 newly installed, 0 to remove and 75 not upgraded.
Need to get 1,238 kB of archives.
After this operation, 4,701 kB of additional disk space will be used.
Do you want to continue? [Y/n]
설치 확인[편집]
SVN 설치 확인 문서를 참고하십시오.
[root@zetawiki ~]# svn
-bash: svn: command not found
[root@zetawiki ~]# rpm -qa | grep subversion
[root@zetawiki ~]# yum list subversion
... (생략)
Available Packages
subversion.i686 1.6.11-10.el6_5 base
subversion.x86_64 1.6.11-10.el6_5 base
- → 설치되어 있지 않으며, yum을 통해 설치가능하다.

[root@zetawiki ~]# svn
-bash: svn: command not found
[root@zetawiki ~]# rpm -qa | grep subversion
[root@zetawiki ~]# yum list subversion
... (생략)
Available Packages
subversion.i686 1.6.11-10.el6_5 base
subversion.x86_64 1.6.11-10.el6_5 base
Complete!
Complete!
확인 2[편집]
[root@zetawiki ~]# svn
Type 'svn help' for usage.
[root@zetawiki ~]# svnserve
You must specify exactly one of -d, -i, -t or -X.
Type 'svnserve --help' for usage.
- → 클라이언트 명령어(svn)과 서버 명령어(svnserve)를 바로 사용가능하다.
[root@zetawiki ~]# service svnserve status
svnserve is stopped
- → 서비스로도 등록되어 있다.
[root@zetawiki ~]# svn
Type 'svn help' for usage.
[root@zetawiki ~]# svnserve
You must specify exactly one of -d, -i, -t or -X.
Type 'svnserve --help' for usage.
[root@zetawiki ~]# service svnserve status
svnserve is stopped
저장소 생성[편집]
서버 1대에 저장소를 여러 개 생성할 수 있다. 프로젝트 저장소 폴더들이 /repos 아래에 있도록 설정할 것이다.
- 명령어
mkdir /repos
cd /repos
svnadmin create --fs-type fsfs 저장소명
ll
- 실행 예시
[root@zetawiki ~]# mkdir /repos
[root@zetawiki ~]# cd /repos
[root@zetawiki repos]# svnadmin create --fs-type fsfs project1
[root@zetawiki repos]# ll
total 4
drwxr-xr-x. 6 root root 4096 Jun 1 09:27 project1
- 여러 프로젝트를 담기 위해 반드시 저장소를 여러 개 만들 필요는 없다. 저장소 폴더 아래에 다시 프로젝트별 폴더들을 만들어 관리하면 되기 때문이다.
- 그렇다면 언제 저장소를 여러 개 만들어야 할까? 하나의 저장소는 하나의 사용자 권한 설정을 가지고 있다. 그러므로 사용자들의 권한이 구분되어야 할 때 저장소를 여러 개 두는 것이 좋다.
mkdir /repos
cd /repos
svnadmin create --fs-type fsfs 저장소명
ll
[root@zetawiki ~]# mkdir /repos
[root@zetawiki ~]# cd /repos
[root@zetawiki repos]# svnadmin create --fs-type fsfs project1
[root@zetawiki repos]# ll
total 4
drwxr-xr-x. 6 root root 4096 Jun 1 09:27 project1
/etc/sysconfig/svnserve 생성[편집]
/etc/sysconfig/svnserve 문서를 참고하십시오.
이 파일을 생성해주어야 service svnserve start/stop이 가능하다.[1]
- 명령어
echo 'OPTIONS="--threads --root 저장소최상위폴더"' > /etc/sysconfig/svnserve
cat /etc/sysconfig/svnserve
- 실행예시
[root@zetawiki ~]# echo 'OPTIONS="--threads --root /repos"' > /etc/sysconfig/svnserve
[root@zetawiki ~]# cat /etc/sysconfig/svnserve
OPTIONS="--threads --root /repos"

echo 'OPTIONS="--threads --root 저장소최상위폴더"' > /etc/sysconfig/svnserve
cat /etc/sysconfig/svnserve
[root@zetawiki ~]# echo 'OPTIONS="--threads --root /repos"' > /etc/sysconfig/svnserve
[root@zetawiki ~]# cat /etc/sysconfig/svnserve
OPTIONS="--threads --root /repos"
svnserve.conf 수정[편집]
svnserve.conf 문서를 참고하십시오.
svnserve.conf 파일을 svnserve.conf.old 로 변경하여 보존해두고 새로 작성한다.
- 명령어
cd /repos/project1/conf/
cat svnserve.conf
mv svnserve.conf svnserve.conf.old
echo '[general]' > svnserve.conf
echo 'anon-access = none' >> svnserve.conf
echo 'auth-access = write' >> svnserve.conf
echo 'password-db = passwd' >> svnserve.conf
echo 'authz-db = authz' >> svnserve.conf
cat svnserve.conf
- 실행예시
[root@zetawiki ~]# cd /repos/project1/conf/
[root@zetawiki conf]# cat svnserve.conf
### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)
... (생략)
[root@zetawiki conf]# mv svnserve.conf svnserve.conf.old
[root@zetawiki conf]# echo '[general]' > svnserve.conf
[root@zetawiki conf]# echo 'anon-access = none' >> svnserve.conf
[root@zetawiki conf]# echo 'auth-access = write' >> svnserve.conf
[root@zetawiki conf]# echo 'password-db = passwd' >> svnserve.conf
[root@zetawiki conf]# echo 'authz-db = authz' >> svnserve.conf
[root@zetawiki conf]# cat svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
- → 비로그인 접속자는 권한 없음, 로그인하면 쓸 수 있음, passwd와 authz 파일을 사용함.

cd /repos/project1/conf/
cat svnserve.conf
mv svnserve.conf svnserve.conf.old
echo '[general]' > svnserve.conf
echo 'anon-access = none' >> svnserve.conf
echo 'auth-access = write' >> svnserve.conf
echo 'password-db = passwd' >> svnserve.conf
echo 'authz-db = authz' >> svnserve.conf
cat svnserve.conf
[root@zetawiki ~]# cd /repos/project1/conf/
[root@zetawiki conf]# cat svnserve.conf
### This file controls the configuration of the svnserve daemon, if you
### use it to allow access to this repository. (If you only allow
### access through http: and/or file: URLs, then this file is
### irrelevant.)
... (생략)
[root@zetawiki conf]# mv svnserve.conf svnserve.conf.old
[root@zetawiki conf]# echo '[general]' > svnserve.conf
[root@zetawiki conf]# echo 'anon-access = none' >> svnserve.conf
[root@zetawiki conf]# echo 'auth-access = write' >> svnserve.conf
[root@zetawiki conf]# echo 'password-db = passwd' >> svnserve.conf
[root@zetawiki conf]# echo 'authz-db = authz' >> svnserve.conf
[root@zetawiki conf]# cat svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
계정 설정[편집]
/repos/project1/conf/passwd 문서를 참고하십시오.
- svn는 OS계정이 아니라 자체 계정을 사용한다.
- 해당 저장소의 conf 디렉토리에 있는 passwd를 편집하여 계정을 등록한다.
- 패스워드 분실시에도 이 파일을 열어보면 된다.
- passwd 파일을 passwd.old 로 이름을 변경하여 보존해두고 새로 작성한다.
[root@zetawiki conf]# mv passwd passwd.old
[root@zetawiki conf]# vi passwd
[users]
testuser1 = P@ssw0rd
testuser2 = P@ssw0rd

[root@zetawiki conf]# mv passwd passwd.old
[root@zetawiki conf]# vi passwd
[users]
testuser1 = P@ssw0rd
testuser2 = P@ssw0rd
(optional) 권한 없음 오류시[편집]
- 권한이 없다는 오류가 날 경우 /repos/project1/conf/authz 파일 마지막에 계정의 권한 추가
[/]
testuser1 = rw
testuser2 = rw
[/]
testuser1 = rw
testuser2 = rw
서비스 시작[편집]
svnserve 시작/중지 문서를 참고하십시오.
/etc/sysconfig/svnserve 파일을 설정해두었기 때문에 service로 시작/중지를 할 수 있다.
[root@zetawiki repos]# service svnserve start
Starting svnserve: [ OK ]
[root@zetawiki repos]# ps -ef | grep svnserve | grep -v grep
root 2581 1 0 11:12 ? 00:00:00 /usr/bin/svnserve --daemon --pid-file=/var/run/svnserve.pid --threads --root /repos
[root@zetawiki repos]# netstat -anp | grep svnserve
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2581/svnserve
- → 기본 포트인 3690 포트로 서비스 중. (다른 포트로 변경하려면 /etc/sysconfig/svnserve를 수정해야 한다.)
여기까지 되었다면 설정이 완료된 것이다. 다른 컴퓨터에서 SVN 클라이언트로 접속하면 된다.[2] 접속 URL은 svn://서버주소/proejct1 이다.

[root@zetawiki repos]# service svnserve start
Starting svnserve: [ OK ]
[root@zetawiki repos]# ps -ef | grep svnserve | grep -v grep
root 2581 1 0 11:12 ? 00:00:00 /usr/bin/svnserve --daemon --pid-file=/var/run/svnserve.pid --threads --root /repos
[root@zetawiki repos]# netstat -anp | grep svnserve
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2581/svnserve
재부팅시 자동시작 설정[편집]
[root@zetawiki repos]# chkconfig --list svnserve
svnserve 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@zetawiki repos]# chkconfig svnserve on
[root@zetawiki repos]# chkconfig --list svnserve
svnserve 0:off 1:off 2:on 3:on 4:on 5:on 6:off
- → 재부팅시에 svnserve 서비스가 자동으로 시작될 것이다.
[root@zetawiki repos]# chkconfig --list svnserve
svnserve 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@zetawiki repos]# chkconfig svnserve on
[root@zetawiki repos]# chkconfig --list svnserve
svnserve 0:off 1:off 2:on 3:on 4:on 5:on 6:off
(저장소 삭제)[편집]
주의! 저장소를 삭제하고 싶을 때만 이 문단을 참고하시라. 만들 때는 svnadmin으로 하였지만, 지울 때는 그냥 저장소 폴더를 지우면 된다.
- 명령어
service svnserve stop
rm -rf /repos/project1
ll
- 실행예시
[root@zetawiki ~]# service svnserve stop
Stopping svnserve: [ OK ]
[root@zetawiki ~]# rm -rf /repos/project1
[root@zetawiki ~]# ll
total 0
- → 깔끔하게 지워졌다
service svnserve stop
rm -rf /repos/project1
ll
[root@zetawiki ~]# service svnserve stop
Stopping svnserve: [ OK ]
[root@zetawiki ~]# rm -rf /repos/project1
[root@zetawiki ~]# ll
total 0
서비스 시작[편집]
svnserve -d -r 폴더
svnserve --daemon --root 폴더
- → 지정한 폴더를 저장소 최상위폴더로 하여 서비스를 시작한다.
- 실행예시
[root@zetawiki ~]# svnserve -d -r /home/svn
[root@zetawiki ~]# ps -ef | grep svn | grep -v grep
root 2505 1 0 11:03 ? 00:00:00 svnserve -d -r /home/svn
[root@zetawiki ~]# netstat -anp | grep svnserve
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2505/svnserve
- → /home/svn 폴더를 사용하며, 기본 포트인 3690 포트로 접속가능하다.
특정 포트로 서비스 시작[편집]
svnserve -d -r /home/svn --listen-port 포트번호
- → 기본 포트(3690) 대신 지정한 포트를 사용할 수 있다.
서비스 중지[편집]
ps로 PID 확인 후 kill
[root@zetawiki ~]# ps -ef | grep svn | grep -v grep
root 2505 1 0 11:03 ? 00:00:00 svnserve -d -r /home/svn
[root@zetawiki ~]# kill 2505
[root@zetawiki ~]# ps -ef | grep svn | grep -v grep
방법 2: service[편집]
CentOS SVN 서버 설정 문서를 참고하십시오.
서비스로 등록해 두었다면 service로 시작/중지를 할 수 있다.
[root@zetawiki ~]# service svnserve start
Starting svnserve: [ OK ]
[root@zetawiki ~]# ps -ef | grep svnserve | grep -v grep
root 2524 1 0 11:05 ? 00:00:00 /usr/bin/svnserve --daemon --pid-file=/var/run/svnserve.pid --threads --root /home/svn
[root@zetawiki ~]# service svnserve stop
Stopping svnserve: [ OK ]
[root@zetawiki ~]# ps -ef | grep svnserve | grep -v grep
댓글