git 入门教程之 git 私服搭建教程

git 私服搭建教程

前几节咱们的远程仓库使用的是 github 网站,托管项目大可能是公开的,若是不想让任何人都能看到就须要收费,并且 github 网站毕竟在国外,访问速度太慢,基于上述两点缘由,咱们有必要搭建本身的 git 服务器.linux

虽然咱们能搭建基本的 git 服务器,可是想要作到 github 网站那种规模还不是目前可以探讨的,本节的主要目标是使用咱们私有服务器对我提供相似于github的远程仓库托管服务,如下示例以centos 服务器为例说明:git

安装 git 服务

运行如下命令安装 git 服务github

# 安装 git 相关依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

# 安装 git
yum install git

# 查看 git 版本
git --version
详情请参考 安装 git

配置 git 用户

建立 git 用户组和 git 用户,以便对外提供 git 服务centos

# 新增 git 用户组
groupadd git

# 新增 git 用户并归属于 git 用户组
useradd git -g git

收集 git 公钥

回忆一下,在咱们使用 github 网站时,咱们是否是曾经将本地电脑生成的公钥~/.ssh/id_rsa.pub 复制到 Account -> Settings -> SSH and GPG keys -> New SSH key,而咱们如今搭建的git 服务仍是简单,可是这步骤必不可少,所以只能手动收集素有须要访问咱们服务器的公钥文件.服务器

咱们知道须要登陆咱们服务器的用户公钥通常是存放在~/.ssh/id_rsa.pub ,那当前服务器做为远程服务器将这些公钥存放到哪里呢?还记得上一步咱们建立了 git 用户吗?ssh

由于 linux 系统支持多用户操做,而 git 用户就用于专门运行 git 服务,负责全部和 git 有关的事宜.所以,导入公钥文件的目录就是/home/git/.ssh/authorized_keys文件.一个用户公钥占用一行,几个用户就有几行.curl

# 切换到 git 用户主目录
cd /home/git/

# 建立.ssh 目录
mkdir .ssh

# 赋予标准目录权限
chmod 755 .ssh

# 建立authorized_keys文件
touch .ssh/authorized_keys

# 赋予标签文件权限
chmod 744 .ssh/authorized_keys

初始化 git 仓库

一样咱们和github 网站类比,在 github 建立仓库时都会在当前帐号下建立项目,完整的访问路径大概是这样的: git@github.com:snowdreams1006/git-demo.git,从中咱们能够看出项目仓库都有一个前缀即命名空间,这和上一步操做是否是很相似,上一步收集 git 公钥时咱们也有统一的目录,此次也不例外.测试

假设 git 仓库存放目录在 /home/git/repos/,一样的先建立该目录并赋予响应权限.网站

# 切换到 git 用户主目录
cd /home/git/

# 建立 repos 目录
mkdir repos

# 更改 repos 目录属主
chown git:git repos/

# 切换到 repos 目录
cd repos

# 初始化 git 仓库
git init --bare git-demo.git

# 更改 git-demo.git 仓库属主
chown -R git:git git-demo.git

通过上述操做,咱们成功在远程服务器部署了 git 服务,而且建立了 git-demo 测试项目,实际访问路径大概是这样的
git@snowdreams1006.cn:/home/git/repos/git-demo.giturl

本地克隆远程仓库

身份回到本地电脑,假设本地已搭建好 git 环境,而且生成的ssh 公钥上传到远程服务器,那么咱们接下来就能够和以前远程服务器是 github 网站那样的方式开发咱们的项目了,惟一不一样的是,接下来咱们推送的远程服务器均是咱们刚搭建好的主机.

须要作好内心准备,咱们搭建的服务器还很简单,没有 github 网站那样能够直观操做远程仓库,可是这并不影响咱们的 pull push merge 等操做哟!

git clone git@snowdreams1006.cn:/home/git/repos/git-demo.git
git-指的是 git 用户,snowdreams1006.cn-指的是远程主机域名或ip,/home/git/repos-指的是 git 仓库的目录,git-demo.git-指的是项目名称

如今咱们已经成功搭建好本身的 git私服了,是否是很简单呢?有没有对 gitgithub 进一步理解?欢迎你们一块儿探讨!

相关文章
相关标签/搜索