2010년 5월 27일 목요일

윈도우에 Cygwin으로 Git서버 설치하기

실제 작업에 쓰는건 Subversion이고 git은 테스트로 로컬에서 잠깐씩 써보는정도였는데
실제로 작업에 사용해보기 위해서 개인 서버에 git 서버를 설정하기로 했다.

예전에도 그냥 써볼까 해서 잠깐 시도하다 git을 어떻게 써야되는지 잘 모르겠으니 말았지만
progit.com 설명보고 좀 이해된다 싶으니 일단 좀 제대로 써보고 싶어졌다.
git에 대해서 간단히 보려면 progit.com이 짱인듯..

윈도에 git서버 설정하는 방법은 검색해보니 대충 2개 발견했는데

걍 첫번째 링크를 먼저 본 관계로 -_- .. cygwin을 사용해서 해보기로 했다.
그냥 cygwin 설치하면서 git, python, openSSH 선택해 설치한 뒤, gitosis받아 설치하면 되는 듯 한데..

다만 내 windows2003서버에는 이미 apache2, trac, python에 svn을 webdav로 돌리고 있었는데
그게 문제인건지.. 뭐가 어찌된건지. gitosis를 설치하면 내부에서는 제대로 접속이 되는데
원격지에서 ssh접속 후 gitosis실행이 cygwin내에서 되지 않아 연결이 되지 않았다.
그래서 간결하게 걍 cygwin ( git + openSSH )로 끝.
어차피 혼자나 소규모로 쓸거니깐.

1. Cygwin 설치
cygwin.com에 가서 받으라는데 가면 다운로드링크가 없어.-_ -;;
http://cygwin.com/setup.exe
여기로 받아야됨.
  1. setup.exe 실행 > Install from Internet 선택
  2. 모든 유저를 위해 설치를 선택.
  3. 다운받을 곳은 적당히 가까울까 싶어서 .jp붙은거 골랐더니 잘 안됐다 그냥 맨위에거로 진행.
  4. 패키지에서 git ( Devel 카테고리), openssh ( Net 카테고리)를 고른다.
그리고 기다리면 설치완료.
시작 메뉴나 바탕화면에 Cygwin Bash Shell이 생긴다.

2. SSH 설정
  1. 바탕화면의 Cygwin Bash Shell을 실행.
  2. chmod +r /etc/passwd
  3. chmod u+w /etc/passwd
  4. chmod +r /etc/group
  5. chmod 755 /var 로 권한 설정 해준뒤,
  6. ssh-host-config를 타이핑하고 실행하면, 몇가지 질문이 나온다.
  7. 기본적으로 모두 yes 하면 된다. 다만 중간에 이름 바꿀거냐 물을 때는 적당히 no
  8. 그리고 패스워드를 설정해준다.
  9. 설정이 완료 되면, 윈도우 서비스로 가서 생성된 CGWIN 서비스를 시작하거나, net start sshd 를 입력하면 서비스 시작.

이 후, 원 메뉴얼에서는 python과 setuptools를 설치해 gitosis를 준비하지만 난 안되니 스킵.

3. ssh로 접속할 윈도우즈 계정 생성.
시작>관리도구>컴퓨터관리 를 실행시켜 계정을 추가. 패스워드를 설정해준다.
덤으로 암호 변경불가 + 암호 사용기간 제한 없음 선택.
기본적으로 ssh로 접속하면, cygwin이 설치된 폴더/home/계정명이 홈폴더가 되는데,
계정정보>프로필 탭에서 홈폴더 항목의 로컬경로에 원하는 별도의 경로를 지정해주면 접속시
그곳이 홈폴더가 되므로, git저장소를 작성하고 싶은 곳으로 정해두면 좋은거 같다.
이번 설정때는 c:/git으로 설정.. 데이터 하드가 c드라이브기 땜에.

계정을 생성 한 뒤, cygwin bash shell에서 다음을 입력한다.
mkpasswd -l -u 생성한계정명 >> /etc/passwd

그냥 윈도우 계정/프로필 탭에 홈폴더를 설정해서는 적용이 되지 않음.
/etc/passwd 를 notepad++등으로 열어 맨 아래 줄의 /home 부분을 원하는 위치로 수정해준다.
윈도우식 경로는 사용할수 없고, 예를 들어 e:/git 이라면 /cygdrive/e/git 과 같은 형식으로 적어준다.


4.접속할수있는 허가된 사용자를 만들기위해 공개키를 추가
여기서 공개 SSH키를 준비한다. 난 맥에서 ssh-keygen입력 후, 엔터3번으로 생성했다.
생성하면 자신의 홈폴더/.ssh 폴더가 생기고 거기에 개인키(확장자 안보임)와 공개키(.pub확장자)가 생긴다. 윈도우에서는 git서버설정과는 별도로 msysgit등을 설치하면 ssh-keygen이 bin폴더에 있는거 같다.

생성 한 공개키(.pub)를 cygwin설치폴더/tmp 폴더에 복사한다. 내경우(d:/cygwin/tmp)

cygwin bash shell에서 아래를 입력.
chmod 755 /tmp/복사한공개키파일명.pub

이후, 저 공개키를 인증목록에 추가하기위해 아까 생성한 계정으로 접속한다.
윈도우 기본 cmd.exe를 실행해 다음을 입력.

runas /user:생성한계정명 cygwin쉘경로

내 경우 계정명은 'git', cygwin쉘 경로는 d:/cygwin/tmp이므로
runas /user:git d:/cygwin/cygwin.bat 가 된다.

실행하면 새로 생성한 계정으로 쉘에 접속된다.
거기에서 다음을 입력
cat /tmp/복사한공개키파일명.pub >> ~/.ssh/authorized_keys

이 후에도, ssh접근할 계정을 추가하고 싶으면 공개키를 받아서 저기에 추가하면 되는것 같다.
같은 계정에 여러개의 공캐키를 추가해도 실제 git에서 커밋할 때는 각자 다른 이름으로 올라가니
상관없는듯.
이것으로 git서버를 돌릴수있는 ssh 설정이 완료 -_-.
끝.

5. 저장소 생성
생성한 계정으로 cygwin쉘로 접속한 뒤,
디렉토리를 만들면 된다.
예를 들어
mkdir project1.git && cd project1.git
git --bare init
를 입력하면 홈폴더아래에 project1.git폴더를 만들고 거기에 새로운 저장소를 초기화하게 된다.

이후, 작업하는 클라 컴퓨터에서 푸시 하면 된다.

예를 들면 작업용 컴터에서..
일단 개발툴로 test1프로젝트 생성했으면, 터미널로 해당 test1폴더로 이동해서
git init
git add .
git commit -m '초기화 커밋'
git remote add origin 계정명@서버경로:project1.git
git push origin master
하면 된다.
'깃'은 아까 윈도우계정으로 추가된 계정명이고 그뒤는 naver.com과 같이 서버 경로가 붙으면 된다.

이 후, 다른 곳에서는
git clone 계정명@서버경로:project1.git
해서 작업을 시작하면 되는 듯.

지금 작업은 맥에서 하니까 상관없는데 윈도에서는 ssh어떻게 접속하는지 또 찾아봐야겠다;;
생전 윈도우만 쓰다보니 이런거 하나 하기도 너무 어렵다.
나이들면서 삽질하기가 귀찮아져서 그런거 같기도 하고.

댓글 없음:

댓글 쓰기