Ubuntu(우분투) SVN서버 설치 및 연결 (Apache2 / Tortoise SVN)

Distributor ID: Ubuntu
Description:    Ubuntu 22.04.1 LTS
Release:        22.04
Codename:       jammy

목표

서버로 사용하고 있는 리눅스 운영체제의 본체에 SVN 서버를 설치하고 노트북과 데스크탑이 저장소에 접근 + 프로젝트의 버전관리

해당 목표의 가이드 사이트

1. 아파치 설치

먼저 HTTP URL을 사용하여 svn 서버에 액세스하려면 Apache 웹 서버를 설치해야 합니다. 

시스템에 이미 Apache 웹 서버가 있는 경우 이 단계를 건너뜁니다.

sudo apt-get update

sudo apt-get install apache2

2. SVN 서버 설치

다음 명령을 사용하여 Subversion 패키지와 해당 종속성을 설치합니다. 

또한 시스템에 Apache libapache2-mod-svn 패키지용 svn 모듈을 설치하고 재시작 합니다.

sudo apt-get install subversion

sudo apt-get install libapache2-svn #안되면 보류

sudo apt-get install libsvn-dev

sudo apt-get install libapache2-mod-svn 

sudo a2enmod dav dav_svn

sudo service apache2 restart
sudo apt-get install subversion
#
#
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  apg attr gnome-control-center-faces gnome-online-accounts ibverbs-providers libcdio-cdda2
  libcdio-paranoia2 libcdio19 libcephfs2 libcolord-gtk1 libgfapi0 libgfrpc0 libgfxdr0
  libglusterfs0 libgsound0 libgssdp-1.2-0 libgupnp-1.2-1 libgupnp-av-1.0-3 libgupnp-dlna-2.0-4
  libibverbs1 libldb2 libnfs13 librados2 librdmacm1 librygel-core-2.6-2 librygel-db-2.6-2
  librygel-renderer-2.6-2 librygel-server-2.6-2 libtalloc2 libtevent0 libwbclient0
  mobile-broadband-provider-info network-manager-gnome python3-dnspython python3-gpg python3-ldb
  python3-macaroonbakery python3-markdown python3-protobuf python3-pygments python3-pymacaroons
  python3-talloc python3-tdb rygel tdb-tools
'sudo apt autoremove'를 이용하여 제거하십시오.
다음의 추가 패키지가 설치될 것입니다 :
  libserf-1-1 libsvn1 libutf8proc2
제안하는 패키지:
  db5.3-util libapache2-mod-svn subversion-tools
다음 새 패키지를 설치할 것입니다:
  libserf-1-1 libsvn1 libutf8proc2 subversion
0개 업그레이드, 4개 새로 설치, 0개 제거 및 11개 업그레이드 안 함.
2,471 k바이트 아카이브를 받아야 합니다.
이 작업 후 9,938 k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까? [Y/n] Y
받기:1 http://kr.archive.ubuntu.com/ubuntu jammy/universe amd64 libserf-1-1 amd64 1.3.9-10ubuntu2 [50.0 kB]
받기:2 http://kr.archive.ubuntu.com/ubuntu jammy/universe amd64 libutf8proc2 amd64 2.7.0-3 [73.9 kB]
받기:3 http://kr.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libsvn1 amd64 1.14.1-3ubuntu0.22.04.1 [1,387 kB]
받기:4 http://kr.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 subversion amd64 1.14.1-3ubuntu0.22.04.1 [960 kB]
내려받기 2,471 k바이트, 소요시간 2초 (1,104 k바이트/초)
Selecting previously unselected package libserf-1-1:amd64.
(데이터베이스 읽는중 ...현재 226996개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../libserf-1-1_1.3.9-10ubuntu2_amd64.deb ...
Unpacking libserf-1-1:amd64 (1.3.9-10ubuntu2) ...
Selecting previously unselected package libutf8proc2:amd64.
Preparing to unpack .../libutf8proc2_2.7.0-3_amd64.deb ...
Unpacking libutf8proc2:amd64 (2.7.0-3) ...
Selecting previously unselected package libsvn1:amd64.
Preparing to unpack .../libsvn1_1.14.1-3ubuntu0.22.04.1_amd64.deb ...
Unpacking libsvn1:amd64 (1.14.1-3ubuntu0.22.04.1) ...
Selecting previously unselected package subversion.
Preparing to unpack .../subversion_1.14.1-3ubuntu0.22.04.1_amd64.deb ...
Unpacking subversion (1.14.1-3ubuntu0.22.04.1) ...
libutf8proc2:amd64 (2.7.0-3) 설정하는 중입니다 ...
libserf-1-1:amd64 (1.3.9-10ubuntu2) 설정하는 중입니다 ...
libsvn1:amd64 (1.14.1-3ubuntu0.22.04.1) 설정하는 중입니다 ...
subversion (1.14.1-3ubuntu0.22.04.1) 설정하는 중입니다 ...
Processing triggers for libc-bin (2.35-0ubuntu3.1) ...
Processing triggers for man-db (2.10.2-1) ...
#
#
sudo apt-get install subversion libapache2-mod-svn libapache2-svn libsvn-dev
#
#
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
E: libapache2-svn 패키지를 찾을 수 없습니다
#
#
sudo a2enmod dav dav_svn
#
#
Module dav already enabled
ERROR: Module dav_svn does not exist!
#
#
apt-get install libapache2-mod-svn
#
#
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다... 완료
상태 정보를 읽는 중입니다... 완료        
다음 패키지가 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  apg attr gnome-control-center-faces gnome-online-accounts ibverbs-providers libcdio-cdda2
  libcdio-paranoia2 libcdio19 libcephfs2 libcolord-gtk1 libgfapi0 libgfrpc0 libgfxdr0
  libglusterfs0 libgsound0 libgssdp-1.2-0 libgupnp-1.2-1 libgupnp-av-1.0-3 libgupnp-dlna-2.0-4
  libibverbs1 libldb2 libnfs13 librados2 librdmacm1 librygel-core-2.6-2 librygel-db-2.6-2
  librygel-renderer-2.6-2 librygel-server-2.6-2 libtalloc2 libtevent0 libwbclient0
  mobile-broadband-provider-info network-manager-gnome python3-dnspython python3-gpg python3-ldb
  python3-macaroonbakery python3-markdown python3-protobuf python3-pygments python3-pymacaroons
  python3-talloc python3-tdb rygel tdb-tools
'apt autoremove'를 이용하여 제거하십시오.
제안하는 패키지:
  db5.3-util
다음 새 패키지를 설치할 것입니다:
  libapache2-mod-svn
0개 업그레이드, 1개 새로 설치, 0개 제거 및 11개 업그레이드 안 함.
96.5 k바이트 아카이브를 받아야 합니다.
이 작업 후 458 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://kr.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libapache2-mod-svn amd64 1.14.1-3ubuntu0.22.04.1 [96.5 kB]
내려받기 96.5 k바이트, 소요시간 1초 (92.3 k바이트/초)
Selecting previously unselected package libapache2-mod-svn.
(데이터베이스 읽는중 ...현재 227116개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../libapache2-mod-svn_1.14.1-3ubuntu0.22.04.1_amd64.deb ...
Unpacking libapache2-mod-svn (1.14.1-3ubuntu0.22.04.1) ...
libapache2-mod-svn (1.14.1-3ubuntu0.22.04.1) 설정하는 중입니다 ...
apache2_invoke: Enable module dav_svn
apache2_invoke: Enable module authz_svn

SVN 설치 확인

svn help
svn help
#
#
usage: svn <subcommand> [options] [args]
Subversion command-line client.
Type 'svn help <subcommand>' for help on a specific subcommand.
Type 'svn --version' to see the program version and RA modules,
     'svn --version --verbose' to see dependency versions as well,
     'svn --version --quiet' to see just the version number.
Most subcommands take file and/or directory arguments, recursing
on the directories.  If no arguments are supplied to such a
command, it recurses on the current directory (inclusive) by default.
Available subcommands:
   add
   auth
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   copy (cp)
   delete (del, remove, rm)
   diff (di)
   export
   help (?, h)
   import
   info
   list (ls)
   lock
   log
   merge
   mergeinfo
   mkdir
   move (mv, rename, ren)
   patch
   propdel (pdel, pd)
   propedit (pedit, pe)
   propget (pget, pg)
   proplist (plist, pl)
   propset (pset, ps)
   relocate
   resolve
   resolved
   revert
   status (stat, st)
   switch (sw)
   unlock
   update (up)
   upgrade
Subversion은 형상관리를 위한 도구입니다.
더 상세한 정보를 위해서는 http://subversion.apache.org/ 를 방문하세요

3. SVN 저장소 만들기

다음 명령을 사용하여 이름이  myrepo 인 첫 번째 svn 리포지토리를 만듭니다 . 

또한 새로 생성된 디렉터리에 필요한 권한을 설정합니다.

sudo mkdir -p /var/lib/svn/ 

sudo svnadmin create /var/lib/svn/myrepo 

sudo chown -R www-data:www-data /var/lib/svn 

sudo chmod -R 775 /var/lib/svn

저장소가 생성되면 자동으로 파일이 만들어 집니다.

4. Subversion용 사용자 만들기

이제 /etc/apache2/dav_svn.passwd  파일 에 첫 번째 svn 사용자를 만듭니다  .

 이 사용자는 체크아웃, 커밋 프로세스를 위해 svn 저장소 인증에 사용합니다.

sudo touch /etc/apache2/dav_svn.passwd

sudo htpasswd -m /etc/apache2/dav_svn.passwd "원하는 아이디"

# 추가 사용자를 생성하려면 다음 명령을 사용

sudo htpasswd -m /etc/apache2/dav_svn.passwd "아이디1"

sudo htpasswd -m /etc/apache2/dav_svn.passwd "아이디2"

5. Subversion으로 Apache 구성

Subversion Apache 모듈 패키지는  /etc/apache2/mods-enabled/dav_svn.conf 구성 파일을 생성합니다 . 

필요한 사항을 변경하기만 하면 됩니다.

Alias /svn /var/lib/svn
<Location /svn>
   DAV svn
   SVNParentPath /var/lib/svn
   AuthType Basic
   AuthName "Subversion Repository"
   AuthUserFile /etc/apache2/dav_svn.passwd
   Require valid-user
     
</Location>
# 재시작 
sudo service apache2 restart

도메인의 리디렉션으로 SVN이 연결이 안되는 문제가 생김

Alias 부분을 주석처리 + 따로 포트를 열어서 해결

/etc/apache2/ports.conf 수정

/etc/apache2/sites-available/000-default.conf 수정

URL 연결 시 IP : 포트 로 접근

6. 저장소에 접근

Tortoise SVN 설치 및 접속의 설명 아래의 글을 참고해주세요

원하는 파일 위치에서 Checkout

URL을 통하여 연결 / 저는 리디렉션 때문에 도메인을 사용 못하고 IP로 연결했습니다.

성공하면 폴더가 체크 표시

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤