Git服务器搭建 --- Linux CentOS 7.3

心血来潮,突然想到以前和老师学习的时候使用的版本管理是SVN,那会只要本地提交到SVN服务器,就自动同步到网站根目录,达到了提交了代码,就能看到远程网站的效果。

所以才有了这篇文章,话不多说,开始教程。


简介

Git 是一个开源分布式版本管理系统,可以有效的,方便的管理大小项目版本问题,由Linux内核开发者Linus Torvalds最初开发的。

据维基百科所说:git最为出色的就是它的合并跟踪(merge tracing)能力。


安装命令

教程中使用的是 Linux CentOS 7.3 的版本。因为系统有自带git,这里不写安装教程。如果觉得版本低,可以重装。下面是安装命令:

yum install -y git


添加用户

添加一个Git的用户,用来运行与管理 Git库。命令如下:

useradd git -g www (后面要做钩子,假设网站根目录的用户组是www)


创建 Git仓库

为方便管理,创建一个目录存放所有仓库,命令如下:

//创建管理目录
cd /home
mkdir git

创建第一个仓库,命令如下:

cd git
git init --bare learngit.git  // --bare 意思就是创建一个裸库
//成功创建会提示:Initialized empty Git repository in /home/git/learngit.git/

chown -R git:www git   //返回home目录,变更用户组

到这里,Git服务器基本搭建成功,接下是添加秘钥、安全问题,设置钩子同步到网站根目录的过程,以及首次 git commit 可能会出现的问题。


客户端生成秘钥

该秘钥用于客户端使用 ssh连接 Git服务器的时候,可以保证不用输入密码。否则客户端每次ssh连接 Git服务器都要输入密码。执行如下命令:

ssh-keygen -t -C '邮箱'

Git服务器搭建 --- Linux CentOS 7.3_第1张图片
该命令产生的界面

如果没有特殊需求,可以一直按回车。最后两行的意思分别是私钥地址,公钥地址。我们要使用的就是公钥,私钥自己保存就行,不要泄露出去。


创建authorized_keys文件

回到 Git服务器,假设你的git目录下有 .ssh目录 和 authorized_keys文件,那么这里可以跳过,执行以下命令:

cd git
mkdir .ssh -m 700   // 创建目录 并给目录 7 权限,其它组设为0

//将客户端的公钥复制到下面这个文件,有多个用户,一行一个公钥,然后保存退出。
vim authorized_keys

chmod 600 .ssh/authorized_keys //修改权限

注:之后客户端ssh连接git就不用密码了,如果还要密码,那么可能上面的某一步做错了,按顺序一步步来,99%不会出错。


设置目录所属

递归处理git目录,及目录里的文件,子目录都变更所有者,所属用户组。避免出现git无法访问,导致客户端clone失败。执行以下命令:

cd /home

chown -R git:www git

禁止Git用户shell登录

为安全着想,禁止该用户shell登录,保持ssh能使用就行。执行以下命令:

vim /etc/passwd //直接修改用户保存的地方

找到git用户,并修改为图中所示一样:

修改后效果

之后,git用户就不能shell登录。


客户端 clone git仓库

到了这一步,我们来试试之前所做的一切有没有达到想要的结果。不过在这之前,先要下载 git客户端软件。官网下载就比较人性化了,只要打开这个官网下载页面,会自动识别操作系统多少位,然后自动添加下载。安装过程这里就不说了。

git官网下载:https://git-scm.com/download/win

打开安装好的git软件,执行命令如下:

git clone git@服务器IP:/home/git/learngit.git

执行这个命令之后,出现下面这个界面,成功一大半了,这些信息说的是,让你核对来自git公钥指纹,可以忽略。这里输入yes 按回车:

Git服务器搭建 --- Linux CentOS 7.3_第2张图片
首次 clone 提示信息

之后出现这个界面,意思是说:已经永久的添加git服务器到信任列表,之后访问就没有这些提示。不过这里问题,就是git服务器22端口没有开启,导致无法clone成功,ssh连接需要开启22端口。还有一种可能就是没有权限访问git仓库,检查上面哪一步没执行顺序来执行命令。


Git服务器搭建 --- Linux CentOS 7.3_第3张图片
输入yes 按回车之后的界面

clone 克隆仓库成功会出现下面的这个提示:


clone 成功的界面

后面一行警告是告诉你clone一个空的仓库,这里忽略它的提示。

我在e盘下执行的命令。所以在执行命令的路径可以找到clone的仓库:


Git服务器搭建 --- Linux CentOS 7.3_第4张图片
本地仓库
注意事项:客户端首次 git commit 的时候,可能会出现以下问题

1)需要输入用户名和邮箱,作用是标识使用该本地仓库的作者是谁,在客户端 git软件 依次执行以下命令:

git config --global user.email '邮箱'
git config --global user.name '用户名'

2)本地仓库推送成功,但是服务器没有找到文件,这是因为裸库为了协同工作,是不会展示文件,不过可以设置 hook 展示文件,执行以下命令:

cd /home/git/hooks && vim post-receive

//添加下面命令   --work-tree 展示文件的目录,--git-dir 仓库目录
#!bin/bash
git --work-tree=/home/www --git-dir=/home/git/learngit.git checkout -f

//保存,执行下面代码
chmod +x post-receive


ps:展示文件的目录需要有写入的权限

本地重新推送然后在 /home/www 就可以看本地推送的文件了。

结语

至此,Git的搭建,全部完成。
可能教程没那么美好,只有懂得教程中所使用的linux基本命令,基本就没什么问题。
如果教程中有什么错误,麻烦告知作者修改。

你可能感兴趣的:(Git服务器搭建 --- Linux CentOS 7.3)