在centos上搭建git服务器并自动同步代码到自己的blog站点

vps(系统centos6.2,git版本1.7)

1.安装git

方法一.yum install -y git(最简单的方法)
方法二.下载git源码编译安装,需要安装编译工具(不做介绍)

2.建立git用户(可选)

注意:有些系统在你安装git的时候,可能已经给你自动建立了git用户,因此你可以忽略这一步.
添加git用户

//自动在home下建立git目录
useradd git
//切换到/home下查看
ls -al
//注意一定要注意查看git目录的拥有者(必须是git)和所属用户组(可以是git或者root),
//否则在以后设置免密码clone和push的时候会出现Permission denied error的错误.
//修改git目录拥有者和所属群组为git
chown -R git:git git
F9D26F43-5BBE-4C51-8E72-8F94171EBD94.png

4.修改git用户的操作权限

vi /etc/passwd
//找到git用户的那一行,修改如下:不允许git用户的ssh登录
git:x:500:500::/home/git:/usr/bin/git-shell

3.在服务器上建立裸版本库

mkdir /home/testgit
//这里 git init 是初始化空仓库的意思,而参数 --bare 是代表创建裸仓库,而参数 --bare 是代表创建裸仓库
git init --bare sample.git
注意:一定要查看testgit目录的拥有者(必须是git)和所属用户组(可以是git或者root),否则在以后设置免密码clone和push的时候会出现Permission denied error的错误.

5.clone远程仓库

cd Desktop
git clone [email protected]:/home/testgit/sample.git 
//这时候会让你输入git的密码,但是我们并没有设置git用户的密码

6配置公钥进行免密码登录 clone和push

mac下的公钥和密钥在 ~/.ssh下

cd ~/.ssh
ls -a
//会看到如下文件(如果没有请查看如何生成公钥和密钥)
id_rsa(密钥)   id_rsa.pub(公钥)  known_host

//生成公密钥 终端
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/fdipzone/.ssh/id_rsa): 这里输入要生成的文件名
Enter passphrase (empty for no passphrase): 这里输入密码 
Enter same passphrase again: 这里重复输入密码
Your identification has been saved in /home/fdipzone/.ssh/id_rsa.
Your public key has been saved in /home/fdipzone/.ssh/id_rsa.pub.
The key fingerprint is:
f2:76:c3:6b:26:10:14:fc:43:e0:0c:4d:51:c9:a2:b0
The key's randomart image is:
+--[ RSA 2048]----+
|    .+=*..                  |
|    . += +                  |
| o oo+ |
| E . . o |
| ..S. |
| .o . |
| .o + |
| ...oo |
| +. |
+-----------------+
//密钥生成成功

在centos

cd /home/git/.ssh
//建立授权文件 authorized_keys,文件不存在则自己新建一个
//将本地机器上的 id_rsa.pub(公钥)里面的复制一份粘贴到centos下/home/git/.ssh/authorized_keys

authorized_keys文件看起来是这样的,上下两个免密码登录用户的公钥 ,上下分开.

注意: .ssh 和 authorized_keys的拥有者必须是git,否则还是会有权限不足的问题

在centos上搭建git服务器并自动同步代码到自己的blog站点_第1张图片
Paste_Image.png

8.同步代码到自己的博客站点目录

比如说我们的博客有一点点的优化,但是push代码之后无法立即查看效果,这个地方我们就需要自动同步就派上用场了。自动同步功能用到的是 git 的钩子功能,

cd /home/testgit/sample.git
cd hooks
//这里我们创建post-receive文件
vi post-receive
//在该文件里输入以下内容./home/www就是我blog站点的目录
#!/bin/bash
git --work-tree=/home/www checkout -f
//保存退出后,将该文件用户及用户组都设置成
gitchown git:git post-receive
//由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限
chmod +x post-receive

此时clone自己的blog站点,修改一下网站的名称,push道git服务器,刷新网站首页,是不是发现自己blog的名称变了!

9.最后再记录一下,配置ssh 免密码登录(so easy)

复制自己主机下的公钥内容
在自己的vps下

vi  /root/.ssh/ authorized_keys

//复制密钥内容进去,好了,现在ssh也可以免密码登录了

你可能感兴趣的:(在centos上搭建git服务器并自动同步代码到自己的blog站点)