ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

Designed by Tistory.