Git의 날개, Gitolite 셋팅하기

Git을 설치하고 사용하시다 보면,
개인 용도를 벗어나 협업 도구로 확장해야할 때가 생깁니다.

이 때 GitHub 처럼 꾸며낼 수 없을까? 라는 고민들 많이하시게 되는데요,
그럴 때 사용하는 솔루션이 바로 GitLab  입니다.
그런데 오늘 이 GitLab에 대해서 이야기하려는 것이 아니고요,
GitHub 정도는 아니지만, 충분히 손쉽게 멀티유저를 위한 Git 환경을
셋팅할 수 있는 도구 Gitolite 의 설치 방법을 소개드리려고 합니다.

Gitolite는  Gitosis의 후속버젼입니다.
Gitolite를 설치하실 경우엔 GitLab이 Gitolite 기반으로 동작하기 때문에
쉽게 추가 설치가 가능하십니다.

아래는 설치 방법입니다.

1)당연히 먼저 서버에 git을 설치합니다.

2)ssh-keygen을 이용해서 클라이언트 PC에서 public/private 키 파일을 만듭니다.
이 때 패스워드를 입력하셔도 되지만, 추후 셋팅이 가능하기 때문에
패스워드 없이 키를 생성하셔야 설치가 쉽습니다.
이름은 아무거나 주셔도 되고, 그냥 엔터를 치실 경우
맥을 기준으로 Home Folder에 .ssh 디렉토리 아래
id_rsa 라는 개인키와 id_rsa.pub키가 발생됩니다.

3)생성된 pub 키를 서버에 보냅니다.
ftp를 이용하셔도 되고, 간단히 scp 명령을 이용하셔되 됩니다.

4)서버에서 git 이라는 유저를 생성합니다.

이 때 gitolite 기본 리파지토리가 git 유저의 홈디렉토리에 생성되기 때문에,

git유저의 홈디렉토리를 변경하면 자연적으로 git 리파지토리또한 변경됩니다.
git 리파지토리 위치를 변경하시려면 gitolite 설치하시기 전에 미리 git 유저의 홈디렉토리를 변경하세요.
5)git이라는 유저로 변경 접속합니다. 기존 루트로 접속했을 경우엔 아래 명령으로 유저 전환

6)후에 git clone으로 gitolite 다운 받고 설치 합니다.

이 때 조금전 생성한 pub키를 이용하여 아래 명령으로 설치를 합니다.
반드시 gitolite 설치를 git 유저로 해야합니다. (참고: http://sitaramc.github.com/gitolite/index.html#qi )
gl-setup git.pubgitolite 설치 시에 쓰일 명령 경로를 셋팅해달라는 메세지가 나올 수 있습니다.
이경우
홈디렉토리에 .bashrc 파일에
한줄을 추가하신 후에 bashrc를 다시 로딩 시킵니다.
 이 경우 그 후에 먼저 생성 했던 퍼블릭 키를 가지고
다시 설치 명령을 줍니다. (주의 반드시 git 유저로 하셔야 합니다.)

에러 없이 무사히 통과 되셨다면 설치 완료~~~~~
가끔씩 펄쪽 버젼 문제로 에러가 나시는 분들 있으십니다.
그경우 펄 버젼을 최신 버젼으로 업데이트 하시거나,
perlbrew 를 사용하시어 최신 버젼으로 돌리시면 됩니다.

7) ~/.ssh/config 파일을 만들고 내용을 채웁니다.

접속 서버 도메인과 개인키 경로를 설정해줍니다.

8)클라이언트에서 gitolite-admin.git을 cloning합니다.

이 리파지토리가 바로 git 유저들의 권한과 각각의 git 리파지토리를
관리할 수 있게 하는 Admin repo 입니다.
하시면 접근 가능한 git repo를 보실 수 있고,

하시면 repo의 cloning이 가능합니다.9)클라이언트 gitolite-admin 디렉토리에서
conf  디렉토리 아래에서 gitolite.conf 파일을 수정하여
유저와 리파지토리를 추가합니다.10)유저를 추가하였을 경우에는
해당 유저의 ssh public key를 받습니다.
이 때 주의할 점은 ssh-keygen 하실 때 password를 설정하지 않는 것입니다.

private키는 해당 아이디로 접속하시고자하는 pc의 ~/.ssh 디렉토리아래에 넣습니다.
gitolite-admin/keydir 디렉토리에 받은 public key를 넣고
git add / git push / git commit을 하면 자동으로 유저의 리파지토리가 생성됩니다.

여기까지가 대략적인 git 설치와 gitolite 설치,그리고 gitolite Admin을 통한 리파지토리 관리까지 설명했습니다

gitolite는 git의 날개라고 볼 수 있습니다.

gitolite를  적용한 장점은 아래와 같습니다.

1) 각 개인이 접근할 수 있는 라파지토리 권한을 설정할 수 있고,
2) 원격 서버의 리파지토리와 유저의 생성 및 관리를 정말 쉽게할 수 있습니다.
3) 원격 서버 유저는 오직 git 밖에 생성되고 나머지는 모두 가상으로 생성되어 돌아가므로 깔끔한 서버 관리가 가능합니다.
4) 조금 익숙해지면 GitLab을 설치하여 GitHub과 비슷한 사내 버젼 관리 시스템을 만들 수도 있습니다.

자, 망설이지 마시고 지금 시작하세요~ Git and Gitolite~~~!!! ^^;

 

 

Update 2015.6.25 : gitolite를 셋팅하는 정도의 수고라면, 개인적으로 Golang 기반의 Git Server Solution인 Gogs를 사용해보기를 추천한다. Giolite에는 없는 GUI 기능들이 있어서 GitHub과 비슷한 느낌을 내 준다. Gitlab도 있지만 아직까지는 셋팅이 Gogs가 훨씬 간단하다.