有兴趣的同窗能够去研究下《HTTP权威指南》,这本书不算薄(手动滑稽)。php
其实不单是HTTP协议,全部网络协议均可以被归纳为python
“为了传送指定的数据,网络中发送数据的一端要和接受数据的一端约定一个相同的数据格式,这个数据格式就是所谓的协议”。nginx
从广义上来说,全部人均可以制定协议,只是市面上你们一块儿用的就那么几个而已,因此HTTP也一样没那么神秘。git
”超文本传输协议(HTTP)是用于传输诸如HTML的超媒体文档的应用层协议。它被设计用于Web浏览器和Web服务器之间的通讯,但它也能够用于其余目的。 HTTP遵循经典的客户端-服务端模型,客户端打开一个链接以发出请求,而后等待它收到服务器端响应。 HTTP是无状态协议,意味着服务器不会在两个请求之间保留任何数据(状态)。虽然一般基于TCP / IP层,但能够在任何可靠的传输层上使用; 也就是说,一个不会静默丢失消息的协议,如UDP。“github
HTTP在大部分人眼里的用途就是在Web浏览器中输入一个URL(网站地址),而后Web浏览器中就会呈现出一个五彩缤纷的世界(网页),因此很大一部分就出现了思惟定势,认为HTTP就是用来作网站的协议,然而这种认知是很是错误的,事实上HTML只是搭载HTTP服务器传输给客户机的一种文档而已,HTML能够由相似php、python、perl等语言动态生成,固然也能够是提早编辑好的HTML文档,HTML传输到客户机以后,大量的工做都是由Web浏览器去作,Web浏览器会去解析HTML文档,而后以图形、文字或视频的形式在浏览器中经行渲染输出,丰富信息,以达到友好的人机交互。web
然而事实上,你能够用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的克隆、提交等操做。apache
git自身也提供网页化服务功能,依赖轻型http服务程序,管理员就能够轻松作出一个git的web站点,只是若是做为web形式长期访问的话,用apache或者nginx搭建一个比较好。vim
git的SSH服务器搭建比较简单,就再也不赘述,搭建过程当中只须要注意两点:确保SSH服务正常运行,防火墙将SSH(端口通常为22)设为信任,剩下的就按照官方文档配置就行。浏览器
[root@Fedora ~]# vim /etc/httpd/conf/httpd.conf
找到“Listen”块,配置tomcat
Listen 8080
由于个人80端口被nginx占用了,因此用了8080,注意tomcat可能将8080占用,这时候你的机器上就要配置一个未被占用的端口为apache监听端口。
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脚本最后加入扩展的配置脚本
[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建库,请自行从万能的网络或者书籍获取。
[root@Fedora ~]# systemctl restart httpd.servic
$ cp /var/www/git/gitweb.cgi /home/git/gitweb/gitweb.cgi
$ cp -r /var/www/git/static /home/git/gitweb/static
[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服务就正式对外开放了。
[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