ubuntu 설정svn 서버

원문 출처:https://wiki.ubuntu.com/SubVersion원문 작성자: ubuntu.com


설치


다행히도 Subversion은 main 저장소에 포함되어 있습니다.따라서 Subversion을 설치하려면 간단하게 실행하십시오.
$ sudo apt-get install subversion
$ sudo apt-get install libapache2-svn

의존 관계 오류가 보고되면 해당 패키지를 찾아 설치하십시오.다른 문제가 있으면 스스로 해결하십시오.만약 이 문제들을 더 이상 해결할 수 없다면, Ubuntu의 사이트, Wiki, 포럼, 메일 목록을 통해 지원을 요청하는 것을 고려할 수 있습니다.

서버 구성


상술한 소프트웨어 패키지를 설치했을 것입니다.이 섹션에서는 SVN 파일 웨어하우스를 만드는 방법과 프로젝트에 대한 액세스 권한을 설정하는 방법에 대해 설명합니다.

SVN 창고 만들기


많은 위치에 Subversion 파일 창고를 설치할 수 있는데, 그 중 두 가지 가장 자주 사용하는 것은/usr/local/svn과/home/svn이다.다음 설명에서 간단명료하게 설명하기 위해서, Subversion 파일 창고를/home/svn에 놓고, 프로젝트 이름은 간단한'my 프로젝트'라고 가정합니다.
마찬가지로 파일 창고에 대한 접근 권한을 설정하는 데 자주 사용하는 방법도 많다.그러나 이것은 설치 과정에서 가장 자주 오류가 발생하는 부분이기 때문에 우리는 이에 대해 상세하게 설명할 것이다.일반적으로 "Subversion"이라는 그룹을 만들어서 파일 창고가 있는 디렉터리를 가져야 합니다.다음은 빠른 작업 설명입니다. 자세한 내용은 관련 문서에 대한 자세한 설명을 참조하십시오.
Ubuntu 메뉴에서 시스템 -> 시스템 관리 -> 사용자 및 그룹 을 선택합니다.
그룹 탭으로 전환하기;
그룹 추가 단추 누르기;
그룹 이름은 "subversion"입니다.
그룹 구성원에 자신과 www-data(Apache 사용자)를 추가합니다.
수정을 확인하려면 OK 를 클릭하여 프로그램을 닫습니다.
또는 명령을 사용하여 위의 기능을 완료합니다(그룹을 추가하고 사용자를 그룹에 추가합니다).
sudo addgroup subversion
sudo usermod -G subversion -a www-data

또는 명령을 사용하여 그룹 파일 "sudo vi/etc/group"을 편집하여 그룹과 구성원을 추가합니다. (추천하지 않음):
$ sudo vi /etc/group

결과는 보아하니 이렇다.
$ cat /etc/group|grep subversion
subversion:x:1001:www-data,exp

subversion 그룹의 일원이 될 수 있도록 로그아웃하고 로그인해야 합니다. 체크 인(Check in, 제출 파일) 작업을 수행할 수 있습니다.
지금 아래 명령을 실행하십시오
$ sudo mkdir /home/svn
$ cd /home/svn
$ sudo mkdir myproject
$ sudo chown -R root:subversion myproject

다음 명령은 SVN 파일 웨어하우스를 만드는 데 사용됩니다.
$ sudo svnadmin create /home/svn/myproject

그룹 구성원에게 새로 저장소에 추가된 모든 파일에 대해 적절한 권한을 부여합니다.
$ sudo chmod -R g+rws myproject

위의 명령이 SVN 파일 저장소를 만들기 전에 실행되면 다음 Check in에서 다음과 같은 오류가 발생할 수 있습니다.
Can't open '/home/svn/myproject/db/txn-current-lock': Permission denied

txn-current-lock 파일을 볼 수 있는 권한과 사용자 및 그룹 정보는 다음과 유사해야 합니다.
$ ls -l /home/svn/myproject/db/txn-current-lock
-rw-rwSr-- 1 root subversion  0  2009-06-18  15:33  txn-current-lock

권한 이외에도 사용자와 그룹이 잘못되면 위의 문제가 발생하여 명령을 다시 실행할 수 있습니다.
$ sudo chown -R root:subversion myproject

접근 방식


Subversion 파일 창고는 로컬 하드디스크나 각종 네트워크 프로토콜을 통해 다양한 방식으로 접근할 수 있습니다.어쨌든 보관소의 위치는 URL로 표시됩니다.다음 표에는 다양한 URL 모드에 대한 액세스 방법이 나와 있습니다.
모드
접근 방법
file:///
로컬 하드 드라이브의 파일 웨어하우스에 직접 액세스
http://
WebDAV 프로토콜을 통해 Subversion 지원 Apache 2 웹 서버에 액세스
https://
유사http://, 지원 SSL 암호화
svn://
자체 프로토콜을 통해svnserve 서버에 접근
svn+ssh://
유사 svn://, SSH 채널 지원
이 섹션에서는 모든 방법을 통해 액세스할 수 있도록 SVN을 구성하는 방법을 살펴봅니다.물론 여기서 우리의 토론은 기본적인 방법이다.더 높은 용도를 알고 싶으시면 읽어보시기 바랍니다Subversion을 사용하여 버전 제어 온라인 전자책.

[파일 창고에 직접 액세스 (file://)


이것은 모든 접근 방식 중 가장 간단한 것이다.SVN 서비스를 사전 실행할 필요가 없습니다.이러한 액세스 방식은 로컬 SVN 파일 웨어하우스에 액세스하는 데 사용됩니다.문법:
$ svn co file:///home/svn/myproject
 
$ svn co file://localhost/home/svn/myproject

참고: 호스트 이름을 확인하지 않으면 슬래시 3개(//)를 사용해야 하고 호스트 이름을 지정하면 슬래시 2개(//)를 사용해야 합니다.
파일 창고에 대한 접근 권한은 파일 시스템의 권한을 기반으로 합니다.만약 이 사용자가 읽기/쓰기 권한을 가지고 있다면, 그/그녀는 수정을 서명/제출할 수 있다.앞에서 설명한 바와 같이 해당 그룹을 설정하면 사용자를 "subversion"그룹에 간단하게 추가하여 서명하고 제출할 수 있습니다.

[WebDAV 프로토콜을 통한 액세스(http://)


WebDAV 프로토콜을 통해 SVN 파일 웨어하우스에 액세스하려면 Apache 2 웹 서버를 구성해야 합니다.다음 코드 세션을/etc/apache2/mods-available/dav_에 추가해야 합니다svn.conf:
<Location /svn/myproject>
DAV svn
SVNPath /home/svn/myproject
AuthType Basic
AuthName "myproject subversion repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>

사용자가 로그인할 때마다 사용자 암호 확인을 해야 하는 경우 두 줄을 주석으로 지정합니다.
위의 내용을 추가하면 Apache 2 웹 서버를 다시 시작해야 합니다. 다음 명령을 입력하십시오.
sudo /etc/init.d/apache2 restart

다음은/etc/subversion/passwd 파일을 만들어야 합니다. 이 파일은 사용자가 권한을 부여한 상세한 정보를 포함하고 있습니다.사용자를 추가하려면 다음 명령을 수행할 수 있습니다.
sudo htpasswd -c /etc/subversion/passwd user_name

암호를 입력하라는 메시지가 표시됩니다. 암호를 입력하면 사용자가 설정됩니다."-c"옵션은 새로운/etc/subversion/passwd 파일을 만드는 것을 표시하기 때문에user_name이 가리키는 사용자는 파일에서 유일한 사용자가 됩니다.다른 사용자를 추가하려면 "-c"옵션을 제거하면 됩니다.
sudo htpasswd /etc/subversion/passwd other_user_name

다음 명령을 사용하여 저장소에 액세스할 수 있습니다.
$ svn co http://hostname/svn/myproject myproject --username user_name

암호를 입력하라는 메시지가 표시됩니다.htpasswd로 설정한 비밀번호를 입력해야 합니다.검증을 통과하면 프로젝트의 파일이 서명됩니다.
경고: 암호는 일반 텍스트를 통해 전송됩니다.암호 유출이 우려되는 경우 SSL 암호화를 사용하는 것이 좋습니다. 자세한 내용은 다음 섹션을 참조하십시오.

[보안 소켓(SSL)이 있는 WebDAV 프로토콜을 통해 액세스(https://)


SSL 암호화된 WebDAV 프로토콜을 통해 SVN 파일 웨어하우스 https://) 상술한 내용과 매우 유사합니다. 당신이 반드시 당신을 위해 Apache 2 웹 서버에 액세스하여 디지털 인증서를 설정하지 않습니다.
Verisign과 같은 디지털 서명을 설치하거나 자신의 디지털 서명을 설치할 수 있습니다.
Apache 2 웹 서버에 해당하는 디지털 인증서를 설치하고 구성했다고 가정합니다.현재 이전 절에서 기술한 방법에 따라 SVN 파일 창고에 접근합니다. http://를 https://로 바꾸는 것을 잊지 마십시오.어때, 거의 똑같아!

[자가용 프로토콜을 통한 액세스 (svn://)


SVN 파일 창고를 만들면/home/svn/myproject/conf/svnserve를 수정할 수 있습니다.conf에서 접근 제어를 설정합니다.
예를 들어, 다음 주석 기호를 취소하여 인증 메커니즘을 설정할 수 있습니다.
# [general]
# password-db = passwd

현재, "passwd"파일에서 사용자 목록을 유지할 수 있습니다.같은 디렉터리에서 "passwd"파일을 편집하고 새 사용자를 추가합니다.구문은 다음과 같습니다.
username = password
#( )

자세한 내용은 이 문서를 참조하십시오.
이제 로컬이나 원격으로 svn://를 통해 SVN을 실행할 수 있습니다. "svnserve"를 사용하여 svnserver를 실행할 수 있습니다. 문법은 다음과 같습니다.
$ svnserve -d --foreground -r /home/svn
# -d -- daemon mode
# --foreground -- run in foreground (useful for debugging)
# -r -- root of directory to serve
 , :
$ svnserve --help

명령을 실행하면 SVN이 기본 포트(3690)를 감청하기 시작합니다.다음 명령을 사용하여 저장소에 액세스할 수 있습니다.
$ svn co svn://hostname/myproject myproject --username user_name

서버 설정을 기반으로 암호를 입력해야 합니다.검증을 통과하면 파일 창고의 코드를 서명합니다.
파일 창고와 로컬 복사본을 동기화하려면 업데이트 하위 명령을 실행할 수 있습니다. 문법은 다음과 같습니다.
$ cd project_dir
$ svn update

SVN 하위 명령에 대한 자세한 내용은 설명서를 참조하십시오.예를 들어 co(checkout) 명령을 이해하려면 다음과 같이 하십시오.
$ svn co --help
 
$ svn --help commit
 
☎ svn help co
checkout (co):  。
 : checkout URL[@REV]... [PATH]
。。。。。

하나의 인스턴스:
☎ killall svnserve; svnserve -d -r /home/svn/
/home/svn/lj12-source/conf ☎ dog *
authz:[groups]
authz:lj12 = veexp
authz:[lj12-source:/] <- 。
authz:veexp = rw
authz:@lj12 = rw
authz:* = passwd:[users] <-2 。
passwd:veexp = icep
passwd:test = test 
svnserve.conf:[general]
svnserve.conf:anon-access = none
svnserve.conf:auth-access = write
svnserve.conf:password-db = passwd
svnserve.conf:authz-db = authz <- authz, test 。
☎ svn co svn://localhost/lj12-source --username veexp
 : <svn://localhost:3690> a712643f-661e-0410-8ad4-f0554cd88977
 : veexp “veexp” :
A lj12-source/tim.h A lj12-source/en.c
......

인증에 실패한 암호 버퍼 기록 위치, 명문 암호.1.6 버전까지는 키링 관리를 사용할 수 있습니다.암호를 디버깅하면 다음 파일을 직접 삭제하면 됩니다.
~/.subversion/auth/svn.simple/:
eea34a6f7baa67a3639cacd6a428dba4

[SSH 터널로 보호된 자체 프로토콜을 통해 접근(svn+ssh://)


구성과 서버 프로세스는 위에서 설명한 것과 같습니다."svnserve"명령을 실행했다고 가정합니다.
또한 ssh 서비스를 실행하고 접속을 허용한다고 가정합니다.이 점을 검증하려면 ssh로 컴퓨터에 로그인해 보십시오.만약 로그인할 수 있다면, 큰 성과를 거두고, 만약 그렇지 않다면, 아래의 절차를 실행하기 전에 그것을 해결하십시오.
svn+ssh://프로토콜은 SSH 암호화를 사용하여 SVN 파일 창고에 액세스합니다.아시다시피 데이터 전송은 암호화되어 있습니다.이러한 파일 웨어하우스에 액세스하려면 다음을 입력합니다.
$ svn co svn+ssh://hostname/home/svn/myproject myproject --username user_name

참고: 이 경우 SVN 파일 저장소에 액세스하려면 전체 경로(/home/svn/myproject)를 사용해야 합니다.
서버 설정을 기반으로 암호를 입력해야 합니다.ssh에 로그인하는 데 사용할 비밀번호를 입력해야 합니다. 검증을 통과하면 파일 창고의 코드를 서명합니다.
svn+ssh://프로토콜에 대한 자세한 내용은 SVN 북을 참조하십시오.
 

svnserve를 시작하고 전원을 켤 때 자동으로 실행합니다


다음 명령을 실행하여 SVN을 시작합니다.
  # sudo svnserve -d -r/home/svn
 
/etc/init.d 디렉터리에서 스크립트svnd에 감사드립니다.sh, 내용은 다음과 같습니다.
#!/bin/bash #svnserve  startup svnserve  -d -r  /home/svn
그리고 실행: update-rc.d svnd.sh defaults
두 걸음만 하면svn이 시스템을 시작할 때 시작할 수 있습니다
 
이후/etc/init를 사용할 수 있습니다.d/svn-serve start/stop/restart에서svn 서비스를 시작/정지/다시 시작합니다.
 

svnadmin을 사용하여 Repositor 이동


이전 호스트에서 실행
    # svnadmin dump /home/svn | gzip > backup.svn.gz
 
새 호스트로 복사하여 새 호스트에서 실행# gzip -d -r backup.svn.gz
# svnadmin load < backup.svn /home/svn

 
 
 
 
 
 
 
정상으로 돌아가다
 
 

좋은 웹페이지 즐겨찾기