1、下载git,并安装git需要的插件和扩展
# yum install git
# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
2、创建git用户组和用户,用来运行git服务
# groupadd git
# useradd git -g git
3、创建证书登录
创建用于保存用户公钥信息的文件authorized_keys
# cd /home/git/
# mkdir .ssh
# chmod 755 .ssh
# touch .ssh/authorized_keys
# chmod 644 .ssh/authorized_keys
本地window和linux创建ssh key
# ssh-keygen -t rsa -c '你的邮箱地址'
window中的用户主目录下会出现一个.ssh文件夹,其中为SSH Key的秘钥对,id_rsa是私钥,id_rsa.pub是公钥
linux中的SSH Key的秘钥对在root目录下
将刚生成的公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个
4、初始化Git仓库
随便选定一个目录作为Git仓库,这里我选的是/home
# cd /home/
# mkdir gitstore
# chown git:git gitstore/ // 设置目录所有者为git用户组
# cd gitstore/
# git init --bare myproject.git
# chown -R git:git myproject.git/
5、Git服务器打开RSA认证
在Git服务器上需要将/etc/ssh/sshd_config中将RSA认证打开,即:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
6、克隆仓库
$ git clone git@127.45.36.125:/home/gitstore/myproject.git
如果出现了Host key verification failed的错误,可能是你以前通过ssh链接过该服务器,之后服务器重装过系统,需要清空下本地ip密码记录
window在用户主目录下.ssh文件夹中known_hosts文件,删除该文件或者打开文件删除对应服务器的那行记录即可
7、禁用git用户的shell登陆
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
最后一个冒号后改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
8、配置钩子实现客户端push时 代码自动更新
# cd /home/gitstore/myproject.git/hooks
# vi post-receive //输入
#!/bin/sh
export LANG=zh_CN.UTF-8;
GIT=/usr/bin/git;
PROJECT_PATH=/data/wwwroot/default/myproject; // 你的web目录的地址
unset GIT_DIR;
cd $PROJECT_PATH;
# /usr/bin/git reset --hard #这里直接丢弃工作区的内容,防止出现一些奇怪的错误。web目录只做pull,不在这里修改东西
$GIT pull;
保存退出 赋予可执行权限
# chown git:git post-receive
# chmod a+x post-receive
第一次需要在myproject目录下clone一份代码
# cd /data/wwwroot/default/myproject
# git clone /home/gitstore/myproject.git
之后本地代码修改提交后,服务的代码也会同步修改