利用Git提供的git-http-backend可以很方便的提供HTTP服务,因为是CGI方式,所以最直接的就是用Apache来部署,详见这里 。
但是,因为很多时候都会用Nginx作为伺服(效率考虑),为了资源更绿色地利用,特地奉上通过FastCGI的方式来搭建Git HTTP服务的方式。另外,为了方便灵活的授权支持,本文将提供每个git库单独授权的示例。
准备好环境:
ubuntu server: 14.04
git:1.9.1
fcgiwrap :1.1.0-2
nginx:1.4.6
安装没有什么好说的,就是要注意一下nginx运行的用户和组,git目标库,要让nginx用户组有访问权限。
nginx配置:
server {
server_name git.myhost.com;
access_log /var/log/nginx/git-access.log ;
error_log /var/log/nginx/git-error.log ;
#location ~ (/.*) { #如果你不想每个git库都单独的授权,就用这个全局通用配置
location ~ /([\w_]+).git/(.*) {
auth_basic "Restricted";
auth_basic_user_file /opt/repos/git/auth/$1;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
fastcgi_param GIT_HTTP_EXPORT_ALL true;
fastcgi_param GIT_PROJECT_ROOT /opt/repos/git; #注意目录权限
fastcgi_param PATH_INFO /$1.git/$2;
#fastcgi_param PATH_INFO $1; # 配合上面的全局授权
fastcgi_pass unix:/var/run/fcgiwrap.socket; #注意socket权限
}
}
fastcgi_params配置:
#下面的基本是默认的配置,但是有2个不注释掉,就会出错~ 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 SCRIPT_FILENAME $request_filename; #注释掉这里 #fastcgi_param SCRIPT_NAME $fastcgi_script_name; #注释掉这里 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 GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; 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; fastcgi_param HTTPS $https if_not_empty; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; # Pass authenticated username to CGI app fastcgi_param REMOTE_USER $remote_user;

本文介绍了如何使用Nginx通过FastCGI方式搭建Git HTTP服务,重点在于实现每个git库的单独授权。首先确保拥有合适的环境,如Ubuntu 14.04、Git 1.9.1、fcgiwrap和Nginx 1.4.6。接着,重点在于Nginx的配置和`fastcgi_params`的设置,确保Nginx用户组对git库有访问权限。
942

被折叠的 条评论
为什么被折叠?



