공유기 네트워크/QNAP

QNAP NAS SVN 설치 및 Apache 연동

zipi 2014. 7. 13. 15:08
반응형

QNAP NAS에 Subversion(SVN) 설치 방법입니다.

구글링을 통하면 여러 방법이 나오지만, 오래된 내용이라 정상적으로 동작하지 않거나 apache와 연동이 제대로 안되는 부분이 있습니다. 하나하나 확인하면서 SVN 설치 및 apache 연동하여 웹에서도 정상적으로 동작할 수 있도록 하였습니다.

SVN을 설치한 기기는 TS-212P 모델로, 펌웨어 버전은 4.1.0입니다. 


1. 준비사항

ssh을 이용하여 시스템에 접근해야 합니다. 리눅스 명령어와 vi 명령어를 알아두셔야 편리합니다.

NAS 관리페이지에서 ssh 활성화를 합니다. 



App Center에서 Optware IPKG를 설치합니다. 

ssh 접속은 putty를 이용합니다. putty는 무료이니 받아둡니다.


2. SVN 설치 및 설정

Putty를 실행하고 SSH로 NAS에 접속합니다. 위와 같이 IP주소에 NAS IP주소 넣고 엔터치면 됩니다. 로그인은 NAS에 로그인하는 ID/PW로 합니다. admin 계정과 pw를 넣어주면 접속이 됩니다.

[~] # _

위와 같은 형태로 콘솔창이 나타나면 아래 명령어를 타이핑합니다.

ipkg update
ipkg install svn

update 이후 svn이 설치가 되도록 기다립니다. 인터넷으로 필요한 패키지를 다운받아 알아서 설치가 진행됩니다.


svn 저장소를 생성합니다. 생성할 위치를 정하기 위해 하드디스크가 위치한 위치를 찾습니다. df 명령어를 이용하여 하드디스크 위치를 찾습니다.

/share/HDA_DATA가 HDD가 위치한 장소입니다.(3.6TB) 해당 위치에 SVN 저장소를 만드는게 좋습니다. 다른 장소에 만들경우 용량이 부족합니다.

아래 명령어를 입력하여 SVN 저장소를 생성합니다.

cd /share/HDA_DATA
mkdir svn
cd svn
svnadmin create ./backup

하드디스크 최상위에 svn이라는 폴더를 생성하고, 그 하위에 backup이라는 저장소를 생성하는 명령어입니다. 폴더 이름, 저장소 이름은 적당히 바꿔줍니다.


3. SVN, Apache 연동

구글링에서 보면 qnap 포럼 및 몇가지 글이 나오는데 대다수 svnserve 명령어를 이용하여 SVN을 사용합니다. 이 경우 svn://IP주소/svn/backup 형식으로 사용해야 하며, 웹에서 사용이 어렵습니다.

저는 apache를 연동하여 사용하도록 하겠습니다. apache와 연동하면 http://IP주소/svn/backup 형태로 접근할 수 있고, 웹을 통해 파일 내용을 손쉽게 볼 수 있습니다.


apache 설정을 변경합니다. 해당 파일은 기기마다 또는 펌웨어 버전마다 다를 수 있습니다. 같은 기능을 하는 파일을 잘 찾으셔야 합니다.

vi /etc/config/apache/extra/apache-svn.conf

LoadModule dav_module         /mnt/ext/opt/apache/modules/mod_dav.so
LoadModule dav_svn_module     /opt/libexec/mod_dav_svn.so
LoadModule authz_svn_module   /opt/libexec/mod_authz_svn.so

<Location /svn/backup>
    DAV svn
    SVNPath "/share/HDA_DATA/svn/backup"
    AuthType Basic
    AuthName "Subversion"
    AuthUserFile "/share/HDA_DATA/svn/backup/conf/passwd"
    AuthzSVNAccessFile "/share/HDA_DATA/svn/backup/conf/authz"
 
    Require valid-user
</Location>

위와 같이 넣어줍니다. 복사해서 putty에서 우클릭하면 들어갑니다.

기존의 다른 apache 연동 글에서 첫 줄의 내용이 없어서 정상적으로 동작하지 않는 문제가 있습니다. /mnt/ext/opt/apache/modules/mod_dav.so는 기기마다 위치가 다를수 있습니다. 해당 파일이 없다면 find 명령어로 찾으셔서 넣어주셔야 합니다.


위 설정 파일을 로드하도록 변경합니다.

vi /etc/config/apache/apache.conf
제일 마지막줄에 Include /etc/config/apache/extra/apache-svn.conf 추가.


svn 모듈이 동작할 수 있도록 라이브러리 파일을 연결해줍니다.

ln -sf /opt/lib/libsqlite3.so.0 /usr/lib/libsqlite3.so.0


apache.conf가 변경되면 apache가 재시잘될 때 복구하도록 스크립트가 되어 있습니다. 이부분을 막아줘야 정상적으로 동작합니다.

cp /etc/init.d/Qthttpd.sh /etc/init.d

/Qthttpd.sh.bak
vi /etc/init.d/Qthttpd.sh

restart 하는 스크립트를 백업합니다. 그리고 해당 스크립트를 수정합니다.

is_conf_broken 부분이 conf.파일이 수정되었는지 검사하는 부분입니다. 해당 함수와 바로 밑에 recover_conf 부분을 주석처리합니다.


마지막으로 해당 저장소에 접근할 수 있도록 계정을 생성합니다.

cd /share/HDA_DATA/svn/backup/conf
/mnt/ext/opt/apache/bin/htpasswd -c passwd admin # admin 계정을 생성. 명령어 입력하면 비밀번호 생성

위와 같이 접근할 수 있는 계정을 생성합니다.


저장소에 권한을 설정합니다.

vi /share/HDA_DATA/svn/backup/conf/authz   # apache-svn.conf에서 설정한 위치. 한곳에 모아서 하면 편리함.

하단에 아래와 같이 권한을 넣어줍니다.    

[저장소이름:/]
계정1 = r
계정2 = rw

위와 같은 형태로 넣어주며 하위폴더 또한 설정이 가능합니다.

[저장소이름:/하위폴더]


위와 같이 설정을 모두 완료하였으면, apache를 재시작합니다.

/etc/init.d/Qthttpd.sh restart


이제 http://IP주소/svn/backup 으로 들어가면 SVN이 동작하는것을 볼 수 있습니다.





반응형