티스토리 뷰

반응형

https://bundw.tistory.com/120

 

Apache(아파치)로 Git(깃)에 HTTP URL 주소 적용

github.com을 사용하지 않고 직접 구축한 Git Server에서 clone 등을 하기 위해 주소를 지정하려면, 일반적으로 프로토콜을 ssh://로 지정하거나 프로토콜 지정을 하지 않고 사용합니다. HTTP backend가 없으

bundw.tistory.com

 

이 글은 위의 내용을 Synology NAS에서 적용하는 방법을 작성하였습니다.

 

요약하면, Git에서 clone 등을 할 때 주소의 프토로콜을 http:// 로 지정하는 방법을 안내합니다. (포트 지정과 함께)

 

이 글은 Synology NAS DS1821+ 기준으로 작성되었습니다.

 

요구 사항

  • Web Station 패키지 설치
  • Apache HTTP Server 2.x 패키지 설치
  • SSH 활성화

 

먼저 ssh 등을 통해 나스에 접속합니다.

 

$ cd /usr/local/etc/apache24/sites-enabled
$ sudo vi git.conf

Apache의 sites-enable 경로(버전에 따라 apache24가 아닌 다른 이름일 수 있음)로 이동한 후,

 

conf파일을 생성 및 내용을 추가합니다.

 

SetEnv GIT_PROJECT_ROOT /volume1/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /volume1/@appstore/Git/libexec/git-core/git-http-backend/

<Files "git-http-backend">
    AuthType Basic
    AuthName "Git Access"
    AuthUserFile /volume1/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 패키지 설치 경로로, 설치된 volume을 확인하여 적절히 변경합니다. (단일 볼륨이면 일반적으로 volume1)

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

 

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

 

Options +Indexes

 

이것으로 파일 세팅은 끝났습니다.

 

이제 웹 브라우저에서 Synology DSM으로 접속하여 Web Station 앱을 엽니다.

 

좌측 탭의 웹 서비스 포털을 클릭하고, 우측에서 생성 버튼을 클릭합니다.

 

포털 만들기 마법사에서 유형을 가상 호스트로 클릭합니다.

 

포털 유형을 포트 기반으로 선택하고, 포트를 입력합니다. 그리고 다음 버튼을 클릭합니다.

 

문서 루트에 Git Repository 루트 경로를 지정하고, HTTP 백엔드 서버를 설치된 Apache로 선택합니다. 그리고 다음 버튼을 클릭합니다.

 

특별히 설정할 값이 없으므로 기본 값으로 두고 다음버튼 및 생성버튼을 클릭하여 완료합니다.

 

이제 패키지 센터 앱을 열고, Web Station을 재시작하기 위해 중지를 합니다.

 

경고창이 뜨면 모두 예를 눌러 종료합니다.

 

중지가 되면, 다시 Web Station의 실행 버튼을 클릭하여 시작을 해 줍니다.

 

 

Web Station이 중지가 되면 Apache HTTP Server도 함께 중지가 되므로 Apache HTTP Server도 실행버튼을 클릭해서 실행시켜 줍니다.

 

 

모두 완료되었습니다.

 

다시 Web Station 앱으로 돌아와서 이상이 없는지 확인합니다.

 

 

기본 서버 상태와 웹 서비스 포털 상태가 보통으로 되어있다면 모두 잘 된 것입니다.

 

만약 이상상태 라면, Apache HTTP Server가 시작이 되어있는지, 또는 이 글의 처음부분인 파일 설정이 잘 되었는지 다시 확인해 봅니다.

 

이제 모두 준비가 끝났으므로 git clone 등으로 잘 되는지 확인해 봅니다.

$ git clone http://192.168.0.10:3080/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.
remote: Total 1379 (delta 936), reused 158 (delta 57), pack-reused 0R
Receiving objects: 100% (1379/1379), 1.40 MiB | 11.93 MiB/s, done.
Resolving deltas: 100% (936/936), done.

 

반응형