서브버전 서버 · 2 min read · Jan 01, 2026

완벽한 서브버전 서버 - 데비안 레니 [ISPConfig3]

완벽한 서브버전 서버 - 데비안 레니 [ISPConfig3]

서브버전은 무료/오픈 소스 버전 관리 시스템입니다. 즉, 서브버전은 파일과 디렉토리, 그리고 그에 대한 변경 사항을 시간에 따라 관리합니다. 이를 통해 데이터의 이전 버전을 복구하거나 데이터가 어떻게 변경되었는지의 역사를 살펴볼 수 있습니다. 이러한 점에서 많은 사람들은 버전 관리 시스템을 일종의 “타임 머신”으로 생각합니다. 이 가이드는 서브버전 시스템을 설정하고 기존의 ISPConfig3 설치와 통합하여 디스크 사용량, 쿼타 및 기타 요소를 매우 친숙한 방식으로 제어할 수 있도록 도와줍니다. 언젠가는 누군가 이 과정을 사용하여 모든 것을 자동으로 수행하는 ISPConfig3 플러그인을 만들 수 있을 것입니다.

요구 사항

명백히, 이 방법은 이미 ISPConfig3이 설정되고 실행 중이어야 합니다. 아래에 설명된 단계는 ISPConfig2에서도 작동할 수 있지만, 테스트되지 않았으며 지원되지 않습니다. 아직 하지 않았다면, 계속 진행하기 전에 falko의 가이드를 따라 완벽한 서버 - 데비안 레니 [ISPConfig3]를 참조하세요.

단일 웹 사이트가 여러 개의 리포지토리를 가질 수 있도록 모든 것을 ‘svn’ 폴더 아래에 두고, 궁극적으로 리포지토리에 대한 공개 경로는 http://example.com/svn/myrepo와 비슷하게 보일 것입니다. 그러나 시작하기 전에 ‘example.com’에 대한 사이트를 생성해야 합니다. 사이트를 생성하고 쿼타 옵션을 설정하는 것은 이 방법의 범위를 벗어나지만, 이전에 해본 적이 없다면 꽤 간단합니다.

서브버전 설치

서브버전 및 필요한 아파치 모듈의 설치는 꽤 간단합니다(루트로 실행하거나 sudo를 사용):

apt-get install subversion libapache2-svn

리포지토리 생성

기본적으로 ISPConfig는 사이트를 /var/clients/clientx/weby/에 저장합니다. 리포지토리를 설정하려는 사이트에 해당하는 클라이언트 ID(x)와 사이트 ID(y)를 알아야 합니다. 기본 경로를 조정한 경우 아래 명령을 디렉토리 구조에 맞게 수정해야 합니다. 먼저 svn 디렉토리를 생성합니다(각 사이트에 대해 한 번만 수행하면 됩니다):

mkdir /var/clients/clientx/weby/svn

다음으로, 리포지토리를 생성하고 모든 것에 대한 권한을 수정해야 합니다(쿼타 확인에 중요합니다).

svnadmin create /var/clients/clientx/weby/svn/myrepo  
chown -R weby:clientx /var/clients/clientx/weby/svn  
chmod -R 770 /var/clients/clientx/weby/svn

리포지토리 공유 및 보안

우리는 아파치를 사용하여 리포지토리에 대한 접근을 공유하고 보안할 것입니다. 공유 단계는 항상 동일하지만, 리포지토리를 보안하는 세 가지 옵션이 있습니다.

  1. 공개 리포지토리 - 공개 리포지토리는 모든 사용자가 언제든지 제한 없이 파일을 다운로드하고 탐색(체크아웃) 및 업로드(커밋)할 수 있음을 의미합니다. 이는 코드의 파손으로 이어질 수 있으므로 일반적으로 권장되지 않는 리포지토리 배포 방법입니다.
  2. 공유 리포지토리 - ‘공유’ 리포지토리는 누구나 코드를 다운로드하고 탐색(체크아웃)할 수 있지만, 오직 인증된 사용자만 리포지토리에 커밋할 수 있음을 의미합니다. 이는 Sourceforge 및 Google Code와 같은 사이트가 데이터를 공유하는 방식과 유사하게 리포지토리를 보안하는 가장 일반적인 방법입니다.
  3. 비공개 리포지토리 - 비공개 리포지토리는 리포지토리에 대한 모든 작업이 인증된 사용자를 요구하며, 코드를 공유하거나 오픈 소스로 만들지 않을 때 유용합니다.

공유 또는 비공식 리포지토리를 선택한다고 가정하면, ‘인증된‘ 사용자의 사용자 이름과 비밀번호를 저장하는 비밀번호 파일을 생성해야 합니다(추가 사용자를 추가하려면 명령에서 ‘-c’ 옵션을 생략하십시오).

htpasswd -c /var/clients/clientx/weby/svn/myrepo.passwd [username1] <-- username1에 대한 비밀번호를 입력하라는 메시지가 표시됩니다.

마지막으로, 사용자가 http://example.com/svn/myrepo를 요청할 때 아파치가 무엇을 해야 하는지 지시하는 적절한 지시문을 추가해야 합니다. 사용하려는 보안 방법에 따라 아래의 적절한 지시문을 복사하여 ISPConfig의 사이트 ‘옵션’ 탭의 ‘Apache Directives’ 상자에 붙여넣으십시오(적절한 x 및 y 값으로 디렉토리를 수정하는 것을 잊지 마십시오).

공개 리포

      
        DAV svn  
        SVNPath /var/clients/clientx/weby/svn/myrepo  
    

공유 리포

      
        DAV svn  
        SVNPath /var/clients/clientx/weby/svn/myrepo  
        AuthType Basic  
        AuthUserFile /var/clients/clientx/weby/svn/myrepo.passwd  
          
            Require valid-user  
          
    

비공식 리포

      
        DAV svn  
        SVNPath /var/clients/clientx/weby/svn/myrepo  
        AuthType Basic  
        AuthName "Indemnity83 Scripts"  
        AuthUserFile /var/clients/clientx/weby/svn/myrepo.passwd  
        Require valid-user  
    

변경 사항을 적용한 후 사이트가 작동하기 시작하는 데 약간의 시간이 걸릴 수 있지만, 이 시점에서 작동하고 보안된 서브버전 리포지토리를 갖추게 됩니다. 더 추가하려면 ‘리포지토리 생성’에서 시작하여 모든 단계를 반복하십시오.

감사

이 방법이 유용하길 바랍니다. 댓글이나 수정 사항을 자유롭게 추가해 주세요.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.