`
zachary.guo
  • 浏览: 487264 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

nginx 作为 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 下。我们来看下此目录下有些什么:
[root@localhost ~]# ll /usr/local/git/share/gitweb 
-rwxrwxr-x 1 root root 242750 Jun  4 17:06 gitweb.cgi
drwxrwxr-x 2 root root   4096 Jun  4 17:06 static

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

        gitolite 的仓库位于 /home/git/repositories 下,我们将 gitweb.cgi 主程序以及静态资源的 static 目录软连接到 gitolite 的仓库目录下。实际上,根本不需要做软链接操作,只需要修改 nginx 配置文件的 root 到 gitweb 的安装目录下即可。意思是说,cgi 程序不必放在 gitolite 的仓库下。当然,作为演示,我们还是来软链接一下:
[roog@localhost ~]# cd /home/git/repositories
[root@localhost /home/git/repositories]# ln -s /usr/local/git/share/gitweb/gitweb.cgi
[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。配置如下:
server {
    listen       80;
    server_name  localhost;

    root /home/git/repositories;

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

    location /gitweb/ {
        alias          /home/git/repositories/;
        fastcgi_pass   unix:/var/run/nginx/cgiwrap-dispatch.sock;
        fastcgi_param  SCRIPT_FILENAME    $document_root/gitweb.cgi;
        fastcgi_param  SCRIPT_NAME        gitweb.cgi;
        fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
        fastcgi_param  SERVER_SOFTWARE    nginx;
        fastcgi_param  QUERY_STRING       $query_string;
        fastcgi_param  REQUEST_METHOD     $request_method;
        fastcgi_param  CONTENT_TYPE       $content_type;
        fastcgi_param  CONTENT_LENGTH     $content_length;
        fastcgi_param  REQUEST_URI        $request_uri;
        fastcgi_param  DOCUMENT_URI       $document_uri;
        fastcgi_param  DOCUMENT_ROOT      $document_root;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;
        fastcgi_param  REMOTE_ADDR        $remote_addr;
        fastcgi_param  REMOTE_PORT        $remote_port;
        fastcgi_param  SERVER_ADDR        $server_addr;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        $server_name;
    }
}

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

        现在的确可以访问 gitweb 了,但是请注意,gitweb.cgi 并不知道仓库在哪里,你可别以为就在 gitolite 仓库下,即 /home/git/repositories。gitweb.cgi 脚本中有这样一句话: /etc/gitweb.conf,很显然,它会读取 /etc/gitweb.conf 文件来获取配置信息。因此,我们需要在 /etc 下新建一个文件 gitweb.conf。
# gitweb.conf in /etc
# 设置版本库的根目录
$projectroot = "/home/git/repositories";
分享到:
评论

相关推荐

    nginx作为http图片服务器示例

    配置Nginx作为图片服务器,首先需要创建或修改`nginx.conf`文件。在该配置文件中,我们需要定义一个或多个服务器块(server block),每个服务器块代表一个虚拟主机。对于图片服务器,通常配置如下: ```nginx ...

    nginx搭建文件服务器上传文件获取文件

    ### Nginx 搭建文件服务器:上传与获取文件 在互联网技术中,Nginx 被广泛用于构建高性能、稳定的Web服务器环境。本文将详细介绍如何利用 OpenResty + Nginx + Lua 实现一个文件服务器,该服务器支持文件上传与获取...

    nginx-1.0.4 服务器软件下载

     作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last. fm 描述了成功并且美妙的使用经验。  Nginx 是一个安装非常的简单,配置文件非常...

    使用Tomcat或Nginx搭建视频服务器

    标题中提到的“使用Tomcat或Nginx搭建视频服务器”涉及到两个Web服务器软件:Apache Tomcat和Nginx。Apache Tomcat是一个开源的Web服务器和Servlet容器,主要用来运行Java Servlet和JavaServer Pages (JSP)。而Nginx...

    nginx rtmp转发服务器

    【Nginx RTMP 转发服务器详解】 Nginx RTMP服务器是一个基于Nginx的开源扩展,专门设计用于处理实时流媒体协议(RTMP)。它为内容发布者和消费者提供了一个高效、低延迟的平台,适用于直播、视频点播等多种应用场景...

    Nginx高性能Web服务器详解(完整版)pdf下载

    3. **反向代理**:Nginx可以作为反向代理服务器,将客户端请求转发到后端的Web应用服务器,隐藏了后端服务器的真实结构,提高了系统的可用性和安全性。 4. **负载均衡**:通过Nginx的负载均衡策略,可以将来自...

    haigeek#mynotes#使用Nginx作为静态服务器1

    使用Nginx作为静态服务器文件服务器在nginx的配置文件设置以下几个地方便可实现一个简单的文件服务器##显示索引##显示大小##显示时间#静态资源文件服务器

    搭建nginx点播服务器

    搭建Nginx点播服务器是将Nginx配置为一种能高效处理静态媒体文件,如音频和视频,供用户按需访问的服务器。Nginx因其高性能、高并发能力、内容分发、缓存功能、安全性以及负载均衡能力,成为搭建点播服务器的理想...

    Nginx服务器作反向代理实现内部局域网的url转发配置

    然后k兄就提议可以在内网搭建个nginx反向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务器,利用nginx反向代理将不同域名的请求转发给...

    Nginx反向代理服务器

    作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last. fm 描述了成功并且美妙的使用经验。 Nginx 是一个安装非常的简单,配置文件非常...

    nginx加入windows服务器

    3. **负载均衡**:Nginx可以作为负载均衡器,根据预设策略分配请求到多个后端服务器,提高系统可用性。 4. **静态文件服务**:Nginx非常擅长处理静态文件请求,如HTML、CSS、JavaScript、图片等,能有效减轻后端...

    一步步安装nginx搭建流媒体服务器

    一步步安装nginx搭建流媒体服务器的所有软件打包; nginx-1.8.0.tar.gz :应用服务器主程序 nginx_mod_h264_streaming-2.2.7.tar.gz :MP4流媒体支持模块。 openssl-1.0.1c.tar.gz :openssl库 pcre-7.9.tar.gz :...

    nginx集成rtmp服务器

    【Nginx集成RTMP服务器】是一个用于搭建视频直播或点播服务的解决方案。Nginx,一个高性能的HTTP和反向代理服务器,通过添加RTMP(Real-Time Messaging Protocol)模块,可以支持实时流媒体传输,常用于视频直播平台...

    nginx高性能web服务器.pdf

    Nginx作为反向代理服务器,能隐藏后端服务器细节,提高安全性,同时实现负载均衡。通过upstream模块,我们可以定义一组服务器,并根据策略(如轮询、权重、最少连接数)将请求分发到各个服务器,从而提高系统的可用...

    Nginx高性能Web服务器实战教程+高清+完整书签

    - **反向代理原理**:解释Nginx作为反向代理服务器的工作机制,如何将客户端请求转发到后端服务器。 - **负载均衡**:详细阐述如何通过Nginx实现负载均衡,包括轮询、权重分配、故障转移等策略。 3. **静态内容...

    实战Nginx 高性能web服务器

    在众多Web服务器中,Nginx已经成为了高性能、高可靠性的代名词,它不仅能够处理静态内容,还能作为反向代理服务器,负载均衡器,甚至是邮件代理服务器。随着技术的不断进步,Nginx逐渐取代了传统Web服务器如Apache,...

    centos 6.3安装nginx 搭建文件服务器

    在本文中,我们将深入探讨如何在CentOS 6.3操作系统上安装Nginx并用其搭建文件...同时,也了解了FileZilla Server作为FTP服务器的用途,以及如何在Linux环境下搭建FTP服务器。希望这些信息能帮助你在IT领域更进一步。

    FastDFS+Nginx搭建图片服务器

    FastDFS+Nginx搭建图片服务器。FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建...

    Nginx 阿里云服务器提示504

    这个错误通常意味着Nginx作为前端代理服务器,未能在预设的时间内从后端应用服务器(如Apache、Tomcat等)接收到响应。下面我们将详细探讨这个问题的成因、诊断方法以及解决方案。 首先,504错误的出现可能是由于...

Global site tag (gtag.js) - Google Analytics