Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

GitLabHQ에서 프로젝트 생성시 404 오류가 발생할 때

얼마전에 Ubuntu에 GitLabHQ 설치하기라는 포스팅으로GiLabHQ를 설치하는 방법을 설명했습니다. 하지만 이렇게 설치를 하고 실제 사용을 위해서 프로젝트를 생성하니까 404 페이지가 나타나는 오류를 만났습니다.

이 문제의 상황을 정리해 보면 GitLabHQ는 Github와 동일하게 저장소에 대한 접근권한을 인증받기 위해서 SSH 키를 등록합니다. 사용자 계정에 SSH키를 등록하기 전에는 문제없이 프로젝트를 생성할 수 있지만 SSH키를 등록하고 나면 프로젝트 생성 후에 완료페이지 대신에 404페이지가 나오면서 프로젝트 생성에 실패합니다. 실제 내부를 보면 Gitolite의 저장소는 생성되고 Gitolite의 설정파일(Gitolite가 설증을 관리하는 gitolite-admin저장소의 conf/gitolite.conf 파일)에 저장소에 대한 접근권한도 설정되지만 GitLabHQ의 데이터베이스에는 기록이 되지 않아서 프로젝트 리스트에 나타나지 않습니다. 그리고 SSH키를 등록하기 전에 생성한 프로젝트에 접근하면 500에러가 발생합니다.(SSH키를 등록하기 전에는 해당 저장소의 git설정을 하는 안내페이지가 나타납니다.)

이 문제의 원인을 파악하기 위해서 수없이 삽질을 한 끝에 원인은 알아냈습니다. Gitolite 저장소가 생기는 위치인 /home/git/repositories를 보면 새로 생성한 .git 저장소 디렉토리의 권한이 770이 아닌 700으로 생성되었습니다. GItLabHQ의 구조상 git이라는 계정으로 gitolite를 관리하고 git그룹의 현재 사용자 계정을 추가하고 /home/git/repositories의 권한은 770으로 주어 그룹계정으로 저장소 디렉토리의 권한을 가지는 구조로 되어 있습니다. 하지만 새로 생긴 저장소가 700으로 생성되기 때문에 접근권한이 없어서 오류가 생긴 것입니다. SSH키를 등록하기 전에는 GitLabHQ의 디비에만 들어가고 실제 저장소는 생성하지 않기 때문에 이상없이 동작하지만 SSH키를 등록하면 저장소를 생성하면서 마찬가지로 700으로 만들기 때문에 500에러가 발생한 것입니다.

원인은 알아냈지만 해결책을 알지 못해서 오류인줄 알고 GItLabHQ의 저장소에 이슈를 등록했더니 Dani님이 답변을 달아주셨습니다.(덕분에 해결!!)

git 계정의 홈디렉토리에서 /home/git/.gitolite.rc파일을 보면 다음과 같은 부분이 있습니다.


# ------------------------------------------------------------------------------
# most often used/changed variables
# ------------------------------------------------------------------------------
$GL_WILDREPOS = 0;
$PROJECTS_LIST = $ENV{HOME} . "/projects.list";
# $WEB_INTERFACE = "gitweb";
# $GITWEB_URI_ESCAPE = 0;
$REPO_UMASK = 0077;

마지막의 $REPO_UMASK의 값이 0077 (기본값)로 되어 있어서 저장소 디렉토리의 권한이 700으로 생성된 것입니다. $REPO_UMASK의 값을 0007로 변경하면 오류없이 프로젝트를 수정할 수 있습니다.
2012/01/20 19:16 2012/01/20 19:16