Raspberry Pi 보드를 SVN server로 만들기
- Tae Yeong Son
- 2017년 5월 22일
- 3분 분량
[참고자료] https://www.jeremymorgan.com/tutorials/raspberry-pi/raspberry-pi-how-to-svn-server/
Raspberry Pi 보드에 SVN server를 동작시켜서 원격의 스토리지 서버로 쓸 수 있도록 해보자.
원래 SVN의 용도는 서브버전(Subversiosn)이라고 하는 소스 코드 버전관리 프로그램을 의미한다.
네트워크로 연결되어 있는 여러 컴퓨터에 같은 소스 코드를 사용하면서 공유할 수 있도록 되는 것인데
혼자서 사용하는 경우는 그냥 원격 스토리지 서버가 되는 것이니 뭐 다르게 생각 안해도 된다.
그럼 시작해 보도록 하자.
우선 svn 설치에 사용된 Raspbian 버전은 2016-05-27-raspbian-jessie 이미지 파일을 사용한 (raspberrypi 4.4.11+) 버전이다.
설치를 시작하기 전에 vim을 설치하였고 sudo raspi-config을 사용하여 update를 진행을 우선적으로 수행하였다.
sudo apt-get update를 수행해도 된다. 어짜피 2개가 같은 것이기 때문에 편한대로 진행을 하자.
여기서는 몇가지 변경해서 되는 작업이 있기 때문에 raspi-config를 사용하자

Update를 위해서는 8번을 선택해서 진행을 하면 되고 여기서 추가적으로 진행해야 할 것은 7번 메뉴에 있다.

A1 Expand Filesystem 메뉴는 라즈베리 파이 보드에서 사용 중인 SD 카드에 용량을 늘려주는 설정이다.
여기서 svn을 사용해야 하기 때문에 많은 용량을 사용할 수 밖에 없어 용량을 늘려줘야 한다.
메뉴를 선택하게 되면 fdisk 프로그램이 자동으로 실행이 되면서 설정이 되기 때문에 걱정없이 기다리기만 하면 된다.

df -h 명령을 수행하면 현재 사용 중인 라즈베리 파이 보드에 파일 시스템 용량과 마운트 위치를 확인할 수 있다.
여기서는 총 8G의 SD 카드를 사용하고 있으며 / 가 사용 중인 용량은 7.2G 인 것을 확인할 수 있다.
이제 늘어난 용량을 가지고 svn 서버로 만들어보자.
제일 처음 수행하는 동작은 svn 프로그램을 설치하는 것이다.
$ sudo apt-get install subversion
svn 프로그램을 설치하고 난 후 우리는 디렉터리를 생성한다.

svn 서비스를 제공하기 위한 정보들이 저장되는 저장소 디렉터리를 생성하고
svn을 통해 사용할 디렉터리 경로를 생성한다.
우선은 제일 중요한 저장소 디렉터리를 생성한다.
$ mkdir /home/pi/repos
svn 서비스에 관련된 저장소 디렉터리를 생성하고 나면 svn 명령으로 프로젝트를 생성한다.
$ sudo svnadmin create /home/pi/repos/cold
프로젝트를 생성하면 디렉터리에 몇가지 파일과 디렉터리가 생성된 것을 볼 수 있다.

이제 이 위치에서 디렉터리를 하나 더 생성한다.
지금 생성하는 디렉터리가 svn에서 사용할 경로가 되기 때문에 너무 복잡하지 않도록 한다.
$ sudo mkdir cold

생성한 디렉터리 안에 간단한 파일을 하나 만들어 놓자. 안하니까 확인도 어렵고 사용도 어렵다.
$ sudo touch readme
이제 생성한 디렉터리를 연결하여 svn 서버가 사용자에게 제공할 수 있도록 하게 설정을 해보자.
$ sudo svn import /home/pi/repos/cold/cold/ file://localhost/home/pi/repos/cold/
명령 처음에 지정하는 경로는 svn에서 사용하게 될 제일 마지막에 생성한 디렉터리 경로이다.
두 번째로 지정하는 경로는 저장소 내에 svnadmin create 로 생성한 디렉터리 경로이다.
명령을 수행하면 nano 편집기가 뜨면서 코멘트를 남길 수 있게 되는데 nano를 사용할지 모른다면
컨트롤+x키를 눌러서 종료하고 c를 선택해 계속 진행하면 된다.
Log message unchanged or not specified (a)bort, (c)ontinue, (e)dit: c Adding cold/readme
Committed revision 1.
명령이 제대로 수행이 되었다면 다음과 같은 메시지를 확인할 수 있다.
이제 다음으로 svn을 네트워크를 통해 제공하기 위한 apache 서버를 설치한다.
$ sudo apt-get install apache2 libapache2-svn
apache 서버를 설치하고 svn 서버의 설정을 수정한다.
$ sudo vi /etc/apache2/mods-available/dav_svn.conf
다음 설정파일을 열어서 해당 내용을 모두 새로 입력해도 되고
설정파일의 내용을 확인하여 코멘트 처리를 삭제해도 된다.
<Location /svn>
DAV svn
SVNParentPath /home/pi/repos
AuthType Basic AuthName "Subversion Repository" AuthUserFile /etc/apache2/dav_svn.passwd # Authorization: Authenticated users only Require valid-user </Location>
설정파일 안에 해당 내용과 같이 입력하고 apache 서버를 재가동한다.
$ sudo /etc/init.d/apache2 restart
apache 서버가 재가동 되면 저장소 디렉터리의 소유자를 바꾸어서 apache 서버가 사용할 수 있도록 한다.
$ sudo chown -R www-data:www-data /home/pi/repos
이렇게 소유자를 바꾸면 ls -al 명령을 했을 때 해당 디렉터리의 소유가 바뀌어 있는 것을 확인할 수 있다.
drwxr-xr-x 4 www-data www-data 4096 May 22 10:33 repos
이제 svn을 사용할 수 있는 사용자 계정을 생성한다.
앞선 설정파일에서 허용된 사용자만 사용할 수 있도록 설정하였기 때문에 사용자를 생성해야 한다.
$ sudo htpasswd -c /etc/apache2/dav_svn.passwd [사용자명]
이렇게 사용자를 생성하면 비밀번호 설정을 위한 입력창이 생긴다. 까먹지 않도록 주의하면서 생성하자.
이제 모든 것이 완료되었다면 동작이 되는지 확인해 보도록 하자.
브라우저 주소창에 다음과 같이 입력한다.
http://[라즈베리 파이 보드 ip 주소]/svn/cold/

이렇게 되면 사용할 수 있게 된다.
윈도우에서 사용하기 위한 방법은 추후에 내용을 추가하겠다.