웹사이트 검색

버전 제어를 위한 Apache Subversion SVN 및 TortoiseSVN 설정에 대한 최종 가이드


작업에서 정기적으로 업데이트되는 문서, 웹 페이지 및 기타 유형의 파일을 처리해야 하는 경우 아직 수행하지 않았다면 버전 제어 메커니즘을 사용할 수 있습니다.

무엇보다도 이를 통해 귀하(그리고 잠재적인 공동 작업자 그룹도 포함)가 특정 파일에 대한 변경 사항을 추적할 수 있으며, 문제가 발생하거나 업데이트로 예상한 결과가 나오지 않는 경우 이전 버전으로 롤백할 수 있습니다. .

무료 소프트웨어 생태계에서 가장 널리 사용되는 버전 제어 시스템은 Apache Subversion(또는 줄여서 SVN)이라고 합니다. mod_dav_svn(Apache의 Subversion용 모듈)을 사용하면 HTTP와 웹 서버를 사용하여 Subversion 저장소에 액세스할 수 있습니다.

그렇다면 이제 소매를 걷어붙이고 RHEL/CentOS 7, Fedora 22-24, Debian 8/7Ubuntu 16.04-15.04 서버. 테스트를 위해 IP가 192.168.0.100CentOS 7 서버를 사용합니다.

클라이언트 측(Windows 7 시스템)에서는 SVN에 대한 인터페이스로 TortoiseSVN(Apache Subversion 기반)을 설치하고 사용합니다.

테스트 환경


Server - CentOS 7
IP Address - 192.168.0.100
Client - Windows 7

1단계 – Linux에서 SVN 설치 및 구성

방금 언급했듯이 웹 인터페이스를 사용하여 SVN 저장소에 액세스하기 위해 Apache를 사용할 것입니다. 아직 설치되지 않은 경우 아래와 같이 패키지 목록에 추가하십시오.


------------------ On CentOS / RHEL / Fedora ------------------ 
yum update && yum install mod_dav_svn subversion httpd -y

------------------ On Debian / Ubuntu ------------------ 
apt-get update && apt-get install libapache2-svn subversion apache2 -y 

CentOS 7에 설치하는 동안 SVN용 Apache 구성 파일이 /etc/httpd/conf.modules.d/10-subversion.conf로 생성됩니다. 파일을 열고 다음 구성 블록을 추가합니다.


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/httpd/subversion-auth
    Require valid-user
</Location>

참고: Debian/Ubuntu에서는 /etc/apache2/mods-enabled/dav_svn.conf에 아래 줄을 추가해야 합니다. 파일.


<Location /svn>
    DAV svn
    SVNParentPath /websrv/svn
    AuthType Basic
    AuthName "Welcome to SVN"
    AuthUserFile /etc/apache2/subversion-auth
    Require valid-user
</Location>

Debian/Ubuntu에서는 dav_svn Apache 모듈을 활성화해야 합니다.


a2enmod dav_svn

몇 가지 설명:

  1. SVNParentPath 지시문은 저장소가 나중에 생성될 디렉터리를 나타냅니다. 이 디렉터리가 존재하지 않는 경우(대개 그럴 가능성이 높음) 다음을 사용하여 디렉터리를 만듭니다.

    
    mkdir -p /websrv/svn
    

    이 디렉토리는 현재 Apache에서 제공되는 가상 호스트의 DocumentRoot 내부에 위치하거나 겹쳐서는 안 된다는 점에 유의하는 것이 중요합니다. 이건 정말 대단합니다!

  2. AuthUserFile 지시어는 유효한 사용자의 자격 증명이 저장될 파일을 나타냅니다. 모든 사람이 인증 없이 SVN에 액세스할 수 있도록 하려면 위치 블록에서 마지막 4줄을 제거하세요. 그러한 경우에는 2단계를 건너뛰고 바로 3단계로 이동하세요.
  3. 이러한 최근 변경 사항을 적용하기 위해 Apache를 다시 시작하고 싶을 수도 있지만 아직 SVN에 대한 유효한 사용자와 저장소 자체를 사용하여 인증 파일을 생성해야 하므로 아직 그렇게 하지 마십시오.

2단계 - SVN에 액세스하도록 허용된 사용자 추가

이제 htpasswd를 사용하여 SVN에 액세스할 수 있는 계정의 비밀번호를 생성하겠습니다. 첫 번째 사용자의 경우에만 -c 옵션이 필요합니다.

허용된 계정과 bcrypt로 암호화된 비밀번호(-B)는 /etc/httpd/subversion-auth에 키-값 쌍으로 저장됩니다. 오늘날의 표준에 따르면 htpasswd에서 사용하는 기본 MD5 또는 SHA 암호화는 안전하지 않은 것으로 간주됩니다.


------------------ On CentOS / RHEL / Fedora ------------------ 
htpasswd -cB /etc/httpd/subversion-auth tecmint

------------------ On Debian / Ubuntu ------------------ 
htpasswd -cB /etc/apache2/subversion-auth tecmint

인증 파일에 대한 올바른 소유권과 권한을 설정하는 것을 잊지 마세요.


------------------ On CentOS / RHEL / Fedora ------------------ 
chgrp apache /etc/httpd/subversion-auth
chmod 660 /etc/httpd/subversion-auth

------------------ On Debian / Ubuntu ------------------ 
chgrp www-data /etc/apache2/subversion-auth
chmod 660 /etc/apache2/subversion-auth

3단계 - 보안 추가 및 SVN 리포지토리 생성

웹 인터페이스를 통해 SVN에 액세스하게 되므로 방화벽을 통해 HTTP(및 선택적으로 HTTPS) 트래픽을 허용해야 합니다.


------------------ On CentOS / RHEL / Fedora ------------------ 
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload 

--reload를 사용하여 방화벽 구성을 다시 로드하면 영구 설정이 즉시 적용됩니다.

tecmint라는 초기 SVN 저장소를 만듭니다.


svnadmin create /websrv/svn/tecmint

소유자와 그룹 소유자를 apache로 재귀적으로 변경합니다.


------------------ On CentOS / RHEL / Fedora ------------------ 
chown -R apache:apache /websrv/svn/tecmint

------------------ On Debian / Ubuntu ------------------ 
chown -R www-data:www-data /websrv/svn/tecmint

마지막으로 /websrv/svn/tecmint의 보안 컨텍스트를 변경해야 합니다(나중에 다른 저장소를 생성하기로 결정한 경우 이 단계를 반복해야 합니다).


------------------ On CentOS / RHEL / Fedora ------------------ 
chcon -R -t httpd_sys_content_t /websrv/svn/tecmint/
chcon -R -t httpd_sys_rw_content_t /websrv/svn/tecmint/

참고: SELinux가 비활성화된 VPS에 SVN을 설치하는 경우 마지막 두 명령이 적용되지 않을 수 있습니다.

권장 읽기: Linux에서 SELinux를 일시적으로 또는 영구적으로 비활성화하는 방법 알아보기

Apache를 다시 시작하고 저장소를 사용할 수 있는지 확인하세요.


------------------ On CentOS / RHEL / Fedora ------------------ 
systemctl restart httpd

------------------ On Debian / Ubuntu ------------------ 
systemctl restart apache2

그런 다음 웹 브라우저를 실행하고 http://192.168.0.100/svn/tecmint를 지정하세요. 1단계에서 생성한 유효한 사용자의 자격 증명을 입력하면 출력은 다음과 유사해야 합니다.

이 시점에서는 저장소에 코드를 추가하지 않았습니다. 하지만 우리는 잠시 후에 그렇게 할 것입니다.

4단계 - Windows 7 클라이언트에 TortoiseSVN 설치

소개에서 언급했듯이 TortoiseSVN은 Apache Subversion에 대한 사용자 친화적인 인터페이스입니다. GPL에 따라 라이센스가 부여된 자유 소프트웨어이며 https://tortoisesvn.net/downloads.html에서 다운로드할 수 있습니다.

계속 진행하기 전에 귀하의 컴퓨터에 해당하는 아키텍처(32 또는 64비트)를 선택하고 프로그램을 설치하세요.

5단계 – 클라이언트 컴퓨터에 SVN 리포지토리 설정

이 단계에서는 문서 내에 webapp라는 폴더를 사용합니다. 이 폴더에는 HTML 파일과 우리가 원하는 JavaScriptCSS 파일(각각 script.jsstyles.css)이 포함된 script 및 styles라는 두 개의 폴더가 포함되어 있습니다. 버전 관리에 추가하세요.

webapp을 마우스 오른쪽 버튼으로 클릭하고 SVN Checkout을 선택합니다. 그러면 원격 저장소(현재 비어 있음)의 로컬 복사본이 생성되고 버전 제어를 위해 폴더가 초기화됩니다.

저장소 URL에 http://192.168.0.100/svn/tecmint를 입력하고 로컬 체크아웃 디렉터리가 동일하게 유지되는지 확인한 후 확인을 클릭합니다.

사용자 이름과 비밀번호를 입력하고(2단계 참조) 확인을 클릭합니다.

비어 있지 않은 디렉토리로 체크아웃할지 묻는 메시지가 표시됩니다. 결제를 진행하려면 확인하세요. 완료되면 폴더 이름 옆에 녹색 확인 표시가 나타납니다.

6단계 - 변경 사항 커밋 및 파일을 원격 SVN 리포지토리에 배포

webapp을 다시 마우스 오른쪽 버튼으로 클릭하고 이번에는 Commit을 선택합니다. 그런 다음 나중에 이 커밋을 식별할 수 있도록 설명 주석을 작성하고 리포지토리에 배포할 파일과 폴더를 확인합니다. 마지막으로 확인을 클릭합니다.

파일 크기에 따라 커밋은 1분 이상 걸리지 않습니다. 완료되면 이제 웹 인터페이스에 나열된 버전 및 파일과 일치하는 버전 1에 있음을 알 수 있습니다.

여러 사람이 동일한 파일을 작업하는 경우 최신 버전으로 작업할 수 있도록 로컬 복사본을 업데이트하는 것이 좋습니다. webapp을 마우스 오른쪽 버튼으로 클릭하고 컨텍스트 메뉴에서 업데이트를 선택하면 됩니다.

축하합니다! SVN 서버를 성공적으로 설정하고 버전 제어 하에 간단한 프로젝트를 커밋/업데이트했습니다.

요약

이 문서에서는 CentOS 7 서버에 Apache Subversion 저장소 서버를 설치 및 구성하는 방법과 TortoiseSVN<을 사용하여 해당 저장소에 변경 사항을 커밋하는 방법을 설명했습니다. /강하게>.

SVNTortoiseSVN에는 여기에서 적절하게 다룰 수 있는 것(특히 이전 개정판으로 돌아가는 방법)보다 훨씬 더 많은 내용이 있으므로 공식 자세한 내용 및 구성 사례는 문서(SVN 및 TortoiseSVN)를 참조하세요.

언제나 그렇듯, 궁금한 점이 있으면 주저하지 말고 알려주세요! 언제든지 아래 의견 양식을 사용하여 저희에게 연락해주세요.