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