Git 서버 설치 방법

5693 단어
개발 과정에서 종종 git 서버가 코드를 관리하고 저장해야 한다. 어떻게git 서버를 자체적으로 가설하는가. 방법은 매우 간단하다. 여기서git 서버를 어떻게 가설하는가, gitweb와push 코드를 구축한 후에 메일 알림 그룹 구성원에게 보내는 방법을 소개한다.

1. Git 서버 설치


우리는 Ubuntu를 예로 들었다.우선git 서버에'git'라는 사용자를 만들고 그것을 위한 사용자를 만듭니다.ssh 디렉토리.그리고 권한을 git 사용자만 읽기 및 쓰기 권한으로 설정합니다
$ sudo adduser git
$ su git
$ cd
$ mkdir .ssh
$ chmod 700 .ssh

다음에 개발자의 SSH 키를 이 사용자의 authorized 에 추가합니다.keys 파일에서만약 네가 전자 우편을 통해 몇 개의 공개 키를 임시 파일에 병존시켰다면.반복합니다. 공개 키는 대체로 다음과 같습니다.
$ cat /tmp/id_rsa.john.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4L
ojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4k
Yjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9Ez
Sdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myiv
O7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPq
dAv8JggJICUvax2T9va5 gsg-keypair

그것들을 하나하나 authorized에 추가하기만 하면keys 파일 끝 부분과 함께 authorizedkeys는git 사용자에게만 읽기와 쓰기 권한을 설정합니다.
$ cat /tmp/id_rsa.john.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.josie.pub >> ~/.ssh/authorized_keys
$ cat /tmp/id_rsa.jessica.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys

현재 --bare 옵션으로git init를 실행하여 누드 창고를 만들 수 있습니다. 작업 디렉터리가 없는 창고를 초기화합니다.
$ cd /opt/git
$ mkdir project.git
$ cd project.git
$ git --bare init

이때 Join, Josie 또는 Jessica는 그것을 원격 창고로 추가하여 하나의 지점으로 전송하여 첫 번째 버전의 프로젝트 파일을 창고에 업로드할 수 있다.새 항목을 추가할 때마다 셸을 통해 호스트에 로그인하고 누드 창고 디렉터리를 만들어야 합니다.Google은git 사용자 및 프로젝트 창고에 있는 호스트 이름으로gitserver를 사용해도 괜찮습니다.네트워크 내부에서 호스트를 실행하고 DNS에서gitserver가 호스트를 가리키도록 설정하면 다음 명령을 사용할 수 있습니다.
#   John     
$ cd myproject
$ git init
$ git add .
$ git commit -m 'initial commit'
$ git remote add origin git@gitserver:/opt/git/project.git
$ git push origin master

이렇게 하면 다른 사람의 클론과 푸시도 마찬가지로 간단해집니다.
$ git clone git@gitserver:/opt/git/project.git
$ vim README
$ git commit -am 'fix for the README file'
$ git push origin master

이 방법으로 소수의 개발자들을 위해 읽기 전용Git 서비스를 신속하게 설치할 수 있다.
추가 예방 조치로git 자체의git-shell 도구로git 사용자의 활동 범위를 제한할 수 있습니다.git 사용자가 로그인한 셸로 설정하면 일반적인 bash나 csh 같은 셸 프로그램을 사용할 수 없습니다./etc/passwd 파일을 편집하려면 다음과 같이 하십시오.
$ sudo vim /etc/passwd

파일 끝에서 다음과 같은 행을 찾을 수 있습니다.
git:x:1000:1000::/home/git:/bin/sh

bin/sh를/usr/bin/git-shell로 바꾸거나 which git-shell로 실제 설치 경로를 보십시오.행이 수정된 모양은 다음과 같습니다.
git:x:1000:1000::/home/git:/usr/bin/git-shell

현재git 사용자는 SSH 연결으로만 Git 창고를 전송하고 가져올 수 있으며 호스트 셸을 직접 사용할 수 없습니다.일반 SSH 로그인을 시도하면 다음과 같은 거부 메시지가 표시됩니다.
$ ssh git@gitserver
fatal: What do you think I am? A shell?
Connection to gitserver closed.

여기에 제공된 방법은 그룹 내의 모든 구성원이 프로젝트에 대해 읽기와 쓰기 권한을 가진다. 즉, 각 지점마다 push 코드를 사용할 수 있으며 더욱 세밀한 권한 제어가 필요하다면 Gitosis나 Gitolite를 사용하도록 한다.

2. Gitweb 구축


gitweb를 설치하면 사이트를 통해 저희 프로젝트를 방문할 수 있습니다.마치... 와 같다http://git.kernel.org똑같이 떴어요.
우선 기트웹을 설치해야 하며, 아파치가 설치되지 않으면 기트웹을 직접 설치해도 아파치2를 설치할 수 있다.
$ sudo apt-get install gitweb apache2

설치가 끝난 후, 우리는/etc/gitweb을 위한 설정 파일을 수정하기만 하면 됩니다.conf 파일의 $projectroot는 프로젝트 파일을 놓는 디렉터리로 변경되었습니다.
$ vim /etc/gitweb.conf
# path to git projects (<project>.git)
$projectroot = "/opt/git";

이로써 gitweb을 사용할 수 있습니다. http://[git server IP]/gitweb을 통해 접근할 수 있습니다.

3. Push 이후 메일 알림 보내기


그룹 구성원의push 코드가 서버에 도착하면 자동으로 그룹 내의 모든 인원에게 메일을 보냅니다. 이번push의 구체적인 내용은 무엇입니까?구성 방법:
일반적으로Git를 설치할 때 메일을 보내는 스크립트/usr/share/git-core/contrib/hooks/post-receive-email이 이미 존재합니다. 우선 소유자와 실행 권한을 수정하고sendmail을 설치해야 합니다.
$ sudo chown git:git post-receive-email
$ sudo chmod 755 post-receive-email
$ sudo apt-get install sendmail

그리고 프로젝트 디렉터리로 전환된hooks에post-receive 소프트 링크 지향/usr/share/git-core/contrib/hooks/post-receive-email을 추가합니다.
$ cd /opt/git/project.git/hooks
$ ln -s /usr/share/git-core/contrib/hooks/post-receive-email post-receive

마지막으로 프로젝트 디렉터리에 있는 config 파일을 수정하면 됩니다.mailinglist는 메일 리스트이고, envelopesender는 발송자의 메일박스입니다.
$ vim /opt/git/project.git/config
[core]
        repositoryformatversion = 0
        filemode = true
        bare = true

[hooks]
        mailinglist = "[email protected][email protected]"     #      
        envelopesender = [email protected]  #      
        emailprefix = "[Project commit] "   #       
        showrev = "git show -C %s; echo"    #           ,          

메일을 더욱 명확하게 보이기 위해서는 프로젝트 디렉터리에 있는 description 파일을 수정해야 합니다. description 파일에서 기본 첫 번째 줄은 프로젝트 이름이기 때문에 첫 번째 줄에 프로젝트의 이름을 기입해야 합니다. 이것은 메일에 표시됩니다.
$ vim /opt/git/project.git/description
Project_A

우리가 받은 메일의 제목은 다음과 같다.
[Project commit] Project_A branch master updated. 8811b83e1afb373cbe30d5bc25683d74ace2917c

때때로 우리는 시작과 발송이 상당히 느리고 심지어 2, 3분을 기다려야 한다는 것을 발견할 수 있다. 전혀 참을 수 없다. 마지막으로 끊임없는 테스트를 통해 이 문제를 해결했다. 주로/etc/hosts를 수정해야 한다.예를 들어 내 발송자의 영역은 example입니다.com, hostname은 desktop입니다. 그러면 이렇게 수정해야 합니다.
127.0.0.1  example.com localhost desktop

수정 후 sendmail 서비스를 다시 시작하려면:
service sendmail restart

그리고 메일로 보낸 게 솔솔!
이로써 우리Git 서버가 완성되었습니다. 당신의 동료들과 함께 즐거운 코딩을 하세요!

4. 참조 링크


 http://git-scm.com/book/zh/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E6%9E%B6%E8%AE%BE%E6%9C%8D%E5%8A%A1%E5%99%A8
http://josephj.com/entry.php?id=346

좋은 웹페이지 즐겨찾기