在上一篇博客中,我们主要聊到了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搭建私有git仓库的更多相关文章

  1. 在阿里云上搭建私有GIT仓库

    在阿里云上搭建私有GIT仓库 年轻人就得好好学习,不能这么颓废 最近做项目练练手,用到了github, 但是github访问速度是真的慢啊,下载项目,下载一天了.所以呢,我是个成熟的人了,只好自己搭建 ...

  2. 在Linux上搭建私有git仓库

    最近在学Linux,顺便将自己的服务器用起来,不然又得废弃一年.这次是跟着网上的教程做一个简单的git私有仓库,复杂完整的git系统还需使用gitlib系统. 首先在linux上安装git yum i ...

  3. 搭建私有git仓库gogs

    安装 gogs 下载 gogs download 安装 解压压缩包. 使用命令 cd 进入到刚刚创建的目录. 执行命令 ./gogs web,然后,就没有然后了. #后台运行 $ nohup ./go ...

  4. 利用阿里云搭建私有Git服务器

    服务器系统:Centos 6 (查看centos版本命令:lsb_release -a) 客户端系统:Windows 7 一.服务器端安装Git ==通常centos上使用yum源安装的git版本过低 ...

  5. [开发笔记usbTOcan]用树莓派搭建私有Git服务器

    0 | 思路 在开始编程前,先创建一个版本管理库,以前一直用SVN,但目前用Git的还是比较,正好利用这个机会学习GIt. 想过使用Github提供的免费服务器,但项目目前还没有做开源的准备,于是就有 ...

  6. 用腾讯云Gogs搭建私有git服务器

    前言 经常有需要写不能公开代码的项目,所以只好自己搭建一个私人的git服务器 Gogs的好处在于比Gitlib轻量化了好多,而且是国人写的,官方主页也是中文的 Gogs首页 腾讯云服务器配置: Ubu ...

  7. Android业务组件化之Gradle和Sonatype Nexus搭建私有maven仓库

    前言: 公司的业务组件化推进的已经差不多三四个月的时间了,各个业务组件之间的解耦工作已经基本完成,各个业务组件以module的形式存在项目中,然后项目依赖本地的module,多少有点不太利于项目的并行 ...

  8. 【Docker】(4)搭建私有镜像仓库

    [Docker](4)搭建私有镜像仓库 说明 1. 这里是通过阿里云,搭建Docker私有镜像仓库. 2. 这里打包的镜像是从官网拉下来的,并不是自己项目创建的新镜像,主要测试功能 一.搭建过程 首先 ...

  9. [转]Ubuntu18.04下使用Docker Registry快速搭建私有镜像仓库

    本文转自:https://blog.csdn.net/BigData_Mining/article/details/88233015 1.背景 在 Docker 中,当我们执行 docker pull ...

随机推荐

  1. 分布式ID生成方案汇总

    1.目标 1.1.全局唯一 不能出现重复的ID,全局唯一是最基本的要求. 1.2.趋势有序 业务上分页查询需求,排序需求,如果ID直接有序,则不必建立更多的索引,增加查询条件. 而且Mysql Inn ...

  2. 超详细,Windows系统搭建Flink官方练习环境

    如何快速的投入到Flink的学习当中,很多人在搭建环境过程中浪费了太多的时间.一套一劳永逸的本机Flink开发环境可以让我们快速的投入到Flink的学习中去,将精力用在Flink的原理,实战.这也对于 ...

  3. Dubbo系列之 (六)服务订阅(3)

    辅助链接 Dubbo系列之 (一)SPI扩展 Dubbo系列之 (二)Registry注册中心-注册(1) Dubbo系列之 (三)Registry注册中心-注册(2) Dubbo系列之 (四)服务订 ...

  4. 异步(async)编程

    思考:为什么要使用异步编程? 我们先看看同步方法和异步方法之前在程序中执行的逻辑: 1. 同步方法 static void Main(string[] args) { Console.WriteLin ...

  5. SpringBoot favicon.ico网站图标

    1.在application.properties下添加spring.mvc.favicon.enabled=false 默认true开启 2.关闭后,需要在src/main/resources/st ...

  6. 7.SwrContext音频重采样使用

    头文件位于#include <libswresample/swresample.h>   SwrContext常用函数如下所示 SwrContext *swr_alloc(void); / ...

  7. [LeetCode]21. 合并两个有序链表(递归)

    题目 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-> ...

  8. Vue企业级优雅实战04-组件开发01-SVG图标组件

    (后续的文章 公众号会提前一周更新,欢迎关注文末的微信公众号:程序员搞艺术) 预览本文的实现效果: # gitee git clone git@gitee.com:cloudyly/dscloudy- ...

  9. web网站——apache和nginx对比02

    nginx介绍 Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理 ...

  10. Vue开发电子书app

    ebook-app 在根目录下创建vue.config.js文件 module.export = { baseUrl: process.env.NODE_ENV === 'production' ? ...