버전 제어를 위한 Apache Subversion SVN 및 TortoiseSVN 설정에 대한 최종 가이드
작업에서 정기적으로 업데이트되는 문서, 웹 페이지 및 기타 유형의 파일을 처리해야 하는 경우 아직 수행하지 않았다면 버전 제어 메커니즘을 사용할 수 있습니다.
무엇보다도 이를 통해 귀하(그리고 잠재적인 공동 작업자 그룹도 포함)가 특정 파일에 대한 변경 사항을 추적할 수 있으며, 문제가 발생하거나 업데이트로 예상한 결과가 나오지 않는 경우 이전 버전으로 롤백할 수 있습니다. .
무료 소프트웨어 생태계에서 가장 널리 사용되는 버전 제어 시스템은 Apache Subversion(또는 줄여서 SVN)이라고 합니다. mod_dav_svn(Apache의 Subversion용 모듈)을 사용하면 HTTP와 웹 서버를 사용하여 Subversion 저장소에 액세스할 수 있습니다.
그렇다면 이제 소매를 걷어붙이고 RHEL/CentOS 7, Fedora 22-24, Debian 8/7 및 Ubuntu 16.04-15.04 서버. 테스트를 위해 IP가 192.168.0.100인 CentOS 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
몇 가지 설명:
SVNParentPath 지시문은 저장소가 나중에 생성될 디렉터리를 나타냅니다. 이 디렉터리가 존재하지 않는 경우(대개 그럴 가능성이 높음) 다음을 사용하여 디렉터리를 만듭니다.
mkdir -p /websrv/svn
이 디렉토리는 현재 Apache에서 제공되는 가상 호스트의 DocumentRoot 내부에 위치하거나 겹쳐서는 안 된다는 점에 유의하는 것이 중요합니다. 이건 정말 대단합니다!
- AuthUserFile 지시어는 유효한 사용자의 자격 증명이 저장될 파일을 나타냅니다. 모든 사람이 인증 없이 SVN에 액세스할 수 있도록 하려면 위치 블록에서 마지막 4줄을 제거하세요. 그러한 경우에는 2단계를 건너뛰고 바로 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 파일과 우리가 원하는 JavaScript 및 CSS 파일(각각 script.js 및 styles.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<을 사용하여 해당 저장소에 변경 사항을 커밋하는 방법을 설명했습니다. /강하게>.
SVN 및 TortoiseSVN에는 여기에서 적절하게 다룰 수 있는 것(특히 이전 개정판으로 돌아가는 방법)보다 훨씬 더 많은 내용이 있으므로 공식 자세한 내용 및 구성 사례는 문서(SVN 및 TortoiseSVN)를 참조하세요.
언제나 그렇듯, 궁금한 점이 있으면 주저하지 말고 알려주세요! 언제든지 아래 의견 양식을 사용하여 저희에게 연락해주세요.