gitweb的安装配置

    最近在研习 git,并使用 gitolite 来架设 git 服务。同时又想在浏览器中能够以只读的方式查看有哪些版本库。于是就想到用 gitweb,可是 gitweb 是用 cgi 脚本写的,相对于 apache,我更熟悉并喜欢用 ngingx。


       在 让 Nginx 支持 cgi 这篇文章中,我已详细描述了怎样让 nginx 支持 cgi,下面将直接进入主题。

       git 我们安装在 /usr/local/git 下,而且我们是通过源码来安装 git 的。因此,gitweb 也因此已经安装好了。基于 git 的安装位置,那么 gitweb 安装在 /usr/local/git/share/gitweb 下。我们来看下此目录下有些什么:
Command代码   收藏代码
  1. [root@localhost ~]# ll /usr/local/git/share/gitweb  

  2. -rwxrwxr-x 1 root root 242750 Jun  417:06 gitweb.cgi  

  3. drwxrwxr-x 2 root root   4096 Jun  417:06 static  


       很简单吧。其下就有一个 gitweb.cgi 脚本,static 文件夹是用于为 html 页面提供静态资源。

       gitolite 的仓库位于 /home/git/repositories 下,我们将 gitweb.cgi 主程序以及静态资源的 static 目录软连接到 gitolite 的仓库目录下。实际上,根本不需要做软链接操作,只需要修改 nginx 配置文件的 root 到 gitweb 的安装目录下即可。意思是说,cgi 程序不必放在 gitolite 的仓库下。当然,作为演示,我们还是来软链接一下:
Command代码   收藏代码
  1. [roog@localhost ~]# cd /home/git/repositories  

  2. [root@localhost /home/git/repositories]# ln -s /usr/local/git/share/gitweb/gitweb.cgi  

  3. [root@localhost /home/git/repositories]# ln -s /usr/local/git/share/gitweb/static  


       下面可以写配置文件了。我并不想使用 http://localhost 来访问 gitweb,我更倾向于使用 http://localhost/gitweb,因此需要使用到 alias 指令。我们在 location 配置节中配置 /gitweb,使其调用 gitweb.cgi 脚本。同时,静态资源处于 /gitweb/statc/*.css 等中,这些资源虽然匹配 location /gitweb,但不需要通过 cgi 来处理,因此使用了 rewrite。配置如下:
Command代码   收藏代码
  1. server {  

  2.    listen       80;  

  3.    server_name  localhost;  

  4.    root /home/git/repositories;  

  5.    rewrite /gitweb/static/(.*\.(js|css|jpg|gif|png)) /static/$1;  

  6.    location /gitweb/ {  

  7.        alias          /home/git/repositories/;  

  8.        fastcgi_pass   unix:/var/run/nginx/cgiwrap-dispatch.sock;  

  9.        fastcgi_param  SCRIPT_FILENAME    $document_root/gitweb.cgi;  

  10.        fastcgi_param  SCRIPT_NAME        gitweb.cgi;  

  11.        fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;  

  12.        fastcgi_param  SERVER_SOFTWARE    nginx;  

  13.        fastcgi_param  QUERY_STRING       $query_string;  

  14.        fastcgi_param  REQUEST_METHOD     $request_method;  

  15.        fastcgi_param  CONTENT_TYPE       $content_type;  

  16.        fastcgi_param  CONTENT_LENGTH     $content_length;  

  17.        fastcgi_param  REQUEST_URI        $request_uri;  

  18.        fastcgi_param  DOCUMENT_URI       $document_uri;  

  19.        fastcgi_param  DOCUMENT_ROOT      $document_root;  

  20.        fastcgi_param  SERVER_PROTOCOL    $server_protocol;  

  21.        fastcgi_param  REMOTE_ADDR        $remote_addr;  

  22.        fastcgi_param  REMOTE_PORT        $remote_port;  

  23.        fastcgi_param  SERVER_ADDR        $server_addr;  

  24.        fastcgi_param  SERVER_PORT        $server_port;  

  25.        fastcgi_param  SERVER_NAME        $server_name;  

  26.    }  

  27. }  


       实际上,你也可以配置使用 http://localhost 来访问 gitweb,这个时候,就不需要写 rewrite 了。

       现在的确可以访问 gitweb 了,但是请注意,gitweb.cgi 并不知道仓库在哪里,你可别以为就在 gitolite 仓库下,即 /home/git/repositories。gitweb.cgi 脚本中有这样一句话: /etc/gitweb.conf,很显然,它会读取 /etc/gitweb.conf 文件来获取配置信息。因此,我们需要在 /etc 下新建一个文件 gitweb.conf。
Config代码   收藏代码
  1. # gitweb.conf in /etc  

  2. # 设置版本库的根目录  

  3. $projectroot = "/home/git/repositories";  

转载来源:http://zachary-guo.iteye.com/blog/1554849

官网:https://git.wiki.kernel.org/index.php/Gitweb

你可能感兴趣的:(git,gitweb)