centos7搭建git服务器,并同步网站

2017-03-02 20:28:46 字数 2112 阅读 467 评论 0

初始化仓库

cd /data/git/
git init --bare blog.git

按照网上搜到的那些方法,都必须将/data/www/设为git用户,可我依旧想让网站目录属于www用户,百度谷歌无解之后,自己想了一个办法,方法如下:

groupadd www
useradd -g www -s /usr/sbin/nologin www
将git用户添加进www用户组
groupadd git
useradd -d /data/git/ -m -G www -g git -s `which git-shell` git
#添加git登录密码
passwd git


chown -R www:www /data/www
chown -R git:git /data/git
#这个给775权限是为了让git用户能操作网站目录
chmod -R 775 /data/www/

编辑git的post-receive钩子

添加如下代码

vim /data/git/blog.git/hooks/post-receive
#!/bin/sh
export LANG=zh_CN.UTF-8
GIT_WORK_TREE=/data/www/blog git checkout -f
sudo chown -R www:www /data/www/blog
sudo chmod -R 775 /data/www/blog


chown git:git /data/git/blog.git/hooks/post-receive
#由于该文件其实就是一个shell文件,我们还应该为其设置可执行权限
chmod +x /data/git/blog.git/hooks/post-receive
#给git用户添加sudo权限
visudo
#末尾添加下面的代码
git ALL=(ALL) NOPASSWD: ALL

本地客户端测试

#初始化仓库
git init
git remote add origin  git@服务器IP或绑定的域名:/data/git/blog.git
git pull origin master
#输入git密码用户
#如果服务器仓库中有文件,那么现在可以看到拉取到本地了

#如果服务器仓库没有文件,则将本地文件推到服务器进行测试
touch index.php
git add -A
git commit -m "test commit"
#第一次可能push需要写全命令,今后只需要git push就行
git push origin master

使用公钥

客户端生成

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

ssh-keygen -t rsa -f ~/.ssh/id_rsa_appysd -C "5303221@gmail.com"
#密码可以不设直接回车跳过(免密码登录)
$  ssh-add -L
Could not open a connection to your authentication agent.
#如果报错就先执行
$ ssh-agent bash

$ ssh-add ~/.ssh/id_rsa_appysd

cd ~/.ssh
vim config
#添加下面的配置(注意IdentityFile修改成自己的路径)
Host appysd
    HostName 120.78.136.133
    Port 22
    User git
    IdentityFile /C/Users/Administrator/.ssh/id_rsa_appysd

Git服务器打开RSA认证

在Git服务器上首先需要将/etc/ssh/sshd_config中将RSA认证打开:

RSAAuthentication yes(centos7.4请无视,该选项已弃用)
PubkeyAuthentication yes
StricModes no

切换到git用户的家目录,把开发者的个人电脑的id_rsa.pub内容复制进去

vim /data/git/.ssh/authorized_keys

测试是否免密码

git clone git@appysd:/data/git/yuesao.git
#这儿的appysd是根据config文件中的Host选项来的

修改权限  重要: 修改 .ssh 目录的权限为 700 修改 .ssh/authorized_keys 文件的权限为 600

cd ~git/
chmod 700 .ssh
chmod 600 .ssh/*

如果上面的公钥登录教程不成功,调试方法如下

/usr/sbin/sshd -d -p 1234  #服务器端打开debug
ssh -vv appysd -p 1234  #客户端测试

仔细看服务端和客户端的debug输出信息,找出问题所在。

标签: CentOS Git

评论(0)

请先登陆,参与评论。

    聚合标签