관리 메뉴

제목없음

Ubuntu에서 Subversion 서버 포트 HTTP로 열기 본문

프로그램 작성/기타

Ubuntu에서 Subversion 서버 포트 HTTP로 열기

다람군 2012.06.30 01:54

* 현재 보고 계시는 문서는 2011년 5월 12일 날짜로 Ubuntu 11.04 Server에서 일부 기능이 access to "address" forbidden 오류가 감지되어 일부 수정된 버전입니다.

Subversion 패키지 설치

Subversion이 설치되어 있지 않은 Ubuntu 혹은 Debian 계열 리눅스 운영체제의 경우 아래 명령으로 Subversion을 설치(아래 패키지 외에 Apache2가 설치되어 있지 않는 경우 apache2 패키지도 설치한다)한다. 일부 배포판은 Subversion이 설치되어 있다. 쉘에서 svn 명령을 실행해보아 설치가 되어 있는지 확인해볼 수 있다.

 

apt-get install subversion 
apt-get install libapache2-svn
a2enmod dav_svn

 

SVN 파일 수정

위의 패키지만 설치한다고 해서 Apache2와 연동이 바로 되는 것은 아니다. 일단은 사용자의 입맛에 맞게 SVN 경로와 기타 설정을 파일 수정을 통해 해준다.

/etc/apache2/mods-available/dav_svn.conf 파일을 수정해주면 되며, 아래에 보여지는 코드는 예시 코드이다. 필요한 부분만 수정하면 된다.

# dav_svn.conf - Example Subversion/Apache configuration
#
# For details and further options see the Apache user manual and
# the Subversion book.
#
# NOTE: for a setup with multiple vhosts, you will want to do this
# configuration in /etc/apache2/sites-available/*, not here.

#  ... 
# URL controls how the repository appears to the outside world.
# In this example clients access the repository as http://hostname/svn/
# Note, a literal /svn should NOT exist in your document root.


  # Uncomment this to enable the repository
  DAV svn

  # Set this to the path to your repository
  #SVNPath /var/lib/svn
  # Alternatively, use SVNParentPath if you have multiple repositories under
  # under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
  # You need either SVNPath and SVNParentPath, but not both.
  SVNParentPath SVN저장소루트디렉터리경로

  # Access control is done at 3 levels: (1) Apache authentication, via
  # any of several methods.  A "Basic Auth" section is commented out
  # below.  (2) Apache  and , also commented out
  # below.  (3) mod_authz_svn is a svn-specific authorization module
  # which offers fine-grained read/write access control for paths
  # within a repository.  (The first two layers are coarse-grained; you
  # can only enable/disable access to an entire repository.)  Note that
  # mod_authz_svn is noticeably slower than the other two layers, so if
  # you don't need the fine-grained control, don't configure it.

  # Basic Authentication is repository-wide.  It is not secure unless
  # you are using https.  See the 'htpasswd' command to create and
  # manage the password file - and the documentation for the
  # 'auth_basic' and 'authn_file' modules, which you will need for this
  # (enable them with 'a2enmod').
  AuthType Basic
  AuthName 저장소 이름
  AuthUserFile "/etc/apache2/dav_svn.passwd"

  # To enable authorization via mod_authz_svn
  #AuthzSVNAccessFile /etc/apache2/dav_svn.authz

  # The following three lines allow anonymous read, but make
  # committers authenticate themselves.  It requires the 'authz_user'
  # module (enable it with 'a2enmod').
  #
    Require valid-user
  #


단, forbidden 오류가 나는 경우가 있기 때문에 그럴 경우 문장에 다음 옵션을 추가한다.

Allow from all
Order allow,deny

 

또한 웹으로 저장소 파일들을 보고 싶은 경우 다음 옵션을 추가한다.

SVNListParentPath on

저장소 생성

위에서 편집한 dav_svn.conf에서 설정한 SVNParentPath의 위치에 디렉터리를 하나 생성한 후 쉘에서 아래 명령을 실행하여 저장소로 만들어준다.

svnadmin create --fs-type fsfs 경로 
chown -R www-data:www-data 경로
chmod -R g+rws 경로

 

하위 저장소를 만들기 위해서는 부모 저장소 안에 디렉터리를 하나 생성한 후 위의 명령을 실행하여 저장소로 만들면 된다.

SVN 접근 계정 생성

SVN 접근 계정은 Apache2 설정을 통해 리눅스 계정으로 할 수도 있지만 우리가 위에서 설정한 설정 내역에 통해 전용 계정을 생성하도록 한다. 먼저 설정한 dav_svn.conf 파일에서 수정한, 혹은 그냥 놔둔 AuthUserFile의 위치에 해당 빈 파일을 하나 생성해준다.

그리고 나서 SVN 계정을 처음 생성하는 경우 아래 명령을 통해 계정을 추가한다.

htpasswd -c 파일경로 아이디

추가로 계정을 추가하거나 비밀번호를 변경하려는 경우 아래 명령을 통해 계정을 추가한다.

htpasswd -m 파일경로 아이디

계정을 지우려는 경우 아래 명령을 통해 계정을 제거한다.

htpasswd -D 파일경로 아이디

 

Apache2 재시작

Apache2를 재시작하면 적용이 완료된다. HTTP 프로토콜로 http://주소/svn/저장소이름 으로 접근하면 된다.

0 Comments
댓글쓰기 폼