1. 程式人生 > >Git 伺服器搭建(CentOs7)

Git 伺服器搭建(CentOs7)

我們經常使用遠端倉庫Github,Github 公開的專案是免費的,但是如果你不想讓其他人看到你的專案就需要收費。

這時我們就需要自己搭建一臺Git伺服器作為私有倉庫使用。

接下來我們將以 Centos 為例搭建 Git 伺服器。

1、安裝Git

$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ yum install git

接下來我們 建立一個git使用者組和使用者,用來執行git服務:

$ groupadd git
$ useradd git -g git

禁用shell登入,編輯/etc/passwd檔案:

修改前內容

git:x:1001:1001:,,,:/home/git:/bin/bash

修改後內容 

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell 

2、建立證書登入

收集所有需要登入的使用者的公鑰,公鑰位於id_rsa.pub檔案中,把我們的公鑰匯入到/home/git/.ssh/authorized_keys檔案裡,一行一個。

如果沒有該檔案建立它:

$ cd /home/git/
$ mkdir .ssh
$ chmod 755 .ssh
$ touch .ssh/authorized_keys
$ chmod 644 .ssh/authorized_keys

3、初始化Git倉庫

首先我們選定一個目錄作為Git倉庫,假定是/home/gitrepo/cyq.git,在/home/gitrepo目錄下輸入命令:

$ cd /home
$ mkdir gitrepo
$ chown git:git gitrepo/
$ cd gitrepo

$ git init --bare cyq.git
Initialized empty Git repository in /home/gitrepo/cyq.git/

以上命令Git建立一個空倉庫,伺服器上的Git倉庫通常都以.git結尾。然後,把倉庫所屬使用者改為git:

$ chown -R git:git cyq.git

4、克隆倉庫

$ git clone [email protected]:/home/gitrepo/cyq.git
Cloning into 'cyq'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.

192.168.20.145 為 Git 所在伺服器 ip ,你需要將其修改為你自己的 Git 服務 ip。

這樣我們的 Git 伺服器安裝就完成。

補充:為了安全,應當隱藏伺服器端的檔案位置,我們可以在家目錄裡建一個軟連結

cd /home/git

ln -s /home/gitrepo www

現在我們就可以通過下面這個地址來克隆倉庫了

git clone [email protected]:www/cyq.git

5、HTTP 協議克隆

1.git鉤子設定

cd /home/gitrepo/cyq.git

cp hooks/post-update.sample hooks/post-update

source hooks/post-update

2.nginx中加入如下配置

location ^~ /gitrepo {
	root /home/;
	charset utf-8;
	autoindex on;
	autoindex_exact_size on;
	autoindex_localtime on;
	if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){
		add_header Content-Disposition 'attachment';
	}
}

現在我們就可以通過下面這個地址來克隆倉庫了

git clone http://192.168.20.145/gitrepo/cyq.git

6、優化美觀克隆地址

在第四步的軟連結所在目錄裡,我們建一個gitrepo的軟連結

cd /home/git

ln -s /home/gitrepo gitrepo

這樣的我們的git克隆地址就變得更優雅了,和github上的一樣啦,如下:

git clone [email protected]:gitrepo/cyq.git
或
git clone http://192.168.20.145/gitrepo/cyq.git