Cgit

来自 Alpine Linux

cgit 是一个快速的 web 界面 (CGI),使用 C 编程语言编写,用于 git。它使得潜在的贡献者可以从 web 上跟踪和查看项目源代码,而不是通过 git 客户端。

安装

注意: 强烈建议您已在服务器上拥有一个活动的 .git 工作目录。如果您没有,请在继续之前安装 gitolite 或类似的程序。

安装包含 cgit 和 git 的软件包。

apk add cgit git

使用您最喜欢的编辑器打开 /etc/cgitrc,这里是 vim。

vim /etc/cgitrc

如果您想显示特定的仓库,您的配置应如下所示

内容 /etc/cgitrc

virtual-root=/ repo.path=/var/lib/git/repositories/YOUR_GIT_REPO.git/ repo.url=CUSTOM_GIT_URL

如果您想扫描并显示所有仓库,您的配置应如下所示

内容 /etc/cgitrc

virtual-root=/ scan-path=/var/lib/git/repositories/

使用 spawn-fcgi 和 fcgiwrap 运行 cgit

安装 spawn-fcgi 和 fcgiwrap

apk add fcgiwrap spawn-fcgi

通过创建一个符号链接来创建一个新服务。

ln -s spawn-fcgi /etc/init.d/spawn-fcgi.cgit

注意: 您还应该修改文件,并在第 99 行的 ${FCGI_PROGRAM} 之后添加 -f。否则您将没有日志,并且问题将无法调试。

在 /etc/conf.d/ 中创建一个名为 spawn-fcgi.cgit 的配置文件;该服务将在每次调用时自动运行 fcgiwrap。它应该看起来完全像这样

内容 /etc/conf.d/spawn-fcgi.cgit

FCGI_PORT=1234 FCGI_PROGRAM=/usr/bin/fcgiwrap
注意: 您应该考虑使用 unix 域套接字。

启动新创建的服务。

rc-service spawn-fcgi.cgit start

使用 Web 服务运行 cgit

配置 Lighttpd 以使用 cgit

如果您尚未安装,请安装包含 lighttpd 的软件包。

apk add lighttpd

在 lighttpd 目录中创建一个 cgit.conf 文件,内容如下

内容 /etc/lighttpd/cgit.conf

server.modules += ("mod_redirect", "mod_alias", "mod_cgi", "mod_fastcgi", "mod_rewrite" ) var.webapps = "/usr/share/webapps/" $HTTP["url"] =~ "^/cgit" { server.document-root = webapps server.indexfiles = ("cgit.cgi") cgi.assign = ("cgit.cgi" => "") mimetype.assign = ( ".css" => "text/css" ) } url.redirect = ( "^/git/(.*)$" => "/cgit/cgit.cgi/$1", )

最后,将以下行添加到 lighttpd.conf 文件中

内容 /etc/lighttpd/lighttpd.conf

include "cgit.conf"

重启 lighttpd 服务。

rc-service lighttpd restart

配置 NGINX 以使用指向子域的 cgit

如果您尚未安装,请安装包含 NGINX 的软件包。

apk add nginx

在 NGINX 的 conf.d 目录中创建一个自定义配置文件。

vim /etc/nginx/conf.d/git.your_domain.com.conf

该文件应如下所示

内容 /etc/nginx/conf.d/git.your_domain.com.conf

server { server_name git.your_domain.com; root /usr/share/webapps/cgit; try_files $uri @cgit; location @cgit { include fastcgi_params; fastcgi_pass localhost:1234; fastcgi_param SCRIPT_FILENAME $document_root/cgit.cgi; fastcgi_param PATH_INFO $uri; fastcgi_param QUERY_STRING $args; } }

重启 NGINX 服务。

rc-service nginx restart