사실 개인 프로젝트는 GitHub이나 bitbucket 써도 된다. 회사 일 때문에 내부 서버를 써야 할 때에나 도움이 될 듯.
1. 하드웨어 준비
실제 머신이 있으면 좋겠지만 돈도 없고 배선도 귀찮고 공간도 좁다. 가상머신 사용하기로 함.
윈도우에서 가장 안정적인 VMware 사용. VM Player는 non-commercial 조건으로 공짜로 사용가능하다.
싱글코어 + 메모리 512MB, 가상 디스크는 4GB, 16GB 두 개로 생성.
작은거에 부트 + 시스템 + 스왑 다 때려박고, 큰거는 온전히 레포지터리 저장용으로만 사용한다.
2. archlinux 설치
https://wiki.archlinux.org/index.php/Installation_Guide
사실 리눅스 배포판에는 ubuntu나 centos 기타등등 유명한게 많지만, 그만큼 덩치가 크다.
git server만 굴릴것이므로 가볍고 용량작은 + 패키지매니저 지원하는 배포판 찾아보니 archlinux가 만만해보임.
apt 사용하려면 lubuntu같은 버전 써도 될거다. 그래도 시스템파티션 크기는 키워야 하겠지만.
https://www.archlinux.org/ 에서 ISO를 다운받는다. 홈페이지에서는 Netboot 추천하는데 잘 안된다.
Live모드로 부트하면 콘솔에서 키보드 커서가 깜빡거리는 상황을 맞이하게 된다. 정상이다(…)
위키페이지를 찬찬히 읽으면서 수동으로(…) 설치하자.
설치할 때 파티션 설정을 조심하자. 마지막거만 주의하면 된다. 저기에 git 저장소가 들어가니까 큰 파티션을 잡아준다.
참고로 루트를 저만큼 잡아도 이것저것 세팅+삽질 이후에도 1.2GB 사용한다. 충분히 넉넉하다는 말임.
/dev/sda1 = /boot 300MB
/dev/sda2 = / 2.7GB
/dev/sda3 = SWAP 1GB
/dev/sdb1 = /srv 16GB **
3. 패키지 설치 및 설정
설치가 완료되면 일단 루트로 로그인한다. 일반계정에서 sudo 사용하려면 visudo 로 설정을 하나 풀어줘야 한다.
wheel 검색한 후 주석을 풀어주고 :wq 하면 wheel 그룹 유저는 sudo 사용이 가능하게 풀린다. 이제 필요한 패키지들을 설치하자.
# pacman -S --needed base-devel wget openssh git
...
# systemctl enable sshd.service
...
4. SSH 설정
https://wiki.archlinux.org/index.php/Secure_Shell
ssh 데몬 설정 편집은 /etc/ssh/sshd_config 파일을 고치면 된다. 적어도 포트번호 변경하고 루트 SSH 차단은 설정해 두자.
설정이 완료되면 ssh 데몬을 재시작하거나 시스템을 재시작.
이제 일반유저로 로그인한다. 원격으로 git을 사용해야 하는데, git 계정의 비밀번호를 까발리고 다닐 수는 없으니 인증키 방식 로그인을 사용해야 한다.
디테일한 내용은 http://opentutorials.org/module/432/3742 등 온라인에 자료 많으니까 넘어가자. 기본값으로 키를 만들면 된다.
암호는 쓸거면 입력하고(당연히 이쪽이 보안상 좋다) 자동로그인이 필요하면 안 만들면 된다.
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/myname/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
...
key를 만들면 ~/.ssh 폴더에 파일 두 개가 생성된다.
혹시모르니 개인키 파일의 권한을 확인한다. 개인키 파일(id_rsa) 권한은 반드시 600이어야 한다.
$ ls -al ~/.ssh
...
-rw------- 1 myname users 1766 Jan 01 00:00 id_rsa
-rw-r--r-- 1 myname users 399 Jan 01 00:00 id_rsa.pub
5. Gitosis 설치
https://wiki.archlinux.org/index.php/Gitosis
https://wiki.archlinux.org/index.php/AUR
아까 git도 설치했었다. 버전 확인하고 설정도 좀 바꿔준다.
$ git --version
git version 1.9.0
$ git config --global user.name "John Doe"
$ git config --global user.email "[email protected]"
$ git config -l
user.name=John Doe
[email protected]
이제 저장소 권한관리 도구인 Gitosis를 설치하자. Gitosis를 이용하면 저장소 별로 접근권한 제어를 할 수 있다.
접근권한 제어는 별도 툴이 있는건 아니고, gitosis-admin 이라는 git 저장소에 키파일과 설정파일을 커밋하면 알아서 반영된다. git으로 git을 관리하다니.
여튼, 원래 Gitosis를 설치하려면 파이썬 깔고 어쩌고저쩌고 해야 하는데, 누군가 고맙게도 이걸 자동화 시켜뒀다.
다만 archlinux 기본 패키지로는 반영 안 돼서 수동으로 패키지 파일을 만들어서 깔아야 한다. 별로 어렵지는 않다.
우선 https://aur.archlinux.org/packages/gitosis-git/ 에서 타르볼을 다운받고 압축을 해제한다.
$ wget https://aur.archlinux.org/packages/gi/gitosis-git/gitosis-git.tar.gz
...
$ tar -xzf gitosis-git.tar.gz
...
압축 풀은 폴더로 들어가서 makepkg로 패키지파일을 만든다. 의존성 해결을 위하여 -d 옵션을 준다.
패키지 빈 게 있어서 sudo 권한을 요구할거다. 설치하고 잠시 기다리면 타르볼을 만들어준다.
$ cd gitosis-git
$ makepkg -s
...
$ ls -al
...
-rw-r--r-- 1 myname users 53552 Jan 01 00:00 gitosis-git-0.2.r50-g9481bb0-1-any.pkg.tar.xz
...
만들어진 타르볼을 패키지 매니저로 설치한다.
$ pacman -U gitosis-git-0.2.r50-g9481bb0-1-any.pkg.tar.xz
...
이제 간신히 Gitosis 패키지를 시스템에 설치한 것이다.
6. Gitosis 설정
이제 Gitosis를 실제로 작동하게 만들자. 루트 권한으로 작업한다.
git이라는 유저는 git 설치과정에서 자동으로 만들어진다.
$ sudo mkdir /srv/gitosis
$ sudo chown git.git /srv/gitosis
$ sudo -H -u git gitosis-init < ~/.ssh/id_rsa.pub
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/
여기까지 하면 git 서버가 작동하는 것이다. 클로닝 해 보자.
$ git clone ssh://git@localhost:22222/gitosis-admin.git
...
ssh-keygen 에서 암호를 입력했으면 암호를 물어볼거다. 입력하면 된다.
클로닝까지 성공하면 Gitosis 설치가 완료된 것이다.
사용자 추가는 keydir 안에 RSA 공개키 파일을 넣어주면 되며, 파일명이 곧 계정명으로 사용된다.
접근권한 설정은 gitosis.conf 에서 한다. 자세한 설정방법은… google it.