1、安装git
2、创建用户 这里有个坑,一般不需创建新的用户组,直接使用项目所属用户组(一般为apache或者nginx)
adduser test -g apache
3、为用户名为test 的用户设置密码
passwd test
4、创建仓库
cd /home/
mkdir gitroot
chmown test:apache gitroot
cd /gitroot
git init --bare project.git
chmown -R test:apache project.git
chmod 774 -R project.git
cd ../
chmod 750 gitroot
cd /home/gitroot/project.git
chmod -R 777 objects/
5、安装Git客户端并生成公钥
5.1下载git客户端安装好后右键选择Git GUI Here->Help->Show SSH Key
就能得到私钥和公钥
打开Puttygen
load之前生成好的私钥
得到格式化后的私钥,点击保存私钥
配置小乌龟
5.2创建证书登录
切换到test目录(注意此时test目录的所属用户/用户组应该为:test:apache)
cd /home/test
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
然后将客户端的公钥上传到.ssh目录
cd .ssh
rz
将公钥添加进authorized_keys中
cat id_rsa.pub >> authorized_keys
6、克隆到本地
右键选择git克隆
现在我们能够正常的提交代码到服务器的git,但是还不能自动同步,我们还需要修改服务器的hooks/post-receive文件。具体post-receive内容
#!/bin/sh
unset GIT_DIR
DeployPath="/www/web"
LogPath="/home/gitroot/project.git/hooks"
echo -e "\n================= `date +"%Y-%m-%d %H:%M:%S"` ===============\n" >> $LogPath/gitsync.log 2>&1
cd $DeployPath
#git stash
#先拉取再合并
git pull >> $LogPath/gitsync.log 2>&1
#强制与远程服务器同步,不与本地合并,只能通过提交的客户端提交的方式修改代码。
#git fetch --all
#git reset --hard origin/master
#time=`date`
#echo "web server pull at webserver at time: $time."
echo "================================================" >> $LogPath/gitsync.log 2>&1
更改post-receive的所有者和权限
chmod -R 774 post-receive
chown test:apache post-receive
最后www下项目目录权限
chmod -R apache:apache /www/web
chmod -R 775 /www/web
备注:创建新用户参考test创建过程
参考文章:https://segmentfault.com/a/1190000011234053