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
本博客由 BriFuture 原创,并在个人博客(WordPress构建) BriFuture's Blog 上发布。欢迎访问。
欢迎遵照 CC-BY-NC-SA 协议规定转载,请在正文中标注并保留本人信息。