CentOS搭建git服务器

一.yum安装git
yum install git -y
git --version

二.创建git用户
useradd git
passwd git # 会提示输入密码,按要求输入即可

修改/etc/passwd

git:x:1000:1000::/home/git:/usr/bin/git-shell

三.创建空仓库
在/home/git/下创建一个project.git的文件夹,之后我们在这个文件夹下初始化创建仓库并给予相应权限。
mkdir project.git
cd project.git
git init --bare # git init 是初始化空仓库的意思,而参数 --bare 是代表创建裸仓库,这个参数一定记得带上
cd ..
chown -R git:git project.git/

四.在服务器端开RSA认证

 

服务器安装SSH(安装yum install sshd 启动systemctl start sshd.service 默认启动systemctl enable sshd.service)后,进入 /etc/ssh 目录,编辑 sshd_config修改配置

 

PasswordAuthentication no中的“no”改为yes,如果有注释,将注释去掉(防止git提交出现:publickey,gssapi-with-mic,gssapi-keyex)

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

找到并开启这三行,如果没有自己写上去,之后重启ssh
systemctl restart sshd.service
.ssh/authorized_keys这个是公钥存储的地方,是在/home/git/下的.ssh/下存放,实际目录/home/git/.ssh/authorized_keys:
vim .ssh/authorized_keys
输入在客户端中cat id_rsa.pub文件的内容,一行一用户
chmod 700 .ssh
cd .ssh
chmod 600 authorized_keys

五.实现自动同步到站点目录(www)
就比如刚才我们往远程仓库推送了index.php文件,虽然提示推送成功,但是我们现在在服务器端还看不到效果,心理总是不爽。又比如我写了个html页面,我想在站点中马上看到,那自动同步就派上用场了。
自动同步功能用到的是 git 的钩子功能.
服务器端:进入裸仓库:/home/git/project.git
cd /home/git/project.git
cd hooks
//这里我们创建post-receive文件
vim post-receive
//在该文件里输入以下内容
#!/bin/bash
git --work-tree=/home/www checkout -f
//保存退出后,将该文件用户及用户组都设置成git
chown git:git post-receive
//由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限
chmod +x post-receive
如果你在Git推送的工程中发现推送成功但是在www目录下并没有自己的代码,这时候你可要注意了:这是由于文件夹的权限的原因造成的! 假设你的www目录的所属的用户组为root,你可以将你的git用户加入这个组;并给git添加写入权限,或者其他解决方法,反正你要服务器上的git用户有权限进入www文件夹。
chown -R git:git /home/www

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值