-
git, 아파치 서버 연동 방법기타기술 2012. 3. 27. 20:39
Git을 통해 협업하기 위해 저장소를 공유할 수 있는 방법은 다양합니다. 링크된 사이트에 가보면 git 저장소를 공유할 수 있는 8가지 방법이 소개되어 있기도 합니다.
이 중 제가 사용해 본 공유 방식은 git daemon, ssh server, apache http입니다. 그 중 아파치를 이용한 공유 방식이 가장 간단하면서도 효과적인 것 같습니다. Git daemon같은 경우 간단하기는 하나 외부에서 repository를 클론 할 때 문제가 생기는 경우가 있습니다. Push, pull을 할 때 이유 없이 붙었다 떨어졌다 하기도 하구요. SSH의 경우 보안이 중요할 경우 사용하는 게 바람직하겠습니다만, 설정의 부담이 있습니다. 사용자마다 계정을 발급하고 키를 생성하고 하는 절차가 필요하거든요.
아파치를 사용할 경우에는 아파치 basic authentication을 통해 간단히 사용자 인증을 할 수 있으며, 웹을 통해 저장소의 내용을 바로 조회해 볼 수도 있습니다. 지금 회사에서 사용하고 있는 SVN도 아파치와 연동해서 사용하고 있기도 합니다.
아파치와 git을 연동하기 위해서는 아파치 웹 서버와 git을 먼저 설치해야 합니다. 설치하는 방법은 스킵하도록 하겠습니다.아파치와 git의 설치가 완료되면 먼저 공유할 git 저장소를 생성합니다 git init 명령을 저장소를 생성할 수 있습니다. 만약, 여러 사람과의 협업을 하려고 한다면 bare 저장소를 만들어야 합니다.
저장소를 만들었다면 이제 저장소를 아파치 웹 서버와 연동해야 합니다.
1. 아파치 Document root를 git 저장소로 변경합니다.
DocumentRoot "[저장소경로]"
2. Directory 설정을 다음과 같이 변경합니다.
<Directory "[저장소경로]">
Allow from all
</Directory>
3. Git에 대한 환경 변수들을 설정합니다.
SetEnv GIT_PROJECT_ROOT [저장소경로]
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAliasMatch \
"(?x)^/(.*/(HEAD | \
info/refs | \
objects/(info/[Apache Git server on Windows^/]+ | \
[0-9a-f]{2}/[0-9a-f]{38} | \
pack/pack-[0-9a-f]{40}\.(pack|idx)) | \
git-(upload|receive)-pack))$" \
"[git설치경로]/libexec/git-core/git-http-backend.exe/$1"
이렇게 설정한 후 아파치 서버를 실행하면 브라우저를 통해 git 저장소에 접근할 수 있게 됩니다.
또한, git clone명령어(git clone http://[호스트명]/[저장소명])를 통해 해당 저장소를 복사할 수도 있습니다. 물론, 변경 내용에 대한 push도 가능합니다.
아! 만약 push중에 다음과 같은 에러가 발생한다면 git 저장소에 config파일에 http에 관한 설정을 추가하면 됩니다.
[http]
receivepack = true
사용자 인증을 추가하는 방법은... 다음에 쓰겠습니다. J
'기타기술' 카테고리의 다른 글
Java에서 MappedByteBuffer를 이용한 off-heap 사용 (0) 2021.01.04 Maven-assembly을 이용해 oozie 배포 구조 만들기 (0) 2013.09.16 도제식 수련 in SW (0) 2011.08.27 EA(Enterprise Architect)와 SVN 연동하기 (0) 2011.08.04 수렴진화, 그리고 좋은 설계 (0) 2011.07.25