Ubuntu에서 HTTP로 Git 서버 구성

Configure Git Server With Http Ubuntu



Git 리포지토리를 비공개로 사용하기 위해 Git HTTP 서버를 설정하려는 경우 이 문서가 적합합니다. 이 기사에서는 Apache HTTP 서버를 사용하여 Ubuntu에서 Git Smart HTTP 서버를 구성하는 방법을 보여 드리겠습니다. 시작하겠습니다.

Git 및 Apache 패키지는 Ubuntu의 공식 패키지 저장소에서 사용할 수 있습니다. 따라서 APT 패키지 관리자로 쉽게 설치할 수 있습니다.







먼저 다음 명령을 사용하여 APT 패키지 저장소 캐시를 업데이트합니다.



$수도적절한 업데이트



APT 패키지 저장소 캐시를 업데이트해야 합니다.





이제 다음 명령으로 Git과 Apache를 설치합니다.



$수도적절한설치 가다apache2 apache2 유틸리티

이제 그리고 그런 다음 누르십시오 설치를 확인합니다.

Git과 Apache가 설치되어 있어야 합니다.

Git용 Apache HTTP 서버 구성:

이제 Apache를 활성화하십시오. mod_env , mod_cgi , mod_alias 그리고 mod_rewrite 다음 명령으로 모듈:

$수도a2enmod환경CG별명고쳐 쓰기

필수 Apache 모듈을 활성화해야 합니다.

이제 새 디렉토리를 만듭니다. /var/www/git 다음 명령으로 모든 Git 리포지토리를 유지하려면:

$수도 mkdir /어디/www/가다

이제 새 Apache 사이트 구성을 만듭니다. /etc/apache2/sites-available/git.conf 다음 명령을 사용하여 Git의 경우:

$수도 나노 //아파치2/사용 가능한 사이트/git.conf

이제 구성 파일에 다음 줄을 입력합니다.

<가상호스트*:80>
ServerAdmin 웹마스터@로컬 호스트

환경 설정 GIT_PROJECT_ROOT<강한> /어디/www/가다강한>
SetEnv GIT_HTTP_EXPORT_ALL
스크립트별칭/가다/ /usr/라이브러리/자식 코어/git-http-backend/

별명/가다 /어디/www/가다

<예배 규칙서/usr/라이브러리/자식 코어>
옵션 +ExecCGI-멀티뷰+SymLinksIfOwnerMatch
재정의 허용 없음
모든 권한 부여 필요
예배 규칙서>

문서 루트/어디/www/HTML

<예배 규칙서/어디/www>
옵션 인덱스 FollowSymLinks MultiViews
재정의 허용 없음
모든 권한 부여 필요
예배 규칙서>


오류 기록$ {APACHE_LOG_DIR}/오류 기록
LogLevel 경고
커스텀로그$ {APACHE_LOG_DIR}/access.log 결합
가상호스트>

최종 구성 파일은 다음과 같습니다. 이제 다음을 눌러 구성 파일을 저장합니다. + NS 뒤이어 그리고 그리고 .

이제 다음 명령을 사용하여 기본 Apache 사이트 구성을 비활성화합니다.

$수도a2dissite 000-default.conf

기본 사이트 구성을 비활성화해야 합니다.

이제 다음 명령을 사용하여 Git 사이트 구성을 활성화합니다.

$수도a2ensite git.conf

Git 사이트 구성이 활성화되어 있어야 합니다.

이제 다음 명령으로 Apache HTTP 서버를 다시 시작합니다.

$수도systemctl apache2 재시작

Apache HTTP 서버를 통해 액세스할 수 있는 새 Git 저장소를 부트스트랩하려면 몇 가지 명령을 실행해야 합니다. 새로운 Git 리포지토리를 생성하기 위해 동일한 작업을 반복해서 수행하고 싶지는 않습니다. 그래서 저는 그 목적을 위해 쉘 스크립트를 작성하기로 결정했습니다.

먼저 새 셸 스크립트를 만듭니다. /usr/local/bin/git-create-repo.sh 다음 명령으로:

$수도 나노 /usr/현지의/오전/git-create-repo.sh

이제 쉘 스크립트에 다음 코드 줄을 입력합니다.

#!/bin/bash

GIT_DIR='/var/www/git'
REPO_NAME=$ 1

mkdir -NS '${GIT_DIR}/${REPO_NAME}.가다'
CD '${GIT_DIR}/${REPO_NAME}.가다'

자식 초기화 --단지 &> /개발자/없는
만지다자식 데몬 내보내기 확인
cp후크/post-update.sample 후크/업데이트 후
자식 구성http.receivepack진실
자식 업데이트 서버 정보
차우 -RFwww-data: www-data'${GIT_DIR}/${REPO_NAME}.가다'
던졌다 'Git 저장소 '${REPO_NAME}'에서 생성${GIT_DIR}/${REPO_NAME}.가다'

이 줄을 입력하면 셸 스크립트가 다음과 같이 표시됩니다. 이제 다음을 눌러 파일을 저장합니다. + NS 뒤이어 그리고 그리고 .

이제 다음 명령을 사용하여 쉘 스크립트에 실행 권한을 추가하십시오.

$수도 chmod+ x/usr/현지의/오전/git-create-repo.sh

이제 새 Git 저장소를 만듭니다. 시험 Git 프로젝트 루트에서 /var/www/git 를 사용하여 git-create-repo.sh 쉘 스크립트는 다음과 같습니다.

$수도git-create-repo.sh시험

Git 저장소 시험 생성되어야 합니다.

Git 저장소에 액세스하려면 Git HTTP 서버의 IP 주소가 필요합니다.

$아이피에게

보시다시피 제 경우의 IP 주소는 192.168.21.208 . 당신에게는 다를 것입니다. 지금부터 당신의 것으로 교체하십시오.

이제 복제할 수 있습니다. 시험 Git 리포지토리는 다음과 같습니다.

$자식 클론http://192.168.21.208/가다/test.go

Git 저장소 시험 복제해야 합니다.

이제 새 커밋을 추가해 보겠습니다. 시험 Git 저장소.

$CD시험/
$던졌다 '헬로월드' >안녕하십니까
$자식 추가.
$자식 커밋 -미디엄 '초기 커밋'

이제 변경 사항을 시험 다음과 같이 서버의 Git 리포지토리:

$자식 푸시기원

보시다시피 변경 사항이 잘 업로드됩니다.

사용자 인증 구성:

이 섹션에서는 서버의 Git 리포지토리에서 사용자 인증을 구성하는 방법을 보여 드리겠습니다.

먼저 편집 git.conf 사이트 구성 파일은 다음과 같습니다.

$수도 나노 //아파치2/사용 가능한 사이트/git.conf

이제 구성 파일에 다음 섹션을 추가합니다.

<위치 일치/가다/.*.가다>
인증 유형 기본
인증 이름'깃 검증'
인증 사용자 파일//아파치2/git.passwd
유효한 사용자 필요
위치 일치>

여기, /etc/apache2/git.passwd 사용자 데이터베이스 파일입니다.

최종 구성 파일은 다음과 같아야 합니다. 이제 다음을 눌러 파일을 저장합니다. + NS 뒤이어 그리고 그리고 .

이제 새 사용자 데이터베이스 파일을 만듭니다. /etc/apache2/git.passwd 새 사용자를 추가합니다(예를 들어 쇼본 ) 다음과 같이 데이터베이스 파일에 추가합니다.

$수도htpasswd-씨 //아파치2/git.passwd 쇼본

이제 새 사용자의 새 암호를 입력하고 .

같은 비밀번호를 다시 입력하고 .

사용자-암호 쌍을 데이터베이스에 추가해야 합니다.

이제 다음 명령으로 Apache HTTP 서버를 다시 시작합니다.

$수도systemctl apache2 재시작

이제 복제를 시도하면 시험 저장소를 다시 열면 아래 스크린샷에서 볼 수 있는 것처럼 인증하라는 메시지가 표시됩니다.

사용자 이름과 비밀번호를 사용하여 인증하면 Git 저장소에 액세스할 수 있습니다.

Git 리포지토리에서 푸시 또는 풀을 시도하는 경우에도 사용자 이름과 비밀번호를 묻는 메시지가 표시됩니다.

인증이 완료되면 푸시/풀이 작동합니다.

다른 Git 리포지토리에 대해 다른 사용자 데이터베이스를 설정할 수도 있습니다. 이는 많은 사람들이 동일한 Git 리포지토리에서 함께 작업하는 프로젝트에 유용할 수 있습니다.

Git 저장소별 인증을 설정하려면 먼저 git.conf 사이트 구성 파일은 다음과 같습니다.

$수도 나노 //아파치2/사용 가능한 사이트/git.conf

이제 구성 파일에 다음 줄을 추가합니다.

<위치/가다/test.go>
인증 유형 기본
인증 이름'깃 검증'
인증 사용자 파일//아파치2/git.test.passwd
유효한 사용자 필요
위치>

<위치/가다/테스트2.git>
인증 유형 기본
인증 이름'깃 검증'
인증 사용자 파일//아파치2/git.test2.passwd
유효한 사용자 필요
위치>

각 Git 리포지토리에 대해 시험 그리고 테스트2 , 에게 섹션이 정의됩니다. 각 Git 리포지토리에 대해 다른 사용자 데이터베이스 파일이 사용됩니다.

최종 구성 파일은 다음과 같아야 합니다. 이제 다음을 눌러 구성 파일을 저장합니다. + NS 뒤이어 그리고 그리고 .

이제 다음과 같이 필요한 사용자 데이터베이스를 생성할 수 있습니다.

$수도htpasswd-씨 //아파치2/git.test.passwd 사용자 이름
$수도htpasswd-씨 //아파치2/git.test2.passwd 사용자 이름

완료되면 다음 명령으로 Apache HTTP 서버를 다시 시작합니다.

$수도systemctl apache2 재시작

이제 각 Git 리포지토리에는 액세스할 수 있는 고유한 사용자 집합이 있어야 합니다.

이것이 Ubuntu에서 Apache HTTP Server로 Git 서버를 구성하는 방법입니다. 이 기사를 읽어 주셔서 감사합니다.