Gitweb
Gitweb 是 Git 自带的默认网络界面。
Gitweb 实际上原生支持 FCGI,因此无需将其包装成 CGI 脚本。[1]
安装[编辑 | 编辑源代码]
要安装 Gitweb,首先要安装 git包 和网络服务器。如果想快速测试,请参阅 git instaweb
的帮助。否则,如果你想要一个全面的设置,请继续阅读。
以下所有示例都需要安装 perl-cgi包 软件包。(FS#45431)。
配置网络服务器[编辑 | 编辑源代码]
Apache[编辑 | 编辑源代码]
将以下内容添加到 /etc/httpd/conf/httpd.conf
的末尾:
Alias /gitweb "/usr/share/gitweb" <Directory "/usr/share/gitweb"> DirectoryIndex gitweb.cgi Options ExecCGI Require all granted <Files gitweb.cgi> SetHandler cgi-script </Files> SetEnv GITWEB_CONFIG /etc/gitweb.conf </Directory>
或者将其添加到另一个文件中,如 etc/httpd/conf/extra/gitweb.conf
然后在 httpd.conf
末尾添加以下内容:
# gitweb configuration Include conf/extra/gitweb.conf
如果 Apache 拒绝显示 Gitweb,而是打印 perl 脚本的纯源代码,则很可能是 Apache 的配置不允许执行 CGI。请确保 httpd.conf
中的以下内容未被注释:
<IfModule !mpm_prefork_module> LoadModule cgid_module modules/mod_cgid.so </IfModule> <IfModule mpm_prefork_module> LoadModule cgi_module modules/mod_cgi.so </IfModule>
然后重启 httpd.service
来应用这些更改。有关使用 Apache 执行 CGI 的更多详情,请参阅 https://httpd.apache.org/docs/2.4/howto/cgi.html。
Lighttpd[编辑 | 编辑源代码]
在 /etc/lighttpd/lighttpd.conf
中添加以下内容:
server.modules += ( "mod_alias", "mod_cgi", "mod_redirect", "mod_setenv" ) url.redirect += ( "^/gitweb$" => "/gitweb/" ) alias.url += ( "/gitweb/" => "/usr/share/gitweb/" ) $HTTP["url"] =~ "^/gitweb/" { setenv.add-environment = ( "GITWEB_CONFIG" => "/etc/gitweb.conf", "PATH" => env.PATH ) cgi.assign = ( ".cgi" => "" ) server.indexfiles = ( "gitweb.cgi" ) }
然后重启 lighttpd.service
来应用这些更改。
您可能还需要在 mimetype.assign
行添加 ".css" => "text/css"
以便 GitWeb 正常显示。
Nginx[编辑 | 编辑源代码]
将此位置添加到 nginx 配置中(可能需要更改位置):
/etc/nginx/nginx.conf
location /gitweb.cgi { include fastcgi_params; gzip off; fastcgi_param SCRIPT_FILENAME /usr/share/gitweb/gitweb.cgi; fastcgi_param GITWEB_CONFIG /etc/gitweb.conf; fastcgi_pass unix:/run/fcgiwrap.sock; } location / { root /usr/share/gitweb; index gitweb.cgi; }
如果您遵循 Nginx#CGI 实现,请尝试将include fastcgi_params;
替换为include fastcgi.conf;
。
配置 Gitweb[编辑 | 编辑源代码]
所有配置选项的列表,请参见 gitweb.conf(5) 。
基本配置[编辑 | 编辑源代码]
打开(如果不存在,则创建)文件 /etc/gitweb.conf
,并将此内容放入其中:
/etc/gitweb.conf
# The directories where your projects are. Must not end with a slash. our $projectroot = "/path/to/your/repositories"; # Base URLs for links displayed in the web interface. our @git_base_url_list = qw(git://<your_server> http://git@<your_server>);
要启用 "blame" 视图(显示源文件中每一行的作者),请添加以下一行:
$feature{'blame'}{'default'} = [1];
配置完成后,重启网络服务器。
添加仓库[编辑 | 编辑源代码]
要添加版本库,请进入版本库文件夹,像这样创建版本库:
$ mkdir my_repository.git $ git init --bare my_repository.git/ $ cd my_repository.git/ $ touch git-daemon-export-ok $ echo "Short project's description" > description
接下来打开 gitweb.config
文件并添加以下内容:
gitweb.config
[gitweb] owner = Your Name
这将填写 Gitweb 中的 "Owner" 字段。这不是必填项。
这里假定您希望将此仓库作为 "central" 仓库,将您的提交推送至此,因此 git-daemon-export-ok 和 --bare 的作用是将开销降至最低,并允许在此仓库上使用 git 守护进程。
这就是创建版本库的全部过程。现在你可以在 http://localhost/gitweb 上看到它了(假设一切顺利)。由于 Gitweb CGI 脚本只需读取版本库文件夹,因此无需为新版本库重启 Apache。
语法高亮[编辑 | 编辑源代码]
要在 Gitweb 上启用语法高亮,必须先安装 highlight包 软件包:
安装 highlight 后,只需在 gitweb.conf
中添加此行即可:
$feature{'highlight'}{'default'} = [1];
保存文件后,高亮显示就会启用。
参见[编辑 | 编辑源代码]
- How To Install A Public Git Repository On A Debian Server——HowtoForge 页面用作本文的主要资料来源。