首先说一下 GitWeb 是什么.
我们本地, 或者服务器, 有一个或者很多个git仓库, 如果想通过浏览器便捷地浏览仓库中的各种信息, 就需要gitweb来完成这个任务.

GitWeb是用Perl语言编写的一个符合CGI协议的脚本程序.
通过它的配置文件 /etc/gitweb.conf 指定一个仓库路径, 它会列出这个路径下的所有目录.如果这个目录是一个git仓库, 就可以点进去查看其中的所有内容.

需要注意的一点是, gitweb 只能指定一个目录作为仓库根目录, 它只浏览这一个目录下的所有仓库. 如果你计算机中的git仓库是放在多个地方的, 你可以通过建立软连接的方式, 将其列在仓库列表目录下.

仓库列表如下图所示 :

某一个仓库中的内容如下图所示 :

搭建过程

需要准备的资源:

  1. 一个web服务器. 可以是任意的web服务器, 常见的如nginx, apache, lighthttp等, 此处我们用nginx.
  2. 一个FastCGI程序. 系统中要预装perl解释器, 否则perl脚本无法被FastCGI程序启动

安装过程:

# 1. 安装nginx, 如果已经装了nginx, 就不用再装了
sudo apt-get install nginx
# 2. 安装gitweb
sudo apt-get install gitweb
# 3. 安装fcgiwrap
sudo apt-get install fcgiwrap

接下来就是配置过程:
在nginx中新建一个虚拟主机, 我的所有配置如下:
这其中重点关注cgi配置部分.

server
{listen 88;server_name gitweb.com 192.168.1.8;index index.php index.html index.htm default.php default.htm default.html;root /www/wwwroot/gitweb.com;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires      30d;error_log /dev/null;access_log /dev/null;}location ~ .*\.(js|css)?${expires      12h;error_log /dev/null;access_log /dev/null; }location ~ .*\.(cgi)?$ {gzip off;# Fastcgi socketfastcgi_pass unix:/var/run/fcgiwrap.socket;# Fastcgi parameters, include the standard onesinclude /www/server/nginx/conf/fastcgi_params;# Adjust non standard parameters (SCRIPT_FILENAME)fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}access_log  /www/wwwlogs/gitweb.com.log;error_log  /www/wwwlogs/gitweb.com.error.log;
}

然后把gitweb程序挪到上面nginx配置好的web根目录下
gitweb默认的安装路径是 /var/www/gitweb, 可以选择将web虚拟主机根目录指定在这里, 也可以将这个目录下的所有文件挪到你指定的web根目录下.
Tips: 更换默认的gitweb样式, 可以采用这个开源库: https://gitee.com/mirrors_kogakure/gitweb-theme.git
gitweb的构成其实非常简单, 它的目录树如下:

/var/www/gitweb$ tree
.
├── gitweb.cgi # perl脚本本身
├── index.cgi -> gitweb.cgi
└── static├── git-favicon.png├── git-logo.png├── gitweb.css  # 替换掉这个css文件即可更改整个gitweb的样式└── gitweb.js

下一步就是启动fcgiwrap

rm  /var/run/fcgiwrap.socket # 因为socket文件是一次性的, 所以每次启动前删一遍
sudo fcgiwrap -f -s unix:/var/run/fcgiwrap.socket &  # 将socket启动, 注意必须是unix:/var/run/fcgiwrap.socket这个路径
sudo chmod 777 /var/run/fcgiwrap.socket # 修改它的可读取权限

最后一步就是 修改gitweb的配置文件

# 修改 /etc/gitweb.conf
$projectroot = "/path/to/repositories/";

总结

其实我们完全可以自己实现一个gitweb程序, 不用perl语言, 用Python, PHP, C++都是可以的, 只要符合CGI协议即可. 事实证明这个工具非常简单实用.

GitWeb服务器搭建相关推荐

  1. ubuntu apache服务器和gitweb服务器搭建

    ubuntu下安装软件十分简单.只需要apt-get install即可,不用自己下载源码,自己编译.这篇文章主要写一下web服务器的搭建,至于gitweb,其实很久以前已经搞了,那时为了更好地推广g ...

  2. 【转发】Git本地服务器搭建及使用详解

    来源:https://www.cnblogs.com/linsanshu/p/5512038.html Git本地服务器搭建及使用 Git是一款免费.开源的分布式版本控制系统.众所周知的Github便 ...

  3. Gitea——私有git服务器搭建详细教程

    本文将从源代码和docker安装两种方式带大家从0-1通过Gitea搭建一个私有git服务器 Gitea--私有git服务器搭建教程 什么是Gitea 一.源代码安装方式 1. 前置环境要求 2. 下 ...

  4. CentOS下的DNS服务器搭建

    CentOS下的DNS服务器搭建 实验环境:VMware workstation 10         centos 6.4 说明: DNS是计算机域名系统或域名解析服务器(Domain Name S ...

  5. 使用Linux服务器搭建个人深度学习环境

    使用Linux服务器搭建个人深度学习环境 环境及所需工具 连接服务器 创建自己的python环境 创建深度学习框架的环境(以tensorflow为例) 测试环境 退出环境 删除环境 WinSCP的使用 ...

  6. windows AD/DNS服务器搭建

    windows AD-DS服务器搭建 1 什么是域 2 域的原理及作用 3 使用域的优势 4 Active Directory(活动目录) 5 安装AD条件 6 安装AD步骤 7 DNS服务器 8 D ...

  7. 企业dns服务器搭建

    企业dns服务器搭建 1关于dns的名词解释 2 dns服务的安装与启用 3 高速缓存dns 4 dns的正向解析 5 dns的反向解析 6 dns的双向解析 7 dns集群及更新 8 动态域名解析 ...

  8. -【Java FTP及FTP服务器搭建】

    -[Java FTP及FTP服务器搭建] 一:本文采用apache项目组的 Apache Commons Net™ library 项目地址:http://commons.apache.org/net ...

  9. iis7 文件服务器搭建,iis7 ftp服务器搭建

    iis7 ftp服务器搭建 内容精选 换一换 安装MySQL本文档以"CentOS 6.5 64bit(40GB)"操作系统为例,对应MySQL版本为5.1.73.CentOS 7 ...

最新文章

  1. Session对象失效的客户端解决方法
  2. ansible自动化运维(一)——基本架构简介
  3. PowerShell删除Exchange 2010邮件的正确姿势
  4. 机器人学习--F1TENTH弗吉尼亚大学无人驾驶课程
  5. 广东计算机应用基础试题及答案2019,2019年计算机应用基础试题库及答案.pdf
  6. extjs tree下拉列表_使用ztree来代替Extjs的下拉树
  7. jquery 数组indexof_如何实现一个简化版的 jQuery
  8. 一念心动,一生绵延——如何修复min pulse width?
  9. 100款经典黑客小工具使用说明
  10. js实现爬取QQ群管理页面所有QQ群成员信息
  11. 电子通讯录(自存储)
  12. Springboot配置Redis报:io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.
  13. java实现excel多级联动
  14. php抓取微博评论,python爬虫爬取微博评论案例详解
  15. 用php打印出日历_php简单日历函数
  16. Arduino实验——蜂鸣器播放《致爱丽丝》
  17. android原生见缝插针游戏自定义控件源码
  18. 计算机窗口置顶,将想要的窗口一直置顶的具体操作步骤介绍
  19. 【大数据开发】SparkCore——Spark作业执行流程、RDD编程的两种方式、简单算子
  20. Python用10行代码爬取大批美女图片

热门文章

  1. 景联文科技:关于语音标注,你知道多少?
  2. 计算机网络TCP拥塞控制窗口大小变化、重传、滑动窗口、流量控制等
  3. Asterisk模拟卡的FXO(外线)和FXS(内线)端口详解
  4. Cesium开发高级篇 | 05场景后期处理
  5. 尚硅谷谷粒学院学习笔记(防坑点的总结部分勘误)
  6. 人工智能学习笔记 python实现梯度下降法对多元函数求解
  7. HTML中的<a>标签
  8. 闭锁java_实例讲解Java并发编程之闭锁
  9. 如何使用OBS 进行屏幕录制
  10. GBase 8a 的日志管理1-备份恢复日志、重分布日志、审计日志