티스토리 뷰
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.
참고 사이트
'SW개발 > 버전 관리' 카테고리의 다른 글
SynologyNAS(시놀로지 나스)에서 Git(깃) HTTP URL주소 설정 (0) | 2023.03.17 |
---|---|
Windows(윈도우) SourceTree(소스트리) 오류: fatal: protocol error: bad line length character 해결 (0) | 2022.12.21 |
Docker(도커) elleflorio-svn-server에서 sh(쉘) 접속 및 svnadmin 사용 (0) | 2022.07.20 |
svnadmin Repository(저장소)를 dump(백업) 및 load(복구) 이전하기 (0) | 2022.07.19 |
TortoiseSVN Relocate Repository(저장소) 주소 변경하기 (0) | 2022.07.19 |