https://github.com/ 를 이용하면 좋지만 대중에게 공개를 하지 않고 나만의 공간에 git 서버가 있으면  좋겠다고 생각하신 분들이 있을 것입니다. 그런 분들을 위한 개인적인 세팅방법을 알려드리겠습니다. 

저도 사실은 얼마전까지 svn (subversion) 을 사용하는 사람중에 한명이였습니다. 개발 환경 세팅 과 업무에 필요한 자료 & 개인적인 메모들을 svn 서버에 올려다 두고 어디서건 동기화 시켜서 바로 업무에 활용할 수 있게 설정해 두고 있었습니다. 그러던 와중에 기생하고 있던 서버가 사라지는 바람에 개인적인 서버를 가지게 되었고 개인 서버를 가지게 된 김에 git 서버를 설치하자고 생각해서 이리 설치하게 되었습니다. 
 

1. git 서버가 설치될 위치에 git 를 설치합니다.
 

 $ sudo apt-get install git-core 


2. git 를 위한 계정을 만들고 접근할 때 필요한 패스워드를 설정해 줍니다. 

 

$ sudo adduser --system --shell /bin/bash --gecos 'git version control' --group --home /home/git git

 $ sudo passwd git 

   패스워드 입력..


3. git 프로젝트들이 저장될 디렉토리 생성합니다. 
 

 $ sudo -u git mkdir /home/git/repos 


 긴건 귀찮으니까 간단하게 repos (repositories의 약자라는 개념으로..) 라고 합니다. sudo -u git 는 그 작업을 git 계정으로 하라는 명령입니다.


4. 서버에 올릴 프로젝트를 한개 만들어 줍니다. /home/crazia/doc 이라고 텍스트 문서들이 저장된 디렉토리를 올린다고 가정을합니다. 


 $ cd /home/crazia 

 $ git init doc 

 $ cd doc

 $ git add .

 $ git commit -a -m "doc init" 


 doc 이라는 이름으로 프로젝트를 만들어 주라는 명령입니다. 

 doc 안에 있는 모든 (하부 디렉토리까지 전부) 파일을 더해줘서 서버랑 상관 없이 로컬에 커밋을 하라는 명령입니다. 


5. 서버에 git daemon 을 띄워 줍니다. 


 $ sudo -u git git daemon --export-all --syslog --base-path=/home/git/repos --reuseaddr --detach


 git 계정으로 git 를 daemon 으로 한개 띄우라는 것입니다. 다른 것은 그냥 써주시면 되고 --base-path 로 3 번에서 만들어 준 저장소를 지정해 줍니다. 이 데몬은 항상 서버에 띄워져 있어야 합니다. 


6. 4번에서 만들어준 프로젝트를 저장소로 옮겨주는 작업을 합니다. 


 $ cd /home/git/repos

 $ sudo -u git git clone --bare /home/crazia/doc 굵게


 4번에서 만들어준 프로젝트의 복사본이 /home/git/repos 안에 생성 됐습니다. 


7. 데몬을 통해서 접근이 가능할 수 있도록 간단한 추가 작업을 해 줍니다. 


 $ cd /home/git/repos/doc.git

 $ sudo -u git touch git-daemon-export-ok


자 이제 서버에서 설정해 주는 일은 끝났습니다. 이제 클라이언트에서 제대로 설정이 됐는지 테스트를 해 보겠습니다. 


 $ git clone git@HOSTNAME:repos/doc.git 


물어보는 비밀 번호에 답하면 프로젝트가 받아 질것입니다. 

 HOSTNAME git 서버를 설치한 서버의 호스트 네임 입니다. ip 번호로 쓰셔도 됩니다. 

 repos 는 서버에서 만들어준 repos 의 이름입니다. 

 doc.git 는 서버에서 만들어준 프로젝트의 이름입니다. (제 경우라서 doc.git)로 설정해 줬습니다. 


혹시나 SK 브로드밴드의 일부 지역에서는 SSH 의 기본 포트인 22 번을 쓸 수가 없습니다. 망 차원에서 막혀있더군요 (이것 때문에 몇시간을 고생했는지.. ㅜ.ㅜ ) 그래서 다른 포트를 부득이 하게 쓰고 계신 분들은 (서버쪽 /etc/ssh/sshd_config 에서 Port 값을 변경하신 경우겠지요?) 

 git 는 기본적으로 ssh 를 이용해서 파일을 가져오는 데 포트를 변경해서 서비스 하는 경우에는 포트값을 입력할 수가 없겠지요? 따라서 클라이언트의 

 

 $ emacs $HOME/.ssh/config 


 를 열고 아래와 같이 추가해 줍니다. 


 Host  super.mavel.com

      User crazia

      Hostname super.mavel.com

      Port 2222


super.mavel.com 은 서비스하는 호스트 이름이고 Port 가 변경해준 포트 입니다. 여기서는 2222 입니다. 



+ Recent posts