lighttpd 与 gitweb 搭建服务器
搭建 Git 仓库服务器
下载 gitweb
如果是用 debian 系的 Linux 发行版,可以使用 apt 下载安装可执行的 gitweb
sudo apt-get install gitweb
如果想要下载源代码编译安装,可以参考 服务器上的-Git-GitWeb 上的内容。
配置 gitweb
用 apt 下载好 gitweb 后,相应的 cgi 文件是放在 /usr/share/gitweb/ 目录下,分别有 gitweb.cgi、index.cgi 文件和 static 文件夹,index.cgi 是连接到 gitweb.cgi 的软链接,而这个 cgi 文件是用 perl 写的。
另外,gitweb 的配置文件是 /etc/gitweb.conf,可以做一些修改:
# path to git projects (<project>.git)
$projectroot = "/path/to/project";
# enable history of each file
$feature{'blame'}{'default'} = [1];
这样就可以在网页中查看每个文件的版本历史了。
把 /usr/share/gitweb 中的文件拷到 /var/html/gitweb 里
sudo cp -Rf /usr/share/gitweb /var/www/
接下来配置服务器就可以通过网页查看仓库的版本历史和信息。一般而言,只需要服务器支持 cgi 就可以实现我们的目标。
下载 lighttpd
类似的,用 apt 即可下载安装 lighttpd。
sudo apt-get install lighttpd
配置文件位于 /etc/lighttpd/lighttpd.conf, 由于需要用到 cgi 程序配合服务器进行响应,需要加载 lighttpd 的 cgi 模块,在配置文件中加入:
server.modules += ( "mod_cgi" )
或者在终端中输入以下命令:
$ lighty-enable-mod cgi
配置 lighttpd
配置 lighttpd,需要修改 document-root,将路径指向 gitweb:
server.document-root = "/var/html/gitweb"
默认的 index-file.names 只有 “index.php”,“index.html”,“index.lighttpd.html”,添加一个 “index.cgi” 或者 “gitweb.cgi”
注意这里添加完之后访问服务器并不能看到任何东西,而且我使用 chrome 访问的时候还会自动下载 index.cgi 脚本。
原因是服务器并没有执行 cgi 脚本,而是简单的将这个脚本当作文件发送到浏览器上。
之前说过,gitweb.cgi 是用 perl 写的,需要用 perl 执行,在 lighttpd 的配置文件里加上 :
cgi.assing = ( ".cgi" => "/usr/bin/perl")
还需要做对 lighttpd 的配置文件做一点修改:
server.modules += ( "mod_rewrite" )
url.rewrite = (
"^/static/(.*)$" => "/static/$1",
"^(.*)$" => "/gitweb.cgi$1"
)
大功告成
现在可以看到 Projects 的信息了:

这样所有程序都可以正常运行。
如果显示找不到项目,

有几种可能:
/etc/gitweb.conf里面的项目路径不对。/etc/gitweb.conf的项目路径是对的,但是 lighttpd 是以 www-data 用户身法运行,而 www-data 没有权限读取项目信息或仓库文件中的一些文件没有执行权限
References
- https://git-scm.com/book/zh/v2/服务器上的-Git-GitWeb
- http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs_Configuration
- gitweb安装及lighttpd配置
lighttpd 与 gitweb 搭建服务器的更多相关文章
- 利用ADSL拨号上网方式如何搭建服务器
序:搭建服务器需要两个条件硬件服务器和固定公网IP,随便一台个人电脑都可以作为硬件服务器,就剩下一个问题,如何获得一个固定公网IP. 第一章 扫盲:ADSL拨号上网方式,本地IP与公网IP的区别 一. ...
- nginx+tomcat+memcached搭建服务器集群及负载均衡
在实际项目中,由于用户的访问量很大的原因,往往需要同时开启多个服务器才能满足实际需求.但是同时开启多个服务又该怎么管理他们呢?怎样实现session共享呢?下面就来讲一讲如何使用tomcat+ngin ...
- Telegraf+InfluxDB+Grafana搭建服务器监控平台
Telegraf+InfluxDB+Grafana搭建服务器监控平台 tags:网站 个人网站:https://wanghualong.cn/ 效果展示 本站服务器状态监控:https://statu ...
- 【Node.js】利用node.js搭建服务器并访问静态网页
node.js是一门服务端的语言,下面讲讲如何利用node.js提供给我们的api来搭建服务器,并且访问静态网页 项目结构如下 ------------------------------------ ...
- SSR搭建服务器
SSR搭建服务器一站式教程:https://ssr.tools/252
- node学习笔记2——搭建服务器
搭建服务器关键词: require('http') —— 请求 node 里面的 http 模块 createServer —— 创建一个服务器 request —— 请求 response—— 响应 ...
- koa2搭建服务器+使用mongoose链接mangodb
使用node搭建服务器,用到了现在比较流行的框架koa. 1.初始化package.json npm init -y 2.安装koa2 npm i koa --save 3.搭建服务器 const K ...
- NodeJs本地搭建服务器,模拟接口请求,获取json数据
最近在学习Node.js,虽然就感觉学了点皮毛,感觉这个语言还不错,并且也会一步步慢慢的学着的,这里实现下NodeJs本地搭建服务器,模拟接口请求,获取json数据. 具体的使用我就不写了,这个博客写 ...
- nodejs搭建服务器 和 操作数据库
1.express框架:是一个简洁而灵活的 node.js Web应用框架.一般的项目都是基于这个框架开发的.http://www.runoob.com/nodejs/nodejs-express-f ...
随机推荐
- android的样式(style)与主题(theme)
Android上的Style分为了两个方面: 1,Theme是针对窗体级别的,改变窗体样式: 2,Style是针对窗体元素级别的,改变指定控件或者Layout的样式. Android系统的themes ...
- 4,临界区 之 synchronized
前提背景:多个并发线程共享同一个资源时,为防止这些共享资源可能出现的错误或数据不一致问题,提出了临界区的概念 临界区: 指一个用以访问共享资源的代码块,这个代码块在同一时间内只能允许一个线程访问 实现 ...
- 点击按钮添加一行,和本行的删除功能,序号变动,name属性更改
<!--html结构--> <div> <input type="button" value="添加一行" onclick=&qu ...
- Swift和Objective C关于字符串的一个小特性
一.Unicode的一个小特性 首先,Unicode规定了许多code point,每一个code point表示一个字符.如\u0033表示字符"3",\u864e表示字符&qu ...
- 使用bluebird解决promise兼容性问题
//引入promiseif(!Promise){ var Promise = require("bluebird"); // Configure Promise.config({ ...
- java字段中初始化的规律与如何用静态成员函数调用非静态成员
java字段中初始化的规律: 执行以下代码,出现的结果是什么? class InitializeBlockClass{ { field=200; } public int field=100; pub ...
- json "key" 注意
json 的key只能是字符串 必须使用 双引号
- nginx克隆之后问题
[alert] kill(2942, 1) failed (No such process) 背景:虚拟机克隆之后启动service nginx reload报这个错,而且没有日志 根据这个博文htt ...
- fetch网络请求 get 和 post
//在React Native中,使用fetch实现网络请求 /* fetch 是一个封装程度更高的网络API, 使用了Promise* Promise 是异步编程的一种解决方案* Promise 对 ...
- Git sparse-checkout 检出指定目录或文件
根据网上资料整理而来,git 1.7版本后支持的sparse checkout特性,可以指定需要checkout的目录或者文件. # 设置允许git克隆子目录 git config core.spar ...