Gitosis

gitosis는 Git의 저장소를 공유하기 위해 사용하는 시스템이다.


  • gitosis를 사용하면 로컬 계정을 생성할 필요가 없다.
  • 저장소에 접근하기 위해서 SSH 프로토콜을 사용하여 보안에 강하다.
  • 저장소 서버와 개발 서버가 분리되어 사용자 계정은 개발 서버(리눅스 머신)에 존재한다.
  • selinux가 활성화 되어 있으면 /srv 디렉터리에 접근할 수 없다. 아시는 분은 댓글 좀 달아주세요.
cms.company.com - git 서버
SSH를 사용하기 때문에 호스트 이름이 정확해야 한다. 
hostname 명령어로 위와 동일한 이름이 나와야 하며 /etc/sysconfig/network 파일에서 HOSTNAME 항목을 확인한다.


dev1.company.com - 개발 서버




cms 서버의 root 계정을 git 저장소를 관리하는 기본 계정으로 설정한다.
dev1 서버의 사용자 계정은 user1 이다.



gitosis 설치방법

1. git 서버에서 작업

git 계정 추가 / 암호 설정
# useradd -d /srv/company.com/git git
기본 저장소 경로는 /srv/회사/git 이다.

gitosis를 다운받아서 설치한다.
git clone git://eagain.net/gitosis.git gitosis.git
cd gitosis.git
python setup.py install

페도라일 경우 패키지로 설치할 수 있다.
# yum -y install gitosis

2. gitosis 관리자 계정 설정

서버의 root 계정을 기본 관리자 계정으로 설정할 경우 다음과 같이 한다.
다른 서버의 계정을 사용할 경우로 과정은 동일하다.

cms # ssh-keygen

~/.ssh/id_rsa.pub 를 git 계정 디렉터리로 복사한다.
cms # scp ~/.ssh/id_rsa.pub ~git/

3. gitosis 설치
# su - git
$ gitosis-init < id_rsa.pub
$ rm id_rsa.pub
$ chmod +x repositories/gitosis-admin.git/hooks/post-update

4. gitosis 설정
git 관리용 저장소를 가져와서 저장소와 계정을 추가한다.

cms # git clone git@cms.company.com:gitosis-admin.git gitosis-admin.git


gitosis.conf 파일을 편집해서 저장소와 계정 설정을 한다.



[gitosis]


[group gitosis-admin]
members = root@cms.company.com
writable = gitosis-admin


[group swd] - 추가부분
members = user1@dev1.company.com
writable = sandbox

gitosis-admin.git 파일에서는 저장소 이름에서 .git 를 빼고 입력한다.




user1@dev1 계정의 공개키를 keydir/user1@dev1.company.com.pub 이름으로 저장한다.


모든 설정 후 커밋한다.
# git commit -a -m "user1@dev1 계정 추가"
# git push origin master

5. gitosis에 새로운 저장소 생성하기

4번에서 sandbox 저장소 설정을 한 후 다음과 같이 실제 저장소를 생성한다.

dev1 $ mkdir sandbox.git
cd sandbox.git
git init
git remote add origin git@cms.company.com:sandbox.git
git add .
git commit -a -m "initial commit for sandbox.git"
git push origin master

cd ../
rm -rf sandobx.git
git clone git@cms.company.com:sandbox.git sandbox.git



댓글

이 블로그의 인기 게시물

pidstat 명령어 프로세스 부하 보기

리눅스 채널 본딩 설정하기