일단 위 링크의 방법을 그대로 이용했고, 한글로 살짝살짝 정리하고 권한 설정 등만 추가적으로 정리. 사실 위 링크가 정리가 엄청 잘 돼있어서 별도 정리는 필요없지만... 혹시나 위 링크가 사라질까봐 별도로 하나 정리
작업하기 전에, 다음의 명령어로 최신 상태로 업데이트해주자.
sudo apt-get update
sudo apt-get upgrade
그리고 이후에 작업할 내용들은 대부분 관리자 권한이 필요하기 때문에, 다음의 명령어를 치고 진행하자
sudo su
1. 필요한 모듈 설치: subversion / apache2 / libapache2-mod-svn
(일부 libapache2-svn라 표현된 사이트가 있는데 안된다.)
apt-get install subversion apache2 libapache2-mod-svn
root@raspberry-svn:/home/pi# apt-get install -y subversion apache2 libapache2-mod-svn
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
The following additional packages will be installed:
apache2-bin apache2-data apache2-utils libapr1 libaprutil1
libaprutil1-dbd-sqlite3 libaprutil1-ldap libserf-1-1 libsvn1 libutf8proc2
제안하는 패키지:
apache2-doc apache2-suexec-pristine | apache2-suexec-custom db5.3-util
subversion-tools
다음 새 패키지를 설치할 것입니다:
apache2 apache2-bin apache2-data apache2-utils libapache2-mod-svn libapr1
libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libserf-1-1 libsvn1
libutf8proc2 subversion
0개 업그레이드, 13개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
4,455 k바이트 아카이브를 받아야 합니다.
이 작업 후 15.2 M바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf libapr1 armhf 1.6.5-1 [83.3 kB]
받기:2 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf libaprutil1 armhf 1.6.1-4 [81.7 kB]
받기:3 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf libaprutil1-dbd-sqlite3 armhf 1.6.1-4 [17.3 kB]
받기:4 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf libaprutil1-ldap armhf 1.6.1-4 [16.3 kB]
받기:5 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf apache2-bin armhf 2.4.38-3+deb10u4 [1,119 kB]
받기:6 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf apache2-data all 2.4.38-3+deb10u4 [165 kB]
받기:7 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf apache2-utils armhf 2.4.38-3+deb10u4 [235 kB]
받기:8 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf apache2 armhf 2.4.38-3+deb10u4 [251 kB]
받기:9 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf libserf-1-1 armhf 1.3.9-7 [45.6 kB]
받기:10 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf libutf8proc2 armhf 2.3.0-1 [52.6 kB]
받기:11 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf libsvn1 armhf 1.10.4-1+deb10u1 [1,174 kB]
받기:12 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf libapache2-mod-svn armhf 1.10.4-1+deb10u1 [228 kB]
받기:13 http://ftp.harukasan.org/raspbian/raspbian buster/main armhf subversion armhf 1.10.4-1+deb10u1 [985 kB]
내려받기 4,455 k바이트, 소요시간 37초 (121 k바이트/초)
Selecting previously unselected package libapr1:armhf.
(데이터베이스 읽는중 ...현재 164555개의 파일과 디렉터리가 설치되어 있습니다.)
Preparing to unpack .../00-libapr1_1.6.5-1_armhf.deb ...
Unpacking libapr1:armhf (1.6.5-1) ...
Selecting previously unselected package libaprutil1:armhf.
Preparing to unpack .../01-libaprutil1_1.6.1-4_armhf.deb ...
Unpacking libaprutil1:armhf (1.6.1-4) ...
Selecting previously unselected package libaprutil1-dbd-sqlite3:armhf.
Preparing to unpack .../02-libaprutil1-dbd-sqlite3_1.6.1-4_armhf.deb ...
Unpacking libaprutil1-dbd-sqlite3:armhf (1.6.1-4) ...
Selecting previously unselected package libaprutil1-ldap:armhf.
Preparing to unpack .../03-libaprutil1-ldap_1.6.1-4_armhf.deb ...
Unpacking libaprutil1-ldap:armhf (1.6.1-4) ...
Selecting previously unselected package apache2-bin.
Preparing to unpack .../04-apache2-bin_2.4.38-3+deb10u4_armhf.deb ...
Unpacking apache2-bin (2.4.38-3+deb10u4) ...
Selecting previously unselected package apache2-data.
Preparing to unpack .../05-apache2-data_2.4.38-3+deb10u4_all.deb ...
Unpacking apache2-data (2.4.38-3+deb10u4) ...
Selecting previously unselected package apache2-utils.
Preparing to unpack .../06-apache2-utils_2.4.38-3+deb10u4_armhf.deb ...
Unpacking apache2-utils (2.4.38-3+deb10u4) ...
Selecting previously unselected package apache2.
Preparing to unpack .../07-apache2_2.4.38-3+deb10u4_armhf.deb ...
Unpacking apache2 (2.4.38-3+deb10u4) ...
Selecting previously unselected package libserf-1-1:armhf.
Preparing to unpack .../08-libserf-1-1_1.3.9-7_armhf.deb ...
Unpacking libserf-1-1:armhf (1.3.9-7) ...
Selecting previously unselected package libutf8proc2:armhf.
Preparing to unpack .../09-libutf8proc2_2.3.0-1_armhf.deb ...
Unpacking libutf8proc2:armhf (2.3.0-1) ...
Selecting previously unselected package libsvn1:armhf.
Preparing to unpack .../10-libsvn1_1.10.4-1+deb10u1_armhf.deb ...
Unpacking libsvn1:armhf (1.10.4-1+deb10u1) ...
Selecting previously unselected package libapache2-mod-svn.
Preparing to unpack .../11-libapache2-mod-svn_1.10.4-1+deb10u1_armhf.deb ...
Unpacking libapache2-mod-svn (1.10.4-1+deb10u1) ...
Selecting previously unselected package subversion.
Preparing to unpack .../12-subversion_1.10.4-1+deb10u1_armhf.deb ...
Unpacking subversion (1.10.4-1+deb10u1) ...
libutf8proc2:armhf (2.3.0-1) 설정하는 중입니다 ...
libapr1:armhf (1.6.5-1) 설정하는 중입니다 ...
apache2-data (2.4.38-3+deb10u4) 설정하는 중입니다 ...
libaprutil1:armhf (1.6.1-4) 설정하는 중입니다 ...
libserf-1-1:armhf (1.3.9-7) 설정하는 중입니다 ...
libaprutil1-ldap:armhf (1.6.1-4) 설정하는 중입니다 ...
libaprutil1-dbd-sqlite3:armhf (1.6.1-4) 설정하는 중입니다 ...
libsvn1:armhf (1.10.4-1+deb10u1) 설정하는 중입니다 ...
apache2-utils (2.4.38-3+deb10u4) 설정하는 중입니다 ...
subversion (1.10.4-1+deb10u1) 설정하는 중입니다 ...
apache2-bin (2.4.38-3+deb10u4) 설정하는 중입니다 ...
apache2 (2.4.38-3+deb10u4) 설정하는 중입니다 ...
Enabling module mpm_event.
Enabling module authz_core.
Enabling module authz_host.
Enabling module authn_core.
Enabling module auth_basic.
Enabling module access_compat.
Enabling module authn_file.
Enabling module authz_user.
Enabling module alias.
Enabling module dir.
Enabling module autoindex.
Enabling module env.
Enabling module mime.
Enabling module negotiation.
Enabling module setenvif.
Enabling module filter.
Enabling module deflate.
Enabling module status.
Enabling module reqtimeout.
Enabling conf charset.
Enabling conf localized-error-pages.
Enabling conf other-vhosts-access-log.
Enabling conf security.
Enabling conf serve-cgi-bin.
Enabling site 000-default.
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /lib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/multi-user.target.wants/apache-htcacheclean.service → /lib/systemd/system/apache-htcacheclean.service.
libapache2-mod-svn (1.10.4-1+deb10u1) 설정하는 중입니다 ...
apache2_invoke: Enable module authz_svn
apache2_invoke dav_svn: already enabled
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for libc-bin (2.28-10+rpi1) ...
Processing triggers for systemd (241-7~deb10u5+rpi1) ...
root@raspberry-svn:/home/pi#
2. Repository 폴더 생성: 맘대로 생성해도 되겠지만, 난 일단 하라는 대로 했다. blahblah에는 당연히 본인이 원하는 이름을 넣는다.
mkdir /home/pi/repos
svnadmin create /home/pi/repos/blahblah
root@raspberry-svn:/home/pi#
root@raspberry-svn:/home/pi# mkdir /home/pi/repos
root@raspberry-svn:/home/pi# svnadmin create /home/pi/repos/blahblah
root@raspberry-svn:/home/pi#
3. SVN 테스트: 아파치랑 연동해서 웹에서 접근하는 것을 설정하기 전에, SVN이 잘 동작하는지 테스트해보는 단계.
mkdir /home/pi/temp
cd /home/pi/temp
nano temp.txt
이렇게 해서 편집기 화면에 들어가면, 아무거나 쓴 뒤 저장해보자. 그 다음 아래 명령어를 친다. 새로 생성한 temp라는 폴더 째로 SVN에 추가한다는 뜻이다.
svn import /home/pi/temp/ file://localhost/home/pi/repos/blahblah/
위 명령어를 치고 나면 해당 리비전에 대해서 설명을 적도록 나오고, 뭔가 설명을 적은 후 Ctrl+X 하면 저장되면서 리비전 1이 생성된다. 여기까지 정상이라면 SVN 테스트는 끝.
4. 웹에서 접근할 수 있도록 설정: 아파치 웹서버를 처음에 깔아서 웹에서 라즈베리파이로 접근할 수 있을 테고, SVN에도 접근할 수 있도록 설정하는 단계.
nano /etc/apache2/mods-available/dav_svn.conf
위 명령어를 통해 dav_svn.conf 파일을 열어 보면, 기본적으로 파일의 골격이 모두 짜여져 있다. 대신 모두 주석처리되어 있는데 그 중 필요한 부분만 주석을 해제해서 사용하자. 내가 해제한 부분은 아래와 같다. 원 링크 본문의 설명도 같은 내용이다.
맨 아래 여섯 줄은 권한 설정 부분인데, LimitExcept 부분은 쓰기 권한, "별도 추가" 라고 써 있는 부분은 읽기 권한을 설정하는 부분이다. 별도 추가한 부분이 없으면 아무나 주소로 접속해서 파일을 읽을 수 있다. 위와 같이 설정하면 읽기/쓰기 모두 로그인을 해야 접근할 수 있다.
5. 로그인 ID/PW 생성: 접근 권한을 설정했으니, 실제로 접근할 사용차를 추가해 주는 과정이다.
htpasswd -c /etc/apache2/dav_svn.passwd id
id 부분엔 실제로 본인이 사용할 ID를 넣어준다. ID를 처음 생성할 때는 -c 라는 옵션을 붙이고 두번째 id부터는 -c는 필요없다고 한다. 그리고 비밀번호를 변경하려면 -m이라는 옵션을 사용
htpasswd -m /etc/apache2/dav_svn.passwd id
위처럼 쓰면 같은 id에 비밀번호만 변경할 수 있다.
6. 폴더 접근 권한 변경 및 아파치 재시작
chown -R www-data:www-data /home/pi/repos
/etc/init.d/apache2 restart
여기까지 하면 셋업은 완료.
원문에 나오는 다음 과정은 리눅스에서 실제로 사용하기 위한 과정이고, 나는 윈도우 환경에서 사용할 거기 때문에... 윈도우에서 쓰려면 TortoiseSVN 을 깔고 Repository Browser로 접속한다. 아까처럼 home/pi/repos 내에 blahblah 라고 설정했으면, TortoiseSVN에 url 란에다가 http://192.168.xxx.xxx/svn/blahblah 라고 쓰면 접속된다. 192.168.xxx.xxx 부분에는 본인의 localhost IP를 적으면 된다.