liunx centos7源码安装搭建版本控制器git

服务端

1、查看是否安装git   git --version 

    可以看到我的版本比较新,如果版本过低的话,可以执行下面命令,卸载旧版本  yum remove git

2、安装依赖库    

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

        # yum install gcc perl-ExtUtils-MakeMaker

3、下载解压git的源码包  (https://mirrors.edge.kernel.org/pub/software/scm/git/  有各个版本,我选择了2.9.2版本下载)

         # wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.3.tar.gz

         #tar -xzvf  git-2.9.3.tar.gz

4、安装git 编译安装大概几分钟就可搞定。

           # cd  git-2.9.3

           # make prefix=/usr/local/git all    //编译安装到/usr/local/git 目录下面

            # make prefix=/usr/local/git install

5、第4步如果报 undefined reference to `libiconv' 错误请看,如果没报错,请跳过此步骤

        5.1 查看是否存在 /usr/local/lib/libiconv.so 文件,如果没有,则需要安装 libiconv(安装请参考网上教程)

        5.2 如果存在文件,或者已经安装完libiconv库,创建一个软链到/usr/lib

            # ln -s /usr/local/lib/libiconv.so /usr/lib

            # ln -s /usr/local/lib/libiconv.so.2 /usr/lib

        5.3 然后回到刚才编译安装git的目录继续编译

            #   cd  到你刚才解压git的目录下面

            # make configure

            #  ./configure --prefix=/usr/local --with-iconv=/usr/local/libiconv

            # make && make install

6、检查是否安装成功

            # git --version


       git安装完毕

    7、创建一个git 用户组合用户 用来运行git服务

        # groupadd git     //创建组

        # useradd git -g git    //创建git用户,并加入刚才创建的git组里面

        # passwd git   //为git 用户添加密码

8、创建证书,免密登录

    8.1 客户的生成秘钥

        # git config --global user.name "Timi"     //  " " 里面是你要创建的用户名

        # git config --global user.email "Timi@qq.com"

    8.2    查看公钥私钥 

            window 用户在  C盘/用户/当前所登录的用户文件夹/.ssh/

            linux  用户 默认情况下, SSH 密钥存储在其 ~/.ssh 目录下


其中*.pub 为公钥,可以随便透漏给别人


        8.3  收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

        # cd /home/git/          (如果没有git目录,请删除git用户组合用户重新创建git用户组合git用户)

        #  mkdir.ssh

        # chmod700.ssh

        #  touch.ssh/authorized_keys

        #  将公钥复制到 authorized_keys

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

        即:将配置文件修改

            .RSAAuthentication yes

            .PubkeyAuthentication yes

            .AuthorizedKeysFile .ssh/authorized_keys

9、初始化Git仓库,并将现有的项目加入到git

        9.1    创建一个空仓库 

            # cd /data

            # git init --bare  test.git     //服务器上的Git仓库通常都以.git结尾。

            # chown -Rf git:git test.git 

        9.2  将现有的项目加入git

                # cd /home/www/tp5

                # git init

                # git add .

                # git commit -m '将现有的项目加入git'

                # git remote add origin git@114.215.214.1:/home/data/test.git

                # git push origin master

        9.3,其他开发者就可以使用git clone 将项目克隆到本地,如果需要免密克隆提交,请参考 第8步

                # git clone git@114.215.214.1:/home/data/test.git


10、将git仓库的内容同步到web开发目录

    我的git仓库为 /home/data/test.git

     web目录为 /home/www

    10.1 添加钩子

            # cd /home/data/test.git/hooks

            # vim post-receive

                #!/bin/bash

                git --work-tree=/home/wwwroot/test checkout -f

                sudo chown -Rf www:www /home/www/test 


           //注释  

                添加第二行是因为我的git 仓库所属是git,而开发目录所属为www,所以更改了一下目录所属,当然你也可以不添加,没有添加第二行,直接可以跳到10.2步

                 如果添加了第二行,还要执行一下动作,使git普用户可以使用  chown命令,否则会报错

                # visudo   


添加一行 %git ALL=NOPASSWD:/bin/chown

        10.2 给钩子添加可执行权限

                # chmod +x post-receive

 然后就可以开始从本地开发了,在本地版本库工作区里开发,然后使用git push指令推送到远程裸版本库,钩子会post-receive自动生效,将文件检出到--work-tree目录里,实现同步


写到最后    

1》为了安全起见,可以将git用户禁止shell 登录

    # vim /etc/passwd

    将 git: x :1001:1001:,,,:/home/git:/bin/bash

改为:

git: x :1001:1001:,,,:/home/git:/usr/bin/git-shell

  2》》如果发现已经添加了公钥到服务器,但是还提示输入密码。

    可尝试  chmod 700 /home/git/.ssh           chmod 644 /home/git/.ssh/authorized_keys

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • GIT分布式版本控制系统最佳实践 这篇文章来自于老男孩教育高级架构师班12期的徐亮偉同学。 首先感谢老男孩架构师班...
    meng_philip123阅读 3,520评论 4 36
  • 第1章 Shell和vi 1.1什么是shell 在计算机科学中,Shell俗称壳,用来区别于Kernel(核),...
    福尔摩鸡阅读 992评论 0 1
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,726评论 4 54
  • 我想, 我若告诉大家, 我却乎人格分裂, 定是会得到大家热切的关怀的吧。 化学的小伙伴会问啊:均裂还是异裂? 生物...
    贝龙阅读 1,167评论 11 4
  • 今天熙熙的幼儿园开运动会,爸爸本来要去上班的,但熙熙很希望爸爸妈妈可以和他一起去参加运动会。在熙熙表达自己的...
    生命的本色阅读 359评论 2 6