一 安装最新版git
1.查看yum源仓库git信息:
yum info git
初始化的阿里云contos7的yum是1.8.3.1版本的;和官网不匹配;
2.依赖库安装
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-deve
yum install gcc perl-ExtUtils-MakeMaker
3.卸载低版本git(未安装可跳过)
通过命令:
git –-version
查看系统带的版本,Git 版本是: 1.8.3.1
,所以先要卸载低版本的 Git,命令: yum remove git;
3.下载最新版git源码包
cd /usr/local/git #进入文件位置,自定义,个人安装包存放位置,
wget https://github.com/git/git/archive/v2.9.2.tar.gz #下载最新源码包
tar -xzvf v2.9.2.tar.gz #解压目录
cd git-2.9.2
# make prefix=/usr/local/git all
# make prefix=/usr/local/git install #进行编译安装
vi /etc/profile #添加环境变量
export PATH="/usr/local/git/bin:$PATH" #添加到文本中;
source /etc/profile #是配置立即生效
git --version #查看版本号
将git设置为默认路径,不然后面克隆时会报错
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-packln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
二 创建git用户及用户组
$ groupadd git
$ useradd git -g git
$ passwd git #参数是用户名
最好切换到git用户 不然后面新建的git仓库都要改权限!之后克隆需要密码很可能是权限错误;Git服务器打开RSA认证 。在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开,
1.RSAAuthentication yes
2.PubkeyAuthentication yes
3.AuthorizedKeysFile .ssh/authorized_keys
这里我们可以看到公钥存放在.ssh/authorized_keys文件中。
将本地git公钥加入远程库authorized_keys中就不需要密码克隆了
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub
文件,把所有公钥导入到/home/git/.ssh/authorized_keys
文件里,一行一个。
$ cd /home/git/
$ mkdir .ssh #新建文件夹
$ chmod 700 .ssh
$ touch .ssh/authorized_keys #新建文件
$ chmod 600 .ssh/authorized_keys
权限为git所有;$ cd /home/git
$ git init --bare ceshi.git
四 克隆到本地git clone git@IP:/home/git/ceshi.git #以git用户克隆
如果公钥已放入远程库,还需要密码,很可能是权限问题
五 添加钩子(自动更新)
vi post-receive #编辑钩子文件,在ceshi.git/hooks/post-receive
写入
#!/bin/sh
DIR_ONE=/home/www/
git --work-tree=${DIR_ONE} clean -fd
git --work-tree=${DIR_ONE} checkout --force #把内容复制到post-receive
DIR_ONE=/home/www/
git --work-tree=${DIR_ONE} clean -fd
git --work-tree=${DIR_ONE} checkout --force #把内容复制到post-receive
chown -R git:git post-receive
chmod +x post-receive
在本地提交后查看路径/home/www/下是否更新
git更新时强制改变文件权限
在 .git/hooks/ 目录下
新建一个名为 post-checkout 的文件
将下列内容保存
#!/bin/sh
pwd
echo "This is post-checkout hook"
chmod -R 755 ./* && chown -R www:www ./*
- 1
- 2
- 3
- 4
使post-checkout可以被调用 chmod +x post-checkout