设为首页 收藏本站
查看: 1117|回复: 0

[经验分享] nginx 作为 gitweb 的服务器

[复制链接]

尚未签到

发表于 2016-12-26 08:55:12 | 显示全部楼层 |阅读模式
        最近在研习 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 下。我们来看下此目录下有些什么:

[iyunv@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
[iyunv@localhost /home/git/repositories]# ln -s /usr/local/git/share/gitweb/gitweb.cgi
[iyunv@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";

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-319413-1-1.html 上篇帖子: gitlab 安装 timeout: down: nginx: 0s, normally up, want up 下篇帖子: vagrant + nginx + github + webhook + dploy + rsync + testdb + onlinedb + yii2 +
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表