在CentOS系统上搭建Git仓库

前言

前段时间决定重启博客,说句真心的,真的鼓足了勇气。毕竟放下了十年,以前的半吊子又重新回到新手村开启一步一步的探索之旅。既然重头来过,就接触一些以前没有接触过吧,静态博客。在网上仔细挑选了一番,基本定位在这三个工具:

Jekyll

Jekyll做为 GitHub Pages 的构建工具(Ruby 语言),使它成为最流行的静态网站生成工具,但缺点是这三个工具中生成页面的速度最慢的。

Hugo

Hugo是另一个流行的静态网站生成工具,它是使用 go 语言编写,并且使用 Markdown 语法,拥有最快的页面生成速度,缺点是主题不多(其实是没我喜欢的,哈哈哈)。

Hexo

Hexo是用 Node.js 编写的博客框架,支持所有的 GitHub Markdown 特性,页面的生成速度介于前面两者中间。国人用的比较多,所以出问题会比较容易找到解决的方法! 基于自己能力、喜好等因素,最终决定选择 Hexo。但在自己一步一步跟着网上的教程去搭建的过程中,还是踩了不少的坑,特别是在云服务器上创建 git 仓库过程中。其原因嘛,一是自己的理解能力有限(主要原因),二是网上的教程有的说不全,有的又太过于笼统。所以今天我就把自己的踩坑经历分享一下,当作记录也好,免得以后换云服务商的时候又忘记怎么搭建。

搭建过程

1.安装 git

yum install git -y

2.创建一个 git 用户

adduser git

设置 git 这个用户的密码

passwd git

3.创建公钥保存文件

跳转到 git 目录

上图可以看到我是先 CD 到了 git 目录下再进行其他的操作,要注意的是我是在根目录上输入 CD 命令的。

cd home/git/

切换到 git 用户

su git

创建.ssh 目录并给予 700 的权限

mkdir .ssh && chmod 700 .ssh

创建公钥保存文件并给予 600 的权限

touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys

切换回 root 用户

su root

输入密码后回车就行。 这里要说一下的是,如果你不想以后每次把通过 hexo 生成的静态文件推到你 git 仓库时都要输入密码的话,就要修改authorized_keys这个文件,修改方法如下: 以 windows 为例,安装 git,官网地址:https://git-scm.com/downloads 根据你的系统选择 64 位还是 32 位,我想现在的都是用 64 位的系统吧。哈哈哈,下载好后打开安装,一直点“下一步”就好,如果你有特殊僻好的设置,请自行参考度娘去设置。安装完成好 win+r 运行 CMD

1.配置用户名和邮箱:

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱地址"

2.然后生成公钥和私钥

ssh-keygen -t rsa -C "你的邮箱地址"

这时会叫你填写保存公钥和私钥文件的路径,记一下默认的路径,我的是这样子的c/user/skybb/.ssh/id_rsa。其中 skybb 是你电脑的用户名,我们选择默认的路径,按回车

3.根据上面提示的路径打开文件夹

id_rsa.pub 为公钥,用 notepad+打开的(记事本也行,网上说不好,反正我试过几次用记事本打开也没问题),里面的内容就是我们要复制到authorized_keys这个文件里的。

4.回到云服务器的操作

输入

pwd

确认我们是否在/home/git 这个目录里

cd .ssh
vim authorized_keys

按 i 进行编辑

把 id_rsa.pub 里面的内容复制到里面

按 Esc,输入:wq 退出

这样我们就将电脑上的公钥保存到你云服务器上了,以后将静态文件推到仓库时就不用每次都输入密码了。当然如果你觉得每次输入密码也无所谓的话,其实不修改authorized_keys也是没有问题的,这个我验证过。

创建 git 仓库目录

上面有提到我们当前是在 git 的目录里吧。我们先退回上一层目录 home

cd ..

然后在 home 目录里建一个名为 blog.git 的仓库

git init --bare blog.git

配置 git hooks

vim blog.git/hooks/post-receive

按 i 编辑,复制下面内容

#!/bin/sh
git --work-tree=/home/www/hexo --git-dir=/home/blog.git checkout -f

按 Esc,输入:wq 保存退出

这里要说的是,/home/www/hexo是我们存放 hexo 生成的静态文件目录,如果你想更改到其他路径,git hooks 上复制的代码也要跟着更改。

接下来是设置权限

chmod +x blog.git/hooks/post-receive

更改 blog.git 这个仓库的拥有人为 git 用户(怎么感觉这么绕,哈哈哈)

chown -R git:git blog.git

创建上面已经关连的静态目录

mkdir www
cd www
mkdir hexo

设置 hexo 目录的权限与更改拥有人

chmod -R 755 hexo
chown -R git:git hexo

安全设置

其实按上面设置完,你的仓库已经可以使用了,但为了安全考虑,我们应该要改一下 git 用户的相关登陆权限。

cd ../..

退回到服务器的根目录

vim etc/passwd

按 i 进行编辑

找到git:x:1000:1000::/home/git:/bin/bash   # 这个1000有可能会不一样的,应该是ID数,我在另一台服务是1001
改为git:x:1000:1000::/home/git:/usr/bin/git-shell

按 Esc,输入:wq 保存退出

这样,git 用户就只能连接 git 仓库进行推送与拉取的操作,不能登陆服务器并使用命令。

搭建完成

到此,服务器的 git 仓库已经搭建完成了,仓库地址为git@服务器 ip:/home/blog.git