2016년 9월 6일 화요일

Git : Bonobo 를 이용하여 Git Server 구축하기



소스 관리에 Git 를 많이 쓰지만, Git Server 가 없으면 혼자서만 소스를 관리하는 것이라 그닥 의미는 없다.

소스 관리 툴을 쓴다는 것은 역시 다수의 사용자가 공동으로 소스를 관리하는 것을 목적으로 쓰는 것이므로, Git Server 가 필요하다.



문제는 Git Server 구축하기가 생각보다 만만치 않다는 것.

보통 웹서버에 Git 베이스 파일을 올려 놓고 배포하거나, SSH 를 이용를 이용해 관리를 하는데, 웹서버를 이용하는 것은 인증과 Push 가 까다로워 거의 그냥 오픈 소스 배포용으로 쓰는 편이고, SSH 를 이용하는 것은 인증도 되고 Push 가 되는 거의 유일한 방식이라 일반적인 프로젝트에선 이 방식을 쓰지만... 설정하기가 제법 까다롭다.

그래서 등장한 것이 "Bonobo" !!

간단한 설치로 Git Server 구축을 할 수 있도록 도와 준다.
단점이 있다면 IIS 가 있어야 된다는 것과 .Net 4.0 이상이 설치 되어 있어야 된다는 것 정도?

배포처 : https://bonobogitserver.com/


여기서 파일을 다운 받아 저장소로 사용할 폴더를 하나 생성해 압축을 풀어 놓으면 된다.


... 이렇게... 압축을 푼 폴더명은 원하는 대로 지정하면 된다.
이제, 저 폴더를 IIS 에서 웹사이트로 등록해 관리하게 된다.


일단 IIS 에서 웹사이트 하나를 생성한다.
사이트 명은 그냥 뭐... 적당히 ... 쓰고 싶은걸로 아무거나...


나의 경우는 "D:\Git_Server" 에다 "Git.Server" 라는 폴더를 생성해, "D:\Git_Server" 를 웹루트로 지정해 사이트를 등록했다.

그러면 위와 같이 생성한 사이트에 "Git.Server" 라는 폴더 (다운 받은 파일의 압축을 푼 폴더) 가 보이는데...


이 폴더를 "응용 프로그램으로 변환" 을 한다.



변환할 때 "응용 프로그램 풀" 을 "ASP.NET v4.0" 으로 지정해야 한다.
즉, 시스템에 ".NetFrameWork 4.0" 이상이 설치되어 있어야 한다.


이렇게 응용프로그램으로 등록한 후, 압축을 푼 폴더에 보면 "App_Data" 라는 폴더의 권한을 설정해 주어야 한다.


폴더 속성에서 "보안" 탭에서 "편집" 을 선택해서...


"Users" 그룹의 사용권한에 "수정", "쓰기" 권한을 허용해 준다.



IIS 의 인증도 위와 같이 설정해 주어야 하나, 일반적으로 이미 저렇게 설정되어 있을 것이다.

여기 까지 설정했다면, 이제 웹브라우져에서 해당 사이트를 열어 본다.
URL 은 설정 환경에 따라 다르겠지만, 나의 경우는 "http://localhost:911/Git.Server" 로 접속했다.

"localhost:911" 인 이유는 나는 포트를 "911" 를 지정했기 때문.


이렇게 웹사이트를 열어 보면...


요렇게 로그인 창이 뜬다.
최초 설치시에는 기본값으로 Id : admin / Pass : admin 으로 지정되어 있다.
물론, 패스워드는 로그인 후 변경 할 수 있다.

그 아이디로 로그인해 보면...


이렇게 썰렁한 화면이 나타난다.
뭐... 이렇게 나오면 잘 설치가 된 것이다.

상단의 메뉴에서 "Users" 메뉴를 선택해 보면, "admin" 계정 하나만 등록되어 있는 것이 보인다.


일단 사용자를 하나 추가하자.
물론 Admin 계정을 이용해도 되지만, 그렇게 쓸거면 굳이 Git 까지 써가며 소스 관리할 의미가 없지...

원하는 아이디를 생성하면...


요렇게 계정이 추가됨.


이제 저장소를 추가해 보자.
"Repositories" 메뉴에서 "Create new repository" 를 선택하면 된다.


여기서 저장소 명을 지정해 주고, 등록되어 있는 아이디 중에서 누가 사용가능하고, 누가 관리자 인지를 지정해 준다.


그럼 이렇게 저장소가 똻 등록됨.

저장소를 클릭해 보면 상세 정보가 나오는데, 여기서 "General Url" 을 잘 기억해 놓아야 한다. 이걸로 사용자들이 Push / Pull 을 할 것이기 때문.


참고로 저장소를 생성하면 서버의 "App_Data" 폴더에 지정한 저장소 명으로 폴더가 생성된다. 여기에 Push 한 파일들이 쌓임.

이제 서버가 생성되었으니, 로컬 사용자 쪽에서 소스를 "Push" 를 해보자.


일단 사용자 쪽에서 저장소를 하나 만들어 준다.


생성된 저장소에 아무거나 파일을 하나 생성해 놓고 커밋을 한다음, "Push" 를 한다.


푸시 창에서 원격서버에 푸시를 해야 하므로 "Remote" 의 "관리" 를 선택.


Git Server 에 나오는 "General Url" 을....


원격의 URL 로 지정한다.
원격 이름은 자동으로 "origin" 으로 지정된다.


이렇게 저장한 후, "Remote" 를 방금 등록한 "origin" 으로 설정하고 "확인" 버튼을 클릭하면...


요렇게 인증창이 뜨는데, 여기에 관리 페이지에서 생성한 아이디를 사용해 로그인 한다.


그럼 이렇게 정상적으로 "Push" 가 진행됨.


관리 페이지에서 저장소 내역을 보면 "Push" 한 파일이 등록되어 있는 것을 확인 할 수 있다.

"Bonobo" 를 이용하면 이렇게 쉽게 Git Server 를 만들어 관리 할 수 있다.
문제는 SSH 를 이용하는 방식에 비해 보안이 좀 ...

그래서, 보안이 중요한 프로젝트라면 "Bonobo" 를 사용시 https 를 이용한 SSL 통신을 사용할 필요가 있다.