我们经常使用远程仓库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 git@192.168.20.145:/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 git@192.168.20.145: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 git@192.168.20.145:gitrepo/cyq.git
或
git clone http://192.168.20.145/gitrepo/cyq.git