Git 서버 설치

5193 단어

0. 일반 명령

  • 서버
  •  
    name=xxx;sudo git init --bare /home/git/git/$name.git;sudo chown -R git:git /home/git/git/$name.git
    
     
    name=xxx;sudo rm -rf /home/git/git/$name.git
    
     
    sudo ls /home/git/git/
    
  • 클라이언트
  •  
    name=xxx;git clone [email protected]:~/git/$name.git
    

    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 파일 끝부분으로 authorized_keys 설정은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는 이를 원격 창고로 추가하여 하나의 지점을 전송하여 첫 번째 버전의 프로젝트 파일을 창고에 업로드할 수 있다.주의해야 할 것은 새 항목을 추가할 때마다 셸을 통해 호스트에 로그인하고 누드 창고 디렉터리를 만들어야 한다는 것이다.우리는gitserver를git 사용자와 프로젝트 창고가 있는 호스트 이름으로 삼아도 무방하다.네트워크 내부에서 호스트를 실행하고 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로 바꾸거나 whichgit-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마찬가지로 Gitweb을 먼저 설치해야 한다는 것을 보여 줍니다. 아파치를 설치하지 않으면 Gitweb를 직접 설치하고 아파치2를 설치합니다.
    $ sudo apt-get install gitweb apache2
    

    설치가 끝난 후, 우리는 프로필을 수정해서, /etc/gitweb.conf 파일 중의 $projectroot 을 공사 파일을 넣는 디렉터리로 수정하기만 하면 된다.
    $ vim /etc/gitweb.conf
    # path to git projects (.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 을 추가합니다.
    $ cd /opt/git/project.git/hooks
    $ ln -s /usr/share/git-core/contrib/hooks/post-receive-email post-receive
    

    마지막으로 프로젝트 디렉터리의config 파일을 수정하면 됩니다./usr/share/git-core/contrib/hooks/ post-receive-email 메일 리스트, mailinglist 보낸 사람의 메일박스,
    $ 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"    #  , 
    

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

    좋은 웹페이지 즐겨찾기