Gitolite는 Git Repository를 관리하는 툴입니다. 특이하게도 Gitolite 설정이 Git으로 관리되며, 관리자가 Clone한 Gitolite 설정에 SSH Key를 추가하거나, 설정 File을 변경하여 Server에 Push하는 동작을 통해 Git Repository에 해당 변경이 자동으로 적용되게 됩니다.
아래의 예제는 Apache(아파치)와 openssh가 설치되어 있다는 가정하에 진행된다.
Gitolite를 컨트롤하는 것은 클라이언트 컴퓨터로, Git의 리모트 저장소로 운영되는 서버에서 Gitolite를 설치하며 gitolite-admin 저장소를 clone 하여 클라이언트 컴퓨터에서 수정하고 이를 서버에 push하여 반영하는 방법으로 진행된다.
Git 최신버전 설치
우분투 12.04.02에서 git 설치시 1.7.9 버전이 설치된다. 최신버전을 사용하기위해서는 PPA를 사용해야 한다.
PPA를 사용할 때 쓰는 add-apt-repository
명령어가 작동하지 않으면 python-software-properties
를 설치하고, 그래도 문제가 생기는 경우에는 software-properties-common
을 설치하면 된다.
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git-core
git version
Gitolite 설치하기
계정 생성 및 로그인
패스워드를 사용하지 않고 로그인쉘은 bash를 사용하는 git 계정을 추가한다. 생성된 git 계정은 repository, project.list를 관리하는 사용자 계정으로 대개의 경우 git을 사용한다.
sudo adduser \
--system \
--shell /bin/bash \
--gecos 'git version control' \
--group \
--disabled-password \
--home /home/git \
git
git 계정으로 로그인한다.
sudo su -l git
Gitolite 설치파일 클론하고 설치준비
Gitolite는 저장소를 통한 관리를 하기 때문에 이 Gitolite 저장소를 내려받아 이를 설치할 수 있다. 이때 git 유저로 로그인 한 상태에서 진행함을 명심해야 한다(우분투에서 gitolite 패키지도 제공하지만 버전이 낮은 관계로 직접 clone 한다).
git clone git://github.com/sitaramc/gitolite
위의 결과로 /home/git/gitolite 디렉토리가 생성된다.
명령어가 실행될 위치를 생성한다.
mkdir $HOME/bin
Gitolite의 바이너리파일을 설치한다.
gitolite/install -ln
위의 결과로 /home/git/bin/gitolite 파일이 생성되며, 그것은 /home/git/gitolite/src/gitolite 의 심볼릭링크이다.
SSH-key 등록
클라이언트 컴퓨터(작업컴퓨터)에서 SSH-Key를 생성하고 id_rsa.pub(공개키)를 서버로 전송한다.
scp를 이용하든 ftp를 이용하든 어찌됫든 간에 전송, 윈도우라면 msysgit 으로 scp를 이용해 전송한다.
scp ~/.ssh/id_rsa.pub unclepapa@192.168.0.20:id_rsa.pub
다시 서버 관리자로 로그인하고 전송된 파일을 이동시키고, 소유권을 변경한다. 이동 시킬때 파일명을 변경하는데 이때 파일명이 후에 관리자로 등록된다.
sudo mv id_rsa.pub /home/git/Git-Admin.pub
sudo chown git:git /home/git/Git-Admin.pub
다시 git 계정으로 로그인
sudo su -l git
관리자 등록
Git-Admin.pub 키를 이용해 관리자를 등록한다. 이 공개키를 사용하는 사람만이 Gitolite 설정을 할 수 있게 되며 .ssh 디렉토리와 그 하부에 authorized_keys가 자동으로 생성되어 SSH를 통한 접속이 가능하게 된다.
bin/gitolite setup -pk Git-Admin.pub
몇가지 중요한 파일들과 디렉토리들이 생성된다.
ls -la
total 48
drwxr-xr-x 7 git git 4096 Aug 29 02:03 .
drwxr-xr-x 4 root root 4096 Aug 29 01:05 ..
-rw------- 1 git git 233 Aug 29 01:48 .bash_history
drwxrwxr-x 2 git git 4096 Aug 29 01:34 bin
-rw-r--r-- 1 git git 404 Aug 29 01:50 Git-Admin.pub
drwxrwxr-x 5 git git 4096 Aug 29 01:29 gitolite
drwxrwxr-x 6 git git 4096 Aug 29 02:03 .gitolite
-rw-rw-r-- 1 git git 5826 Aug 29 02:03 .gitolite.rc
-rw-rw-r-- 1 git git 12 Aug 29 02:03 projects.list
drwxrwxr-x 4 git git 4096 Aug 29 02:03 repositories
drwx------ 2 git git 4096 Aug 29 02:03 .ssh
또한 repositories 디렉토리를 들여다보면 Gitolite를 설정하는 저장소와 test 저장소도 볼 수 잇다.
ls -la repositories/
total 16
drwxrwxr-x 4 git git 4096 Aug 29 02:03 .
drwxr-xr-x 7 git git 4096 Aug 29 02:03 ..
drwxrwxr-x 8 git git 4096 Aug 29 02:03 gitolite-admin.git
drwxrwxr-x 7 git git 4096 Aug 29 02:03 testing.git
클라이언트에서 Gitolite 설정 저장소 클론하기
클라이언트에 Git을 설치한다. 클라이언트에 Git 설치 : http://webdir.tistory.com/222
본인의 경우 ssh 설정에서 SSH 접속 가능한 인원을 sudo 그룹으로 제한해서 사용하곤 한다. 이처럼 특정인원만 접속할 수 있도록 제한 했을 경우 이 설정을 풀어주어야 한다.
클론하기
git clone git@서버주소:gitolite-admin.git
사용자와 그룹 권한 설정 : conf/gitolite.conf
공개키의 이름(Git-Admin)이 관리자로 등록되어 있다. 사용자를 추가하고 이용권한을 추가할때도 마찬가지로 사용자들의 공개키이름에 근거하여 권한을 추가한다.
repo gitolite-admin
RW+ = Git-Admin
repo testing
RW+ = @all
사용자키 추가 : keydir/키이름(사용자명.pub)
Git-Admin.pub
Gitweb 설치하기
다시 서버 관리자로 로그인한다.
gitweb 패키지 설치
gitweb을 설치하면 /usr/share/gitweb 에 설치된다.
sudo apt-get install gitweb
gitweb 접근허용
UMASK 값을 0027로 변경하여 그룹이 접근 가능하게 한다.
sudo vi /home/git/.gitolite.rc
UMASK => 0027,
gitweb의 설정중 Gitolite를 설치해 변경된 경로를 변경
sudo vi /usr/share/gitweb/gitweb.cgi
our $projectroot = "/home/git/repositories/";
our $projects_list = "/home/git/projects.list";
gitweb 설정파일 안의 경로도 변경한다.
sudo vi /etc/gitweb.conf
projectroot = "/home/git/repositories/";
projects_list = "/home/git/projects.list";
아파치 재시작
sudo service apache2 restart
웹접속 테스트
http://서버IP/gitweb
gitweb 의 보안을 위해서는 htpasswd 를 설정하든가 IP 접속제한을 두던가 할 수 있다. /etc/apache2/conf.d/gitweb 의 파일을 입맛에 따라 설정하면 된다.
htpasswd를 이용한 Gitweb 보안
기본적으로 누구나 gitweb 페이지에 접속할 수 있으니 암호를 걸도록 한다.
gitweb 아파치 설정
sudo vi /etc/apache2/conf.d/gitweb
Alias /gitweb /usr/share/gitweb
<Directory /usr/share/gitweb>
Options FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
AllowOverride None
Order allow,deny
Allow from all
AuthType Basic
AuthName "Git Access"
Require valid-user
AuthUserFile /etc/apache2/gitweb-htpasswd
</Directory>
htpasswd 생성
htpasswd -mc /etc/apache2/gitweb-htpasswd admin
New password:
Re-type new password:
Adding password for user admin
아파치 재시작
sudo service apache2 restart
'리눅스 > Ubuntu' 카테고리의 다른 글
[Ubuntu] 우분투 GitLab 설치 (13) | 2013.09.01 |
---|---|
[Ubuntu] 우분투 Gitolite 두개의 Pub Key 사용하기 (0) | 2013.08.30 |
[Ubuntu] 우분투 Git 서버 구축 (2) | 2013.08.29 |
[Ubuntu] 우분투 워드프레스 설치 (0) | 2013.08.20 |
[Ubuntu] 우분투 vsftpd 설치 (4) | 2013.08.16 |