在上一篇博客中,我们主要聊到了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. Laravel5的验证码功能

    第三方扩展包 mews/captcha 作为基础来实现 Laravel 中的验证码功能 安装 注册 配置验证码文件 前端引用 后端验证 安装前准备(我这边没执行这个,安装成功,但是搜到的文件有写,不清 ...

  2. selenium上手

    功能自动化 前提 自动化的主要目的并不是为了找Bug,是为了证明功能可用 不只是所有的功能都可以自动化,如UI 并不是所有的项目都可以使用自动化,如selenium只能使用bs项目,小项目不适合使用自 ...

  3. Java是否还能再辉煌十年?

    目录 Java是否还能再辉煌十年? 一.前言 二.如今的Java语言 2.1 位居TIOBE榜首 2.2 革命性的语言 三.Java受到的挑战 3.1 后台服务器软件的语言竞争 3.1.1 Pytho ...

  4. 01 fs模块

    1 fs.readFile 异步执行函数 /** fs 读取文件相对路径是相对终端命令行所在的路径 process.cwd()返回终端命令行的绝对路径 * */ fs = require('fs') ...

  5. javascript面试题(二)

    24. function foo() { } var oldName = foo.name; foo.name = "bar"; [oldName, foo.name] // [f ...

  6. [Oracle/Sql] Decode与Case

    Decode和case都可以实现SQL中的条件结构,下面为用法示例: select id,name,score,decode(floor(score/20),5,'A',4,'B',3,'C',2,' ...

  7. 再深入一点|binlog和relay-log到底长啥样?

    上一篇mysql面试的文章之后收到不少朋友的意见,希望深入讲讲复制.日志的格式这些,今天,我们就来深挖一下mysql的复制机制到底有哪一些,以及binlog和relay-log的结构到底是什么样子的. ...

  8. composer 三大组成部分

    composer 三大组成部分:1. 仓库 2. 命令行下载器 3. 自动加载. 1. 仓库 公有仓库 https://packagist.org 私有仓库 https://packagist.com ...

  9. python基础:异常捕捉

    一.异常 python在程序运行过程中,可能会出现一些错误和异常,导致程序停止运行.我们可以通过捕捉异常,并对异常进行处理,使得程序可以正常运行 异常有很多类型,可以根据类型挨个捕捉.也可统一捕获: ...

  10. java oop 修饰符&关键字

    一.修饰符 Java中四种访问权限修饰符: private 缺省(default) protected public 修饰类的成员,用来限定对象对该类成员的访问权限. 修饰符 类内部 同一个包 不同包 ...