티스토리 뷰

반응형

github.com을 사용하지 않고 직접 구축한 Git Server에서 clone 등을 하기 위해 주소를 지정하려면,

 

일반적으로 프로토콜을 ssh://로 지정하거나 프로토콜 지정을 하지 않고 사용합니다.

 

HTTP backend가 없으면 프로토콜 HTTP(http://)와 HTTPS(https://)로 지정할 수 없는 것입니다.

 

보통 단일 Git Repository에서 사용하는데에는 HTTP를 사용하지 않아도 쓰는 데에는 큰 문제는 없습니다.

 

그러나 글쓴이 경우, Windows 명령 프롬프트(cmd 스크립트)에서 다른 Repository의 submodule을 사용하면서,

 

Credential(자격 증명)에 곤혹을 겪어서 대안을 검색하다가 HTTP backend로 해결 방안을 찾은 것 입니다.

 

 

이 글은 Apache를 사용하여 Git Server의 Repository를 HTTP/HTTPS프로토콜로 주소를 사용하는 방법을 작성했습니다.

 

Ubuntu 20.04LTS 기준으로 작성되었습니다.

 

요구 사항

  • Apache 2.x
  • git

 

위 두 개의 요구사항이 설치되어 있다면, Git HTTP backend 구축하는 것은 매우 쉽습니다.

 

Apache의 /etc/apache2/sites-enable (또는 sites-available에 생성하고 심볼릭 링크)경로에서 새 .conf 파일을 생성하고, 아래의 내용을 넣습니다.

 

SetEnv GIT_PROJECT_ROOT /myhomedir/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

<Files "git-http-backend">
    AuthType Basic
    AuthName "Git Access"
    AuthUserFile /myhomedir/git/.htpasswd
    Require expr !(%{QUERY_STRING} -strmatch '*service=git-receive-pack*' || %{REQUEST_URI} =~ m#/git-receive-pack$#)
    Require valid-user
</Files>

GIT_PROJECT_ROOT : Git Repository 경로로 적절히 변경합니다.

ScriptAlias : Git 패키지 설치 경로의 git-http-backend 경로로 적절히 변경합니다.

AuthUserFile : Git Repository 경로로 적절히 변경합니다.

 

이제 Git Repository 경로의 루트에서 .htpasswd 파일을 생성하고, 아래의 내용을 넣습니다.

 

Options +Indexes

 

모두 끝났습니다.

 

Apache를 재시작합니다.

$ sudo systemctl restart apache2

 

다른 컴퓨터에서 접근이 잘 되는지 확인해 봅니다.

> git clone http://192.168.0.10/git/myproject.git
Cloning into 'myproject'...
remote: Enumerating objects: 1379, done.
remote: Counting objects: 100% (1379/1379), done.
remote: Compressing objects: 100% (1319/1319), done.
Receiving objects:  98% (1352/1379)sed 158 (delta 57), pack-reused 0 eceiving objects:  97% (1338/1379)
Receiving objects: 100% (1379/1379), 1.40 MiB | 12.02 MiB/s, done.
Resolving deltas: 100% (936/936), done.

 

참고 사이트

반응형