利用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;
相关推荐
- **分布式版本控制系统**:每个用户的工作副本都是一个完整的版本库,包括完整的历史记录,如Git。这种方式增强了协作性和安全性。 **1.2 Git简史** - **Git发展背景**:由Linus Torvalds于2005年创建,旨在解决...
# 每个流都有单独的录制文件 } } } ``` 6. **启动Nginx**:配置完成后,启动Nginx服务。在Linux环境下,可以使用`/etc/init.d/nginx start`或`systemctl start nginx`。 **直播与回放实现** 1. **直播**:...
Videobridge通过处理视频流的混音和转发,使得每个参会者只需要发送一路视频到桥上,然后由桥将混合后的视频分发给其他参与者。 手动部署Jitsi Videobridge的步骤如下: 1. **环境准备**:确保你有一台运行Linux的...
7. **管理多个博客**:如果你需要部署多个Ghost博客,可以为每个博客创建单独的Nginx服务器块,并配置不同的域名或子路径。脚本可能需要进行适当的修改以支持多博客环境。 8. **定期更新和维护**:确保你的Ghost...
Java Web部署到Linux-Tomcat是一项常见的操作,尤其在企业级服务器环境中。下面将详细介绍这个过程,包括Linux系统的安装和配置,以及Tomcat的安装与...每个环节都需要细心处理,以确保服务的稳定、安全和高效运行。
实现微服务时,可以为每个服务创建单独的 Flask 应用,并使用如 Flask-Restplus 或 Flask-RESTful 这样的扩展来支持 RESTful API 设计。这些扩展提供了方便的工具来定义资源、处理请求和响应,以及添加验证和错误...
Nginx部署安装(单独服务器) - **Nginx**:高性能的Web服务器和反向代理服务器。 - 安装Nginx可以通过包管理器(如`yum install nginx`)或从源代码编译安装。 - 启动Nginx可以通过`systemctl start nginx`命令...
- BIO是Java中传统的I/O模型,它在处理并发时效率较低,因为每个连接都需要一个单独的线程来处理。 - BIO的主要问题在于当服务端需要处理大量并发请求时,会消耗大量线程资源。 2. **NIO (Non-blocking I/O)** -...
7. **性能优化**:通过Docker的隔离性,可以单独优化每个服务的资源使用,提高整体性能。 8. **可扩展性**:Docker容器的特性使得系统容易扩展,可以通过增加或减少容器来应对不同负载需求。 以上就是关于"dnmp:泊...
2. **网页结构**:每个单独的HTML文件可能代表网站的一个不同页面,如首页(index.htm)、关于我们(about.htm)、联系我们(通常会有一个单独的联系页面,虽然这里没有列出)、服务介绍(如service1.htm到service9....
django-app(Ansible 角色) 角色已使用 Ansible 1.8.2 版和 Ubuntu 14.04 LTS (Trusty Tahr) 和 12.04 LTS 进行测试 Ansible 角色来设置新的 django-... 每个工具都分配到 ./tasks/* 目录中的单独文件,其中包含所
2. **自定义组件**:系统支持创建多个服务组件,如数据库、API、网站等,每个组件的状态都可以单独管理,这样就可以详细地追踪问题所在。 3. **事件管理**:当遇到服务中断或维护时,可以创建事件来通知用户,提供...
- **微服务化**:将大型应用拆分为小型、独立的服务,每个服务都能单独部署和扩展,提高系统的灵活性和可维护性。 7. **安全考虑** - **认证与授权**:JWT(JSON Web Tokens)、OAuth等机制确保用户身份的安全...
在IT行业中,部署是将开发完成的项目发布到生产环境,以便用户可以访问或...部署过程中涵盖了多个环节,从代码构建到服务器配置,再到最后的用户访问,每个步骤都需要精心规划和执行,以确保应用的稳定性和用户体验。
使用Gunicorn或uWSGI作为WSGI服务器,Nginx作为反向代理服务器。考虑使用Docker进行容器化部署,以提高环境一致性。 12. **性能优化**: 了解并应用缓存策略,如使用Django缓存框架、数据库查询优化、使用...
- 单元测试:对每个模块进行单独测试。 - 集成测试:测试各模块间的集成情况。 - 系统测试:全面测试系统的各项功能。 5. **部署上线**: - 服务器配置:安装必要的运行环境和软件。 - 应用部署:将编译好的...
微服务架构将大型应用拆分为多个小型、独立的服务,每个服务都可以单独部署和扩展,提高了系统的可维护性和扩展性。 八、版本控制与协作 Git是主流的版本控制系统,它帮助开发者进行代码版本管理、协同工作和代码...
在描述中提到的"first_app"可能是指该项目的基本结构或主要模块,通常在Django项目中,开发者会为每个功能或应用创建单独的app,这样可以保持代码的组织性和可扩展性。在这个项目中,"first_app"可能是项目的起点,...
5. **微服务架构**:将大型应用拆分为小型独立服务,每个服务都可以单独部署和扩展,提高系统的可扩展性和灵活性。 6. **负载均衡**:通过Nginx或HAProxy等工具,分散到多个服务器,提升系统性能和可用性。 7. **...
4. **微服务架构**:考虑到分布式系统的复杂性,BarSocial-SD可能采用了微服务架构,将不同的功能如用户管理、内容发布、好友关系等划分为独立的服务,每个服务都可以单独开发、部署和扩展。 5. **RESTful API**:...