공유기 네트워크/QNAP

QNAP 재부팅 시에 SVN 자동 시작하기

zipi 2014. 7. 29. 22:05
반응형

이전 글에서 QNAP NAS에 SVN을 설치하고 apache와 연동하는 내용을 적었습니다.

한가지 문제는 재부팅 할경우 Qthttpd.sh가 초기로 복원되면서 svn을 로드하는 apache 설정까지 같이 변경됩니다. 따라서 NAS를 재부팅하면 자동으로 SVN이 시작되지 않습니다.

별도의 방법을 이용하여 이 문제를 해결하였습니다.

http://wiki.qnap.com/wiki/Running_Your_Own_Application_at_Startup

위 링크를 이용하여 처리하였고 자세한 방법을 밑에 적어둡니다.


/etc/config/qpkg.conf에는 qpkg에서 재부팅시에 실행되는 여러 스크립트가 들어 있습니다. 이곳에 직접 작성한 스크립트를 등록하여 재부팅시에 SVN이 자동으로 실행되도록 추가해 줍니다.

qpkg.conf 파일을 열어 제일 하단에 아래 문구를 추가합니다.

[SVN]
Name = SVN
Version = 1.7.7
Author = subversion
Date = 2014-07-29
Shell = /share/HDA_DATA/.qpkg/svn/svn.sh
Install_Path = /share/HDA_DATA/.qpkg/svn
QPKG_File = svn.qpkg
Enable = TRUE

QNAP이 재시작될때 SVN이름의 서비스(?)를 시작하도록 등록합니다. 해당 스크립트는 /share/HDA_DATA/.qpkg/svn 폴더에 있으며, svn.sh를 실행하도록 되어 있습니다.


이제 /share/HDA_DATA/.qpkg/svn 폴더를 생성하고 svn.sh를 생성합니다. svn.sh에 아래 내용을 적어두고 저장하고 나옵니다.

ln -sf /opt/lib/libsqlite3.so.0 /usr/lib/libsqlite3.so.0
echo "Include /etc/config/apache/extra/apache-svn.conf" >> /etc/config/apache/apache.conf

mv /etc/init.d/Qthttpd.sh /etc/init.d/Qthttpd.sh.bak
sed 's/[ $? = 0 ] || recover_conf/#[ $? = 0 ] || recover_conf/g' /etc/init.d/Qthttpd.sh.bak > /etc/init.d/Qthttpd.sh

sh /etc/init.d/Qthttpd.sh restart

위 내용중 apache-svn.conf로 되어 있어야 정상동작합니다.

QNAP NAS SVN 설치 및 Apache 연동

위 내용을 참고하여 진행하였으면 apache svn설정은 /etc/config/apache/extra/apache-svn.conf에 저장되어 있을겁니다. 위와 위치가 다를경우 위 스크립트를 변경하여 저장합니다.


마지막으로 생성한 스크립트가 동작할 수 있도록 실행 권한을 부여합니다.

chmod +x /share/HDA_DATA/.qpkg/svn/svn.sh
chmod +x /etc/init.d/Qthttpd.sh

위 두개 명령을 실행한 이후, 재부팅 해보면 SVN이 자동으로 실행됩니다.


위 내용을 자동으로 진행해주는 스크립트를 첨부합니다.

echo "[SVN]" >> /etc/config/qpkg.conf
echo "Name = SVN" >> /etc/config/qpkg.conf
echo "Version = 1.7.7" >> /etc/config/qpkg.conf
echo "Author = subversion" >> /etc/config/qpkg.conf
echo "QPKG_File = svn.qpkg" >> /etc/config/qpkg.conf
echo "Date = `date +%F`" >> /etc/config/qpkg.conf
echo "Shell = /share/HDA_DATA/.qpkg/svn/svn.sh" >> /etc/config/qpkg.conf
echo "Install_Path = /share/HDA_DATA/.qpkg/svn" >> /etc/config/qpkg.conf
echo "Enable = TRUE" >> /etc/config/qpkg.conf

mkdir -p /share/HDA_DATA/.qpkg/svn 

echo "ln -sf /opt/lib/libsqlite3.so.0 /usr/lib/libsqlite3.so.0" >> /share/HDA_DATA/.qpkg/svn/svn.sh
echo "echo \"Include /etc/config/apache/extra/apache-svn.conf\" >> /etc/config/apache/apache.conf" >> /share/HDA_DATA/.qpkg/svn/svn.sh

echo "mv /etc/init.d/Qthttpd.sh /etc/init.d/Qthttpd.sh.bak" >> /share/HDA_DATA/.qpkg/svn/svn.sh
echo "sed 's/[ $? = 0 ] || recover_conf/#[ $? = 0 ] || recover_conf/g' /etc/init.d/Qthttpd.sh.bak > /etc/init.d/Qthttpd.sh" >> /share/HDA_DATA/.qpkg/svn/svn.sh

echo "sh /etc/init.d/Qthttpd.sh restart" >> /share/HDA_DATA/.qpkg/svn/svn.sh

chmod +x /share/HDA_DATA/.qpkg/svn/svn.sh
chmod +x /etc/init.d/Qthttpd.sh

sh /etc/init.d/Qthttpd.sh restart

autoSVN.sh


위 스크립트를 딱 한번만 실행해주면, /etc/config/qpkg.conf에 관련 내용이 저장되고 재부팅시마다 SVN이 실행되도록 설정이 됩니다. 실행 이후 해당 스크립트는 제거해도 무방합니다.

위와 마찬가지로 HDA_DATA에 위치한 경우에만 가능하고, /etc/config/apache/extra/apache-svn.conf에 SVN설정이 있을 경우에만 가능합니다.

별도 위치에 설정하였다면 이름 변경을 하거나 위 스크립트를 수정하여 사용하면 됩니다.


설정이 완료되었으면 위와 같이 qpkg.conf에 SVN항목이 들어가있습니다.

반응형