本地window,服务器linux(centos)
root用户
1.安装git
yum install git -y
2.创建git用户并设置密码
useradd git
passwd git
这时候/home下生成git目录
3.创建仓库
mkdir /home/data
cd /home/data
git --bare init 初始化git仓库
4.通过秘钥方式实现免密码认证
cd /home/git
mkdir .ssh chmod 700 .ssh
创建秘钥文件,设置权限并设置所属git用户
cd .ssh touch authorized_keys chmod 600 authorized_keys
chown git:git -R /home/git/.ssh/
公钥配置路径在/etc/ssh/sshd_config,找到AuthorizedKeysFile可查看配置路径
5.window本地找到公钥证书
cd /c/Users/Administrator/.ssh
如果没有证书,ssh-keygen -t rsa -C "xxxxxxxx@qq.com"生成
cat id_rsa.pub
证书内容复制到第四步的authorized_keys文件内
多个客户端的话证书都一并复制到这个文件中换行隔开就好
6.本地克隆项目
本地直接git clone git@192.168.23.130:/home/data (git@域名:项目仓库)无需验证
7.服务器修改钩子文件,本地提交,git服务器仓库代码自动拉取到项目(git仓库和项目是同一台服务器)
mkdir /home/project 创建服务器项目目录
cd /home/project
git clone /home/data
这时候项目拉取到了/home/project/data下
vim /home/data/hooks/post-receive 如果只有post-receive.sample,拷贝一份名字为post-receive打开
复制下面内容到文件尾
#!/bin/sh
unset GIT_DIR
NowPath=`pwd`
DeployPath="/home/project/data"
cd $DeployPath
git pull origin master
cd $NowPath
exit 0
然后给钩子文件添加执行权限
chmod a+x /home/data/hooks/post-receive
修改仓库与项目的所属组与所属用户为git
chown -R git:git /home/data
chown -R git:git /home/project/data
这时候,本地提交代码后,服务器/home/data-project/data就有自动拉取提交的代码
8.禁止git用户shell登录
vi /etc/passwd
git:x:501:501::/home/git:/bin/bash
改为
git:x:501:501::/home/git:/bin/git-shell