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

4次阅读

共计 1864 个字符,预计需要花费 5 分钟才能阅读完成。

git 私服搭建教程
前几节我们的远程仓库使用的是 github 网站, 托管项目大多是公开的, 如果不想让任何人都能看到就需要收费, 而且 github 网站毕竟在国外, 访问速度太慢, 基于上述两点原因, 我们有必要搭建自己的 git 服务器.
虽然我们能搭建基本的 git 服务器, 但是想要做到 github 网站那种规模还不是目前能够探讨的, 本节的主要目标是使用我们私有服务器对我提供类似于 github 的远程仓库托管服务, 以下示例以 centos 服务器为例说明:
安装 git 服务
运行以下命令安装 git 服务
# 安装 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 服务
# 新增 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 用户吗?
因为 linux 系统支持多用户操作, 而 git 用户就用于专门运行 git 服务, 负责所有和 git 有关的事宜. 因此, 导入公钥文件的目录就是 /home/git/.ssh/authorized_keys 文件. 一个用户公钥占用一行, 几个用户就有几行.
# 切换到 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.git
本地克隆远程仓库
身份回到本地电脑, 假设本地已搭建好 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 私服了, 是不是很简单呢? 有没有对 git 和 github 进一步理解? 欢迎大家一起探讨!

正文完
 0