ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

版本控制系统之基于httpd搭建私有git仓库

2020-10-10 20:00:54  阅读:172  来源: 互联网

标签:httpd 00 git x86 10 私有 64 el7


  在上一篇博客中,我们主要聊到了git的基本工作原理和一些常用的git命令的使用;回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13787701.html;今天我们来聊一聊git私有仓库的搭建;

  我们知道对于git的仓库来讲,不外乎就是一个文件服务器,也就说git仓库可以使用传输文件的协议来把用户本地仓库中的代码推送到远程仓库进行保存,同时用户也可以从远处仓库拖代码到本地仓库;这是git仓库的最基本功能;常用的传输文件的协议有http、https、ftp、ssh等等,当然也有git本身的协议git来传输文件;好了下面我们来看一下基于httpd来搭建git的私有仓库对过程吧;

  环境准备

名称 ip 端口 角色
node01 192.168.0.41 80 客户端
node02 192.168.0.42 80 服务端

 

 

 

 

 

   在node02上安装httpd、git

[root@node02 ~]# yum install -y httpd git
Loaded plugins: fastestmirror
base                                                                                               | 3.6 kB  00:00:00     
epel                                                                                               | 4.7 kB  00:00:00     
extras                                                                                             | 2.9 kB  00:00:00     
updates                                                                                            | 2.9 kB  00:00:00     
(1/2): epel/x86_64/updateinfo                                                                      | 1.0 MB  00:00:00     
(2/2): epel/x86_64/primary_db                                                                      | 6.9 MB  00:00:01     
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
Resolving Dependencies
--> Running transaction check
---> Package git.x86_64 0:1.8.3.1-23.el7_8 will be installed
--> Processing Dependency: perl-Git = 1.8.3.1-23.el7_8 for package: git-1.8.3.1-23.el7_8.x86_64
--> Processing Dependency: rsync for package: git-1.8.3.1-23.el7_8.x86_64
--> Processing Dependency: perl(Term::ReadKey) for package: git-1.8.3.1-23.el7_8.x86_64
--> Processing Dependency: perl(Git) for package: git-1.8.3.1-23.el7_8.x86_64
--> Processing Dependency: perl(Error) for package: git-1.8.3.1-23.el7_8.x86_64
---> Package httpd.x86_64 0:2.4.6-93.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-93.el7.centos for package: httpd-2.4.6-93.el7.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-93.el7.centos.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-93.el7.centos.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-93.el7.centos.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-5.el7 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package httpd-tools.x86_64 0:2.4.6-93.el7.centos will be installed
---> Package mailcap.noarch 0:2.1.41-2.el7 will be installed
---> Package perl-Error.noarch 1:0.17020-2.el7 will be installed
---> Package perl-Git.noarch 0:1.8.3.1-23.el7_8 will be installed
---> Package perl-TermReadKey.x86_64 0:2.30-20.el7 will be installed
---> Package rsync.x86_64 0:3.1.2-10.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================================================
 Package                         Arch                  Version                               Repository              Size
==========================================================================================================================
Installing:
 git                             x86_64                1.8.3.1-23.el7_8                      updates                4.4 M
 httpd                           x86_64                2.4.6-93.el7.centos                   base                   2.7 M
Installing for dependencies:
 apr                             x86_64                1.4.8-5.el7                           base                   103 k
 apr-util                        x86_64                1.5.2-6.el7                           base                    92 k
 httpd-tools                     x86_64                2.4.6-93.el7.centos                   base                    92 k
 mailcap                         noarch                2.1.41-2.el7                          base                    31 k
 perl-Error                      noarch                1:0.17020-2.el7                       base                    32 k
 perl-Git                        noarch                1.8.3.1-23.el7_8                      updates                 56 k
 perl-TermReadKey                x86_64                2.30-20.el7                           base                    31 k
 rsync                           x86_64                3.1.2-10.el7                          base                   404 k

Transaction Summary
==========================================================================================================================
Install  2 Packages (+8 Dependent packages)

Total download size: 7.9 M
Installed size: 33 M
Downloading packages:
(1/10): apr-1.4.8-5.el7.x86_64.rpm                                                                 | 103 kB  00:00:00     
(2/10): apr-util-1.5.2-6.el7.x86_64.rpm                                                            |  92 kB  00:00:00     
(3/10): httpd-tools-2.4.6-93.el7.centos.x86_64.rpm                                                 |  92 kB  00:00:00     
(4/10): mailcap-2.1.41-2.el7.noarch.rpm                                                            |  31 kB  00:00:00     
(5/10): perl-Error-0.17020-2.el7.noarch.rpm                                                        |  32 kB  00:00:00     
(6/10): perl-TermReadKey-2.30-20.el7.x86_64.rpm                                                    |  31 kB  00:00:00     
(7/10): httpd-2.4.6-93.el7.centos.x86_64.rpm                                                       | 2.7 MB  00:00:00     
(8/10): perl-Git-1.8.3.1-23.el7_8.noarch.rpm                                                       |  56 kB  00:00:00     
(9/10): rsync-3.1.2-10.el7.x86_64.rpm                                                              | 404 kB  00:00:00     
(10/10): git-1.8.3.1-23.el7_8.x86_64.rpm                                                           | 4.4 MB  00:00:00     
--------------------------------------------------------------------------------------------------------------------------
Total                                                                                     8.5 MB/s | 7.9 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : apr-1.4.8-5.el7.x86_64                                                                                1/10 
  Installing : apr-util-1.5.2-6.el7.x86_64                                                                           2/10 
  Installing : 1:perl-Error-0.17020-2.el7.noarch                                                                     3/10 
  Installing : httpd-tools-2.4.6-93.el7.centos.x86_64                                                                4/10 
  Installing : rsync-3.1.2-10.el7.x86_64                                                                             5/10 
  Installing : perl-TermReadKey-2.30-20.el7.x86_64                                                                   6/10 
  Installing : perl-Git-1.8.3.1-23.el7_8.noarch                                                                      7/10 
  Installing : git-1.8.3.1-23.el7_8.x86_64                                                                           8/10 
  Installing : mailcap-2.1.41-2.el7.noarch                                                                           9/10 
  Installing : httpd-2.4.6-93.el7.centos.x86_64                                                                     10/10 
  Verifying  : git-1.8.3.1-23.el7_8.x86_64                                                                           1/10 
  Verifying  : mailcap-2.1.41-2.el7.noarch                                                                           2/10 
  Verifying  : perl-TermReadKey-2.30-20.el7.x86_64                                                                   3/10 
  Verifying  : 1:perl-Error-0.17020-2.el7.noarch                                                                     4/10 
  Verifying  : apr-util-1.5.2-6.el7.x86_64                                                                           5/10 
  Verifying  : httpd-2.4.6-93.el7.centos.x86_64                                                                      6/10 
  Verifying  : rsync-3.1.2-10.el7.x86_64                                                                             7/10 
  Verifying  : apr-1.4.8-5.el7.x86_64                                                                                8/10 
  Verifying  : httpd-tools-2.4.6-93.el7.centos.x86_64                                                                9/10 
  Verifying  : perl-Git-1.8.3.1-23.el7_8.noarch                                                                     10/10 

Installed:
  git.x86_64 0:1.8.3.1-23.el7_8                             httpd.x86_64 0:2.4.6-93.el7.centos                            

Dependency Installed:
  apr.x86_64 0:1.4.8-5.el7                apr-util.x86_64 0:1.5.2-6.el7       httpd-tools.x86_64 0:2.4.6-93.el7.centos  
  mailcap.noarch 0:2.1.41-2.el7           perl-Error.noarch 1:0.17020-2.el7   perl-Git.noarch 0:1.8.3.1-23.el7_8        
  perl-TermReadKey.x86_64 0:2.30-20.el7   rsync.x86_64 0:3.1.2-10.el7        

Complete!
[root@node02 ~]# 

  创建git仓库目录,并使用git进行仓库初始化操作,并把对应的仓库属主属组修改成apache用户

  利用htpasswd工具生成密钥文件

  提示:这个密钥文件我们不需要更改属组和属主,只要保证启动httpd的用户有读的权限即可;

  新建一个配置,配置一个虚拟主机专门处理git仓库的请求

[root@node02 git]# cat /etc/httpd/conf.d/test-git.conf
<VirtualHost *:80>
        ServerName 192.168.0.42
        SetEnv GIT_PROJECT_ROOT /var/www/html/git
        SetEnv GIT_HTTP_EXPORT_ALL
        ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
        <Location />
                AuthType Basic
                AuthName "Private Git Repo"
                AuthUserFile "/etc/httpd/conf.d/test-git"
                Require valid-user
        </Location>
</VirtualHost>

[root@node02 git]# 

  提示:servername表示虚拟主机的名称,这里可以是本机ip地址或主机名;SetEnv GIT_PROJECT_ROOT是用来指定git仓库的根地址映射到文件系统的目录,相当于httpd里的documentroot的意思;AuthUserFile用来指定用来验证的密钥文件地址;

  检查httpd的配置文件语法是否正确,如果没有问题就可以直接启动httpd了

  提示:可以看到httpd的配置文件语法是没有问题的,对应httpd也启动起来了,80端口已经正常监听;到此基于httpd的私有git仓库服务器就搭建好了;

  测试:在node01上安装git,然后到node02上克隆我们刚才在node02上创建的空仓库,看看能不能把它克隆下来?

  node01上安装git

[root@node01 ~]# yum install -y git

  克隆node02上的git-test.git项目到本地

  提示:这里需要注意,如果使用主机名访问,需要在hosts文件中把对应主机名进行解析;其次node01和node02要正常通信,防火墙都允许node01访问;从上面的反馈可以看到在node01上使用git命令是能够正常的把node02上的项目克隆到本地;

  验证:在node01上新添加几个文件到刚才克隆的项目中,然后把它提交,再push到node02的仓库中,看看是否能够将更改后的项目推送到node02的指定仓库呢?

  提示:这里push它告诉我们没有设置push.default这个配置;

  解决办法

  提示:我们提交时它告诉我们没有任何更新;

  解决办法

  提示:这里提示我们默认仓库不允许push操作,要想使用push操作,需要在仓库中设置receive.denyCurrentBranch的配置为ignore;

  解决办法:到node02的对应仓库中加上上面提示的配置

  现在再用node01向node02执行push,看看还要是否可以将node01上的提交push到node02的仓库中去

  提示:这里还是提示我们没有什么更新;

  解决办法:使用git push origin master命令来推送

  好了,在node01上成功将提交后的项目推送到远端node02上了;

  在node02上验证,看看node02的仓库中是否能够看到对应的文件呢?

  提示:在node02上并不能使用ls命令列出文件,这其中的原因是push只是把node01中的对象库中的文件push到node02上;我们要查看对象库中的文件,可以使用git ls-files -s来查看;

  提示:使用git ls-files命令并没有看到任何内容,估计是只把对象库push过来,索引并没有指向任何版本;但使用git log能够清楚看到我们提交的版本和用户信息;

  验证:把node01上的git-test目录删除,然后再从node02上克隆,然后看看,克隆后的目录里是否有我们之前添加的文件?

  提示:可以看到现在重新从node02上把项目克隆到本地,本地目录中是有我们之前添加的文件,说明我们刚才的push操作是成功的;后续我们就可以在在这个项目中添加,修改,删除,然后再push到node02上进行存储;再次提交就可以直接使用git push命令进行提交了;如下所示

  在node02上查看日志看看是否有v2版本的提交日志?

  好了,在node02上能够看到第二次的提交日志;到此基于httpd的简单私有git仓库就搭建好了;这个git仓库功能非常简陋,只是支持把本地仓库的文件推送到远端存储,在远端服务器上不能够直接列出文件列表,在浏览器上也查看不了;

标签:httpd,00,git,x86,10,私有,64,el7
来源: https://www.cnblogs.com/qiuhom-1874/p/13794880.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有