Gitosis
gitosis는 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
- gitosis를 사용하면 로컬 계정을 생성할 필요가 없다.
- 저장소에 접근하기 위해서 SSH 프로토콜을 사용하여 보안에 강하다.
- 저장소 서버와 개발 서버가 분리되어 사용자 계정은 개발 서버(리눅스 머신)에 존재한다.
- selinux가 활성화 되어 있으면 /srv 디렉터리에 접근할 수 없다. 아시는 분은 댓글 좀 달아주세요.
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
댓글
댓글 쓰기