在centos上搭建git服务器
本文于2313天之前发表,文中内容可能已经过时。
刚开始搭建blog的时候打算用ftp的,可是期间遇到了各种问题,最后选择了git,其实现在想想遇到的大部分问题应该全是权限的问题,毕竟对linux的认识只能说算是刚刚起步,等有空的时候再去好好研究吧.
vps
(系统centos6.2
,git
版本1.7)
安装git
方法一.yum install -y git
(最简单的方法)
方法二.下载git
源码编译安装,需要安装编译工具(不做介绍)
建立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
修改git
用户的操作权限
vi /etc/passwd
//找到git用户的那一行,修改如下:不允许git用户的ssh登录
git:x:500:500::/home/git:/usr/bin/git-shell
在服务器上建立裸版本库
mkdir /home/testgit
//这里 git init 是初始化空仓库的意思,而参数 --bare 是代表创建裸仓库,而参数 --bare 是代表创建裸仓库
git init --bare sample.git
注意:一定要查看testgit目录的拥有者(必须是git)和所属用户组(可以是git或者root),否则在以后设置免密码clone和push的时候会出现Permission denied error的错误.
clone
远程仓库
cd Desktop
git clone git@115.159.146.94:/home/testgit/sample.git
//这时候会让你输入git的密码,但是我们并没有设置git用户的密码
配置公钥进行免密码登录 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
,否则还是会有权限不足的问题
同步代码到自己的博客站点目录
比如说我们的博客有一点点的优化,但是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的名称变了!
最后再记录一下,配置ssh
免密码登录(so easy)
复制自己主机下的公钥内容
在自己的vps
下
vi /root/.ssh/ authorized_keys
//复制密钥内容进去,好了,现在ssh
也可以免密码登录了