Synology NAS DS415+에 운영하던 Subversion(이하 svn)을 CentOS로 이관해야할 일이 생겼습니다.
1. CentOS에 svn 설치
2. NAS의 svn Repository dump
3. CentOS의 svn에 dump 파일 load
1. CentOS에 svn 설치
난 CentOS에 svn 설치한 경험이 없다. 하지만 걱정하지 않는다. 우선 구글링을 합니다.
유능하신분들의 가르침을 받아 (꾸벅꾸벅) 설치방법을 확인 후 진행합니다.
하지만 서버에서 yum 명령어를 실행시 오류가 자꾸 발생합니다. 왜지??
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/repo/arch combination/
removing mirrorlist with no valid mirrors: /var/cache/yum/i386/6/base/mirrorlist.txt
Error: Cannot find a valid baseurl for repo: base
다시 구글링.
lhjin.tistory.com/entry/CentOS-6-yum-update-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0-%EB%B0%A9%EB%B2%95
서버의 OS version 확인을 우선 해봅니다.
cat /etc/system-release.
CentOS 6.9 (final)로 확인이 되지 위에서 검색한 내용을 적용해도 되겠다 싶어 명령어를 실행해봅니다.
echo "https://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt
echo "http://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt
echo "http://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt
문서를 보면 다들 root 계정으로 작업을 진행하셨습니다. 그래서 저도..
su -
명령어를 입력하고 비밀번호를 입력한 다음.
yum -y install subversion
subversion 설치 끝!!!
테스트를 위해 똑같이 repository를 생성
cd /home
mkdir svn
cd svn
svnadmin create --fs-type fsfs svnRepo
OR
svnadmin create svnRepo
* --fs-type fsfs는 기본값이므로 생략해도 됩니다.
# svnadmin help create
create: 사용법: svnadmin create REPOS_PATH
REPOS_PATH 에 새로운 빈 저장소를 생성합니다.
옵션:
--bdb-txn-nosync : 트랜잭션을 커밋에서 fsync를 비활성화합니다[Berkeley DB]
--bdb-log-keep : 자동 로그 파일 삭제를 비활성화 합니다 [Berkeley DB]
--config-dir ARG : arg로 지정된 디렉토리에서 사용자 구성화일을 읽습니다
--fs-type ARG : 저장소 타입: 'fsfs' (기본값) 또는 'bdb'
--pre-1.4-compatible : Subversion 1.4 버전 이전과 호환되는 포맷 이용
--pre-1.5-compatible : Subversion 1.5의 하위 버전과 호환되는 포맷 이용
--pre-1.6-compatible : Subversion 1.6 버전 이전과 호환되는 포맷 이용
설치와 Repository까지 만들었으니PC에서 한번 접속을 시도해봅니다. (두근두근)
svn://아이피 혹은 URL/svnRepo
하지만....
시간이...
흐르고...
기다려봐도...
응답이 없습니다...
서버로 ping도 잘나가고 서버에서 nestat 확인결과 포트도 정상적으로 오픈되어있는데..
qjadud22 님의 글을 다시 읽어보니 방화벽 설정값을 변경을 빼먹었었네요.
1) vi /etc/sysconifg/iptables
2) #추가
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
3) service iptables restart
2. NAS의 svn Repository dump
이제 NAS에 있는 svn 소스를 dump를 받아야합니다.
예전엔 그냥 repository를 모두 압축해 변경될 위치로 그냥 압축을 풀어주기만 해도 됐었던 것 같은데..
뭔가 잘 안될 것 같은 느낌과 확신이 들지 않아 다시 구글링.
위 글의 내용을 보면 저장소 위치에서 dump 파일을 생성하고 dump 파일을 다시 load 해주면 된다 했다.
간단하다 생각했지만 예상치 못한 난관이 있었습니다.
우선 NAS에서 ssh 접속을 할 수 있게 환경을 구성해야합니다.
제어판 > 터미널 및 SNMP > 터미널 > SSH 서비스 활성화를 체크해줍니다.
기본으로 22번 포트를 사용하곤하는데 저는 임의로 포트번호를 변경해줬습니다.
그리고 방화벽이 설정되어있으시다면 해당 포트번호를 방화벽에 설정하여 통신할 수 있도록 설정해줘야합니다.
설정되어있지 않다면 패쓰!
Window PC에서 터미널을 열고 ssh 계정@아이피주소 -p 39022를 입력하고 비밀번호를 입력하면 접속이 됩니다.
만약 접속이 되지 않으신다면 계정의 권한을 다시 한번 확인해봐야합니다.
근데 결론부터 말씀드리자면 svn dump를 받기 위해선 root 혹은 관리자 계정으로 접속해야합니다.
설치된 패키지들은 대부분 owner와 group이 root로 설정되어있어서 그렇습니다.
1. root 계정으로 접속시 비밀번호는 admin 계정의 비밀번호와 동일합니다. (admin 계정을 사용중지시켜놔도 root로 접속이 되는 엄청난 일이...;;;;;; )
작업을 끝내고 후다닥 SSH 서비스 활성화 부분을 체크해제합니다.
2. 관리자 계정으로 접속했을 경우엔 sudo -i를 통해서 root로 스위치 해야하구요.
제가 사용중인 DS 415+에선 어쩐일인지 ssh 접속시 BusyBox 이라는 shell로 접속이 되어 sudo 명령어가 실행되지 않아 그냥 root 계정으로 직접 접속했습니다. 보안상 너~무나도 위험한 짓거리인진 알지만 어쩔수 없으니 할 수 밖에 없네요.
DSM 버전이 낮아서 그런가...;;; 업데이트가 전혀 되어있지 않습니다. 사실상 방치 수준의 NAS.
조만간 6.x 로 업데이트를 해야겠네요;;;
어찌어찌 root 권한을 얻었다면
svnadmin dump repository디렉토리 > repository디렉토리.dump 명령어를 실행하여 dump 파일을 생성합니다.
생성된 dump 파일을 다운로드 받아 CentOS 서버에 업로드해주면 load 준비가 끝납니다.
3. CentOS의 svn에 dump 파일 load
svnadmin load repository디렉토리 < repository디렉토리.dump
이렇게 해주면 끝입니다.
작업을 진행하며 크게 어려움을 겪었던 부분은
1. yum 명령어가 동작되지 않았던 점
2. 방화벽 포트 오픈을 해주지 않아 헤맸던 점
3. NAS에 ssh 접속이 잘 되지 않았던 점
비슷한 작업일지라도 환경에 따라 세세하게 체크해야하는 부분들이 많습니다.
유능한 분들의 소중한 기록 덕분에 작업을 완료할 수 있었던 것 같습니다.
이 글 또한 어느누군가에게 도움이 되길 바랍니다.
'ETC' 카테고리의 다른 글
CMD에서 바로가기 링크 만들기 (1) | 2021.09.14 |
---|---|
아침일기 #1 - 20210830 (0) | 2021.08.30 |
[TortoiseSVN] 자동 업데이트하기. (0) | 2017.08.09 |
[Android] scrollbarStyle (0) | 2015.02.04 |
윈도우 창 화면 모서리에 올리면 창 자동 최대화 설정 해제 (0) | 2015.01.02 |