• 当前位置: 首 页 > 教育百科 > 学历/技能 > 正文

    在centos上搭建git服务器并自动同步代码

    :2019年01月18日
    开源博客

    服务器上安装Git依赖及Git

    参考文章

    CentOS安装Git实现多人同步开发

    centos中GIT服务器搭建及使用密钥连接

    简述

    1、服务器上安装Git依赖及Git

    2、创建Git用户及所属组

    3、服务器上初始化Git仓库

    4、安装Git客户端并生成公钥

    5、创建证书登录

    6、使用Git Bash克隆服务器上的空仓库

    7、将本地库项目推送到服务器

    1、服务器上安装Git以及依赖

    1.1安装Git依赖

    yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

    1.2.安装Git

    yum install -y git

    2、创建”用户组“和”用户“,用来运行git服务

    2.1创建用户组

    groupadd git

    2.2添加git用户组下的用户

    adduser phper -g git

    2.3为用户名为phper 的用户设置密码

    passwd phper

    Changing password for user git.

    New password:

    Retype new password:

    passwd: all authentication tokens updated successfully.

    3、建立git仓库

    mkdir gitroot

    chmown phper:git gitroot

    cd /gitroot

    git init --bare project.git

    chmown -R phper:git project.git

    chmod 774 -R project.git

    cd ../

    chmod 750 gitroot

    4、安装Git客户端并生成公钥

    4.1下载git客户端安装好后右键选择Git GUI Here->Help->Show SSH Key

    就能得到私钥和公钥

    打开Puttygen

    load之前生成好的私钥

    得到格式化后的私钥,点击保存私钥

    配置小乌龟

    4.2创建证书登录

    切换到phper目录

    cd /home/phper

    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

    5、克隆到本地

    右键选择git克隆

    这样就把服务器的空仓库拉取下来了。

    现在我们能够正常的提交代码到服务器的git,但是还不能自动同步,我们还需要修改服务器的hooks/post-receive文件。具体post-receive内容

    #!/bin/sh

    unset GIT_DIR

    DeployPath="/alidata/www/project"

    LogPath="/alidata/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 origin master >> $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 phper:git post-receive

    最后在www下

    mkdir project

    chown -R phper:git project

    chmod -R 774 project

    cd /alidata/www

    git clone /gitroot/project.git

    好了git的同步就弄好了

    如果同步用不了,打开hooks/gitsync.log查看错误日志

    可能预见的错误

    1、fatal: /usr/libexec/git-core/git-pull cannot be used without a working tree.

    同步的项目文件夹没有建立---------------解决办法:在www下建立project项目文件夹

    2、fatal: Not a git repository (or any of the parent directories): .git

    项目文件里没有git初始化------------------解决办法:在www路径下执行git clone /alidata/gitroot/project.git

    3、error: cannot open .git/FETCH_HEAD: Permission denied

    git在项目目录没有写入权限---------------解决办法:修改所有者以及权限 chown -R phper:git project / chmod -R 774 project

    4、每次pull push的时候还是要输入密码

    秘钥没有起作用-----------------------------解决办法:/var/log/secure查看一下日志,是否是.ssh的权限问题

    chmod 700 .ssh

    chmod 600 .ssh/authorized_keys

    来源:https://my.oschina.net/u/3367404/blog/3003136

    作者:linjin200

    [编辑:宋聪乔 &发表于江苏]
    [我要纠错]

    来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
    声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。

    关键词: 参考 文章 CentOS 安装 实现
    有价值
    0
    无价值
    0
    猜您喜欢
    最热文章

    暂不支持手机端,请登录电脑端访问

    正在加载验证码......

    请先完成验证