• 测试环境
  1. Windows 7 Ultimate, 64-bit 6.1.7601, Service Pack 1(实体机,虚拟机VMware的宿主机)
  2. VMware® Workstation 7.1.4 build-385536
  3. Fedora 16 x86_64(Git服务器,是上学时候安装的虚拟机,已经整整8年了,老了唉)
  4. Windows 10 v1511 x64(实体机,测试外网连接git服务器)
  • 测试软件
  1. Git(自行编译/下载)
  2. Apache(自行编译/下载)
  3. gitweb(自行编译/下载)
  • HTTP浅析

   有兴趣的同学可以去研究下《HTTP权威指南》,这本书不算薄(手动滑稽)。

   其实不单是HTTP协议,所有网络协议都可以被概括为

   “为了传送指定的数据,网络中发送数据的一端要和接受数据的一端约定一个相同的数据格式,这个数据格式就是所谓的协议”。

   从广义上来讲,所有人都可以制定协议,只是市面上大家一起用的就那么几个而已,所以HTTP也同样没那么神秘。

  ”超文本传输​​协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通信,但它也可以用于其他目的。 HTTP遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待它收到服务器端响应。 HTTP是无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。虽然通常基于TCP / IP层,但可以在任何可靠的传输层上使用; 也就是说,一个不会静默丢失消息的协议,如UDP。“

   HTTP在大部分人眼里的用途就是在Web浏览器中输入一个URL(网站地址),然后Web浏览器中就会呈现出一个五彩缤纷的世界(网页),所以很大一部分就出现了思维定势,认为HTTP就是用来做网站的协议,然而这种认知是非常错误的,事实上HTML只是搭载HTTP服务器传输给客户机的一种文档而已,HTML可以由类似php、python、perl等语言动态生成,当然也可以是提前编辑好的HTML文档,HTML传输到客户机之后,大量的工作都是由Web浏览器去做,Web浏览器会去解析HTML文档,然后以图形、文字或视频的形式在浏览器中经行渲染输出,丰富信息,以达到友好的人机交互。

  然而事实上,你可以用HTTP可以去传送任何你想要的数据,只要发送/接收端有能处理这些数据的方法(程序),这就是为什么sample.git明明是git建立的一个文件夹,却可以包含到URL中(http://www.web-site.com/sample.git),git客户端可以将此URL设为远程库,从而在此库上进行一系列的git操作(clone、commit等),因为git服务端有cgi脚本,通过perl-cgi解析sample.git目录中的git信息,将git信息解释为HTML文档,最后再把HTML文档发送给客户端,就可以通过Web浏览器去查看或管理git库,而客户端的git程序会将URL解析为一个类似本地路径(虽然不是,但是意思一样),路径里包含了所有git信息,要什么数据客户端都会向git服务端请求,然后git服务端将所需要代码等一并传输到git客户端(即下载),所以git客户端就可以依据URL进行git的克隆、提交等操作。

  git自身也提供网页化服务功能,依赖轻型http服务程序,管理员就可以轻松做出一个git的web站点,只是如果作为web形式长期访问的话,用apache或者nginx搭建一个比较好。

  • SSH服务端

  git的SSH服务器搭建比较简单,就不再赘述,搭建过程中只需要注意两点:确保SSH服务正常运行,防火墙将SSH(端口一般为22)设为信任,剩下的就按照官方文档配置就行。

  • HTTP服务端
  1. 配置监听端口

    [root@Fedora ~]# vim /etc/httpd/conf/httpd.conf

    找到“Listen”块,配置

    Listen 8080

    因为我的80端口被nginx占用了,所以用了8080,注意tomcat可能将8080占用,这时候你的机器上就要配置一个未被占用的端口为apache监听端口。

  2. 模块及扩展脚本配置
    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    LoadModule cgi_module modules/mod_cgi.so

    如果上诉三个模块被注释掉的话,就去掉注释,放开模块。

    Include /etc/httpd/conf.d/gitweb.conf

    在httpd.conf脚本最后加入扩展的配置脚本

  3. 扩展脚本
    [root@Fedora ~]# cd /etc/httpd/conf.d
    /etc/httpd/conf.d文件夹中存放的是apache的扩展脚本,如果已经安装git和gitweb,里面应该有一个git.conf脚本,是安装git和gitweb时自动生成的
    Alias /git /var/www/git
    
    <Directory /var/www/git>
    Options +ExecCGI
    AddHandler cgi-script .cgi
    DirectoryIndex gitweb.cgi
    </Directory>

    但是我们现在要自己搭建一个git服务器,所以就自己自定义一个gitweb.conf脚本,内容如下

    Alias /gitweb /home/git/gitweb
    
    <Directory /home/git/gitweb>
    Options +ExecCGI
    AddHandler cgi-script .cgi
    DirectoryIndex gitweb.cgi
    </Directory>

    大致和git.conf一样,不一样的地方是HTTP索引变为由/git变为/gitweb,索引指向的目录变为/home/git/gitweb,其中"git"为专门为Git服务端设置的用户名,"gitweb"是存放git库的文件夹,怎么建用户、及git建库,请自行从万能的网络或者书籍获取。

  4. 重启服务
    [root@Fedora ~]# systemctl restart httpd.servic
  5. 设置cgi脚本
    $ cp /var/www/git/gitweb.cgi /home/git/gitweb/gitweb.cgi
    $ cp -r /var/www/git/static /home/git/gitweb/static
  6. Web浏览Git的http服务

  • 疑难杂症
  1. 服务器本地Web浏览器可以访问HTTP,但是客户机无法访问

    [root@Fedora ~]# setup

    将HTTPS和HTTP设为信任,保存关闭。

    然后修改/etc/sysconfig/iptables

    [root@Fedora ~]# vim /etc/sysconfig/iptables

    将8080端口放开

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

    然后重启防火墙IP端口规则

    [root@Fedora ~]# systemctl restart iptables.service

    然后http服务就正式对外开放了。

  2. HTTP可以ping通,但是无访问权限
    [root@Fedora ~]# usermod -a -G git apache

    确保 apache用户(在httpd.conf中配置的用户)具有访问 gitweb指定代码库的权限,比如, /home/git/gitweb 属于git用户和git组,所以将git添加到apache用户组中,以保证apache对/home/git/gitweb的权限最大化,还是权限不够,那么就直接将git用户的目录权限全部放开(哈哈)

    [root@Fedora ~]# chmod 777 /home/git
  3. 链接

    git官方教程

    廖雪峰官方教程

    git-book

Git服务器搭建--ssh/http的更多相关文章

  1. 向 Git 服务器添加 SSH 公钥

    . . . . . 在网上很少找到文章有提到如何将自己的 Git 远程仓库配置成可以通过 SSH 公钥方式认证的,而几乎清一色都是告诉你怎么通过 web 界面向 GitHub 添加 SSH 公钥.LZ ...

  2. 基于阿里云服务器的git服务器搭建

    使用阿里云Ubuntu 12.0.4 64位操作系统做git服务器. 首先git服务器有两种访问方式可以选择:http方式和ssh的方式,http方式更容易使用. 1.http方式的git服务器搭建以 ...

  3. Git系列(1) Windows下Git服务器搭建

    作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 我们这里只需要两个软件git和ssh, ...

  4. Windows下Git服务器搭建[转]

    Windows下Git服务器搭建   作为对前两天Git服务器搭建的一个整理,我想分别从服务端和客户端两个角度来记录下整个搭建过程,为了达到目标,我们需要哪些操作. (一)服务端软件和账号的安装配置 ...

  5. Windows平台下Git服务器搭建--------gitblit

    Windows(server)平台下Git服务器搭建 第一步:下载Java,安装,配置环境变量. 第二步:下载Gitblit.下载地址:http://www.gitblit.com/ 第三步:解压缩下 ...

  6. Ubuntu中Git服务器搭建

    git服务器搭建过程 参考网上资料搭建git服务器过程记录 如下: 需求 硬件需求:一台Ubuntu或者debian电脑(虚拟机),能通过网络访问到. 软件需求:git-core, gitosis, ...

  7. Git-Runoob:Git 服务器搭建

    ylbtech-Git-Runoob:Git 服务器搭建 1.返回顶部 1. Git 服务器搭建 上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,但是如果你不想让其他人看 ...

  8. 【第十二篇】- Git 服务器搭建之Spring Cloud直播商城 b2b2c电子商务技术总结

    Git 服务器搭建 上一章节中我们远程仓库使用了 Github,Github 公开的项目是免费的,2019 年开始 Github 私有存储库也可以无限制使用. 这当然我们也可以自己搭建一台 Git 服 ...

  9. CentOS 6.5下Git服务器搭建

    1 . Git服务器搭建 1. 环境部署 系统环境:服务器端:CentOS 6.5 ,ip:192.168.56.1 客户端:CentOS 6.5 ,ip:192.168.56.101 软件版本:服务 ...

随机推荐

  1. [CTF]抓住那只猫(XCTF 4th-WHCTF-2017)

    原作者:darkless 题目描述:抓住那只猫 思路: 打开页面,有个输入框输入域名,输入baidu.com进行测试 发现无任何回显,输入127.0.0.1进行测试. 发现已经执行成功,执行的是一个p ...

  2. UML图中时序图的基本用法

    快速阅读 序列图主要用来更直观的表现各个对象交互的时间顺序,将体现的重点放在 以时间为参照,各个对象发送.接收消息,处理消息,返回消息的 时间流程顺序,也称为时序图. 里面用到的基本元素如下: 角色- ...

  3. python中requests里.text和.content方法的区别

    requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等.其中返回的网页部分会存在.content和.text两个对 ...

  4. oracle tablespace pctfree pctused

    二.oracle pctfree和pctused详解 一.建立表时候,注意PCTFREE参数的作用 PCTFREE:为一个块保留的空间百分比,表示数据块在什么情况下可以被insert,默认是10,表示 ...

  5. Unix下可用的五种 I/O 模型

    介绍 当TCP客户端同时处理两个输入时:标准输入和TCP套接字,当客户端fgets(在标准输入上)被阻塞并且服务器进程被终止时,我们遇到了问题.服务器TCP正确地将FIN发送到客户端TCP,但由于客户 ...

  6. Leetcode: 24 Game

    You have 4 cards each containing a number from 1 to 9. You need to judge whether they could operated ...

  7. [原]Arcgis arcmap修改图元配色

    感谢南师大的“深爱”提供的帮助 1.选择识别工具,点击海洋,确定海洋色块的color index为255 2.右键tif选择属性 3.选择分页栏中的符号化(Symbology) 4.找到对应的Labe ...

  8. Flutter 目录结构介绍、入口、自定义 Widget、MaterialApp 组件、Scaffold 组件

    Flutter 目录结构介绍 文件夹 作用 android android 平台相关代码 ios ios 平台相关代码 lib flutter 相关代码,我们主要编写的代 码就在这个文件夹 test ...

  9. JDK动态代理在RPC框架中的应用

    RPC框架中一般都有3个角色:服务提供者.服务消费者和注册中心.服务提供者将服务注册到注册中心,服务消费者从注册中心拉取服务的地址,并根据服务地址向服务提供者发起RPC调用.动态代理在这个RPC调用的 ...

  10. canvas固定画布

    canvas作为非常方便的HTML绘图工具在web端的应用是非常多了. 那么会碰到一个问题,开始绘图的时候,网页总是晃动. 怎么办呢?只需在获取鼠标(触点)移动坐标的时候,添加清除默认动作就可以了. ...