最近在研习 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以其出色的性能而闻名,能够同时处理大量的并发连接请求。这使得它成为点播服务器的理想选择,可以在高负载情况下提供稳定的性能。 内容分发:Nginx可以...
作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last. fm 描述了成功并且美妙的使用经验。 Nginx 是一个安装非常的简单,配置文件非常...
修改yum源;在centos7下直接部署nginx和php,成功访问phpinfo
使用Nginx作为静态服务器文件服务器在nginx的配置文件设置以下几个地方便可实现一个简单的文件服务器##显示索引##显示大小##显示时间#静态资源文件服务器
基于openresty+nginx+lua实现文件服务器(包括获取文件及上传文件)
然后k兄就提议可以在内网搭建个nginx反向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务器,利用nginx反向代理将不同域名的请求转发给...
使用Tomcat搭建视频服务器,后面又在Ubuntu上用Nginx做了一套。使用ffmpeg处理视频文件为HLS协议的分片以支持点播。
一步步安装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 :...
使用shell脚本,使其直接在centos7下直接部署nginx和php,成功访问phpinfo
Nginx高性能Web服务器详解(完整版)pdf下载,深入了解Nginx
FastDFS+Nginx搭建图片服务器。FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建...
作为邮件代理服务器:Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last. fm 描述了成功并且美妙的使用经验。 Nginx 是一个安装非常的简单,配置文件非常...
该文档是介绍Windows下用Nginx配置https服务器,与大家分享!
nginx配置图片服务器
centos7系统;使用docker的容器部署nginx和php,成功访问phpinfo
windows下搭建基于nginx的rtmp服务器
nginx图片服务器配置和https配置
基于nginx的web服务器搭建手册,集nginx搭建,优化,远程登录为一体的完备的搭建手册
nginx_rtmp 流媒体转发服务器,低延时,根据源码编译,稳定可靠 可测试使用