`
crabdave
  • 浏览: 1295250 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CentOS Gitweb Nginx 私服搭建

    博客分类:
  • Git
 
阅读更多

CentOS Gitweb Nginx 私服搭建

 

参考:

http://blog.csdn.net/lifetragedy/article/details/51658266

 

安装软件:

$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel

$ yum install -y git gitweb spawn-fcgi fcgi-devel fcgi

 

Gitweb,仅支持 git clone gituser@hostname:/repositories这样的协议 我们需要让git支持http协议的图形化的界面

 

spawn-fcgi,因为nginx默认是不支持cgi的,而gitweb是用cgi写的,因此我们才安装fastcgi,而fastcgi又要通过spawn-fcgi来启动

 

 

安装fcgiwrap

wget  https://codeload.github.com/gnosek/fcgiwrap/legacy.tar.gz/master

 

tar -xvf gnosek-fcgiwrap-1.1.0-18-g99c942c.tar.gz 

cd gnosek-fcgiwrap-99c942c/

 

autoreconf -i  

./configure --prefix=/你的安装目录/fcgiwrap

make && make install  

ls -l /etc/init.d/ |grep spawn-fcgi 

 

 

/etc/init.d 目录下有一个spawn-fcgi程序

/usr/bin 目录下有一个spawn-fcgi程序

/var/www/git目录下是gitweb所有的文件(网页版git)

/etc/目录下有一个gitweb.conf文件

/etc/sysconfig/目录下有一个spawn-fcgi文件

 

修改/etc/gitweb.conf文件

 

$projectroot = "/home/git/repositories";  

 

@git_base_url_list= ("git://192.168.0.101", "http://192.168.0.101:81");  

$git_temp = "/tmp";  

$home_link = $my_uri || "/";

$home_text = "indextext.html";  

$projects_list = $projectroot;

@stylesheets = ("static/gitweb.css");  

$javascript = "static/gitweb.js";  

$logo = "static/git-logo.png";  

$favicon = "static/git-favicon.png"; 

@diff_opts = ();  

$feature{pathinfo}{default} = [1];  

$feature{'highlight'}{'default'} = [1];  

 

修改/etc/sysconfig/spawn-fcgi文件

FCGI_SOCKET=/var/run/fcgiwrap.socket  

FCGI_PROGRAM=/usr/local/sbin/fcgiwrap  

FCGI_USER=nginx  

FCGI_GROUP=nginx  

FCGI_EXTRA_OPTIONS="-M 0700"  

OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM"  

 

启动spawn-fcgi

 

chkconfig --levels 2345 spawn-fcgi on  

/etc/init.d/spawn-fcgi start  

 

把spawn-fcgi设为开机启动,并启动该服务,该服务成功启动后会在:

/var/run目录下生成一个fcgiwrap.socket文件。

 

使用root用户创建git用户

useradd -d 指定工作目录/home/git -g 用户组git -m 用户名git

设置密码

passwd git

 

more /etc/passwd

创建目录

mkdir gitrepo

授权

chmod 750 工作目录/home/git

chown -R 用户名.用户组 工作目录/home/git/gitrepo

 

su git

cd 

生成.ssh

ssh-keygen

 

cd 工作目录/home/git

 

touch .ssh/authorized_keys

 

 

cd gitrepo

创建连接文件

ln -s /var/www/git/gitweb.cgi 

ln -s /var/www/git/static  

 

初始化仓库

git init --bare 仓库名称.git

 

chmod -R 775 仓库名称.git

 

cd 仓库名称.git

 

客户端通过ECLIPSE的JGIT连上GIT的远程服务后会发送一个git-upload指令。

同时服务端会回一个git-receive给到客户端做“接收”请求的准备,但是git服务默认对于这个receive的值为false,因此如果你没有做特殊处理后,在eclipse连上git后会发生一个can not find git-receive这样的错误,解决办法是:

 

su git  

cd /home/git/repositories/hello.git  

git config --file config http.receivepack true  

 

 

nginx配置(权限参考 Nginx添加htpasswd认证配置 

server {  

      error_log    /nginx/logs/git.error.log;  

      access_log   /nginx/logs/git.access.log;  

      listen       81;  

      server_name  域名;  

 

     

      index gitweb.cgi;

      root /home/git/gitrepo;

 

 

      auth_basic "Authorized users only";

      auth_basic_user_file /home/conf/git.auth.conf;

 

      location ~ \.(cgi|pl).*$ {  

            gzip off;  

            fastcgi_pass unix:/var/run/fcgiwrap.socket;  

            fastcgi_param  SCRIPT_FILENAME    /var/www/git/gitweb.cgi;    

            fastcgi_param  SCRIPT_NAME        gitweb.cgi;    

            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  

            include fastcgi_params;  

      }  

 

      location ~ ^.*\.git/objects/([0-9a-f]+/[0-9a-f]+|pack/pack-[0-9a-f]+.(pack|idx))$ {  

            root /home/git/gitrepo;

       }

  

      location ~ ^.*\.git/(HEAD|info/refs|objects/info/.*|git-(upload|receive)-pack)$ {  

            root /home/git/gitrepo;  

            fastcgi_param QUERY_STRING $query_string;  

            fastcgi_param SCRIPT_FILENAME /usr/libexec/git-core/git-http-backend;  

            fastcgi_param GIT_HTTP_EXPORT_ALL true;  

            fastcgi_param GIT_PROJECT_ROOT /home/git/gitrepo;  

            fastcgi_param PATH_INFO $uri;  

            include fastcgi_params;  

            fastcgi_pass unix:/var/run/fcgiwrap.socket;           

       }

  

      try_files $uri @gitweb;  

      

      location @gitweb {  

            fastcgi_pass unix:/var/run/fcgiwrap.socket;  

            fastcgi_param SCRIPT_FILENAME /var/www/git/gitweb.cgi;  

            fastcgi_param PATH_INFO $uri;  

            fastcgi_param GITWEB_CONFIG /etc/gitweb.conf;  

            include fastcgi_params;  

      }

}  

 

 

 

客户端操作

git init

git clone git@192.168.1.101:/home/git/repositories/hello.git  (会使用到git用户的密码)

touch readme #新建一个readme文本文件  

vi readme #随便在此文件中写点什么然后保存退出即可  

git add . 代表把当前目录内所有东西进行远程推送  

git commit -a -m “init helloworld“ #代表commit所有之前add过的东东,并且带上commit时的注释  

git remote add origin git@192.168.1.101:/home/git/repositories/hello.git #建立远程GIT连接  

git push origin master #正式推送 

 

 

修改git用户不可登录:

vi /etc/passwd

git:x:500:500::/home/git:/bin/bash ##此行注释掉

git:x:500:500:git version control:/home/git:/usr/bin/git-shell

 

 

 

 

分享到:
评论

相关推荐

    CentOS+Nginx环境搭建教程.pdf

    CentOS+Nginx环境搭建教程.pdf

    CentOS 7 Nginx 离线安装依赖库

    离线安装Nginx及其依赖库虽然增加了安装过程的复杂性,但通过提前准备和正确操作,可以在无网络环境下成功搭建起可靠的Web服务器环境。在实际工作中,对于那些对网络连接有限制或者网络不稳定的数据中心,这种方法尤...

    centos下nginx安装操作文档

    ### CentOS 下 Nginx 安装操作文档 #### 概述 本文档旨在提供一份详细的指导,帮助用户在 CentOS 系统中成功安装 Nginx 1.11.4 版本及其所需依赖包。Nginx 是一款高性能的 HTTP 和反向代理 Web 服务器,同时也是一...

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

    在本文中,我们将深入探讨如何在CentOS 6.3操作系统上安装Nginx并用其搭建文件服务器。Nginx是一款高性能的Web服务器和反向代理服务器,因其高效的并发处理能力和稳定性而广受欢迎。首先,让我们从安装Nginx开始。 ...

    centos安装Nginx详细配置

    ### CentOS安装Nginx详细配置知识点 #### 一、安装准备 在开始部署Nginx之前,需要确保系统中已安装必要的开发工具和依赖库。 ##### 1. 安装GCC - **简介**:GCC (GNU Compiler Collection) 是一个用于编译多种...

    centos7.6离线安装nginx

    在Linux环境中,CentOS 7.6是一个广泛使用的操作系统,而Nginx是一款高性能的Web服务器和反向代理服务器,常用于网站托管和负载均衡。本文将详细介绍如何在CentOS 7.6上进行离线安装Nginx,这对于网络环境不稳定或者...

    CentOS7 自动化搭建Nginx+PHP7+Mysql+Docker+Docker-Compose Shell脚本

    CentOS7 自动化搭建Nginx+PHP7+Mysql+Docker+Docker-Compose Shell脚本,Docker version 18.06.1-ce,docker-compose version 1.22.0

    centos7 nginx离线安装包 nginx-1.20.1-2.el7.x86_64

    在完全无互联网连接的情况下,离线安装nginx。 nginx版本号:nginx-1.20.1-2.el7.x86_64 食用方法: 1.解压 2.进入解压目录 3.rpm安装全部 4.安装完成

    在阿里云服务器上配置CentOS+Nginx+Python+Flask环境

    在阿里云服务器上搭建一个基于CentOS的Web服务环境,通常是为了部署Python应用程序,例如使用Flask框架构建的Web服务。本教程将详细介绍如何在阿里云服务器上配置一个CentOS系统,然后安装Nginx作为反向代理服务器,...

    Centos7环境下Nginx版本升级方式及步骤

    在CentOS7环境中,对Nginx进行版本升级是一个重要的任务,这可能是因为新版本提供了更多的功能、性能优化或安全修复。本篇文章将详细介绍两种在CentOS7上升级Nginx的方法:YUM upgrade和源码平滑升级,并提供相关的...

    CentOS 7 nginx平滑升级.pdf

    本篇内容主要围绕如何在CentOS 7系统上,将Nginx 1.12.2平滑升级至1.13.3版本进行讲解。 首先,要确认当前Nginx的版本。在命令行中输入`nginx -v`可以查看已安装的Nginx版本。这一步骤有助于了解当前的运行状态和...

    centOS7离线安装nginx依赖包.zip

    在Linux系统中,CentOS 7是一个非常流行的服务器操作系统,而Nginx是一款高性能的Web服务器和反向代理服务器,广泛用于网站托管和负载均衡。本压缩包"centOS7离线安装nginx依赖包.zip"显然是为了帮助用户在没有网络...

    在CentOS下使用nexus搭建maven私服的安装教程

    ### 在CentOS下使用Nexus搭建Maven私库的安装教程 #### 一、引言 随着企业级项目规模的不断扩大和技术栈的日益复杂,如何有效地管理项目中的依赖成为了一个重要的问题。Maven作为Java生态中最流行的构建工具之一,...

    centos7 nginx tomcat mysql服务器的防火墙规则配置

    CentOS 7 服务器防火墙...我们已经成功地配置了 CentOS 7 服务器的防火墙规则,使 Nginx 服务器对所有 IP 可见,Tomcat 服务器的 8080 端口只对 Nginx 服务器可见,MySQL 服务器的 3306 端口只对 Tomcat 服务器可见。

    Centos7的nginx-1.24.0免编译包,直接解压修改配置文件,启动即可

    在 Linux 系统中,尤其是 CentOS 7,Nginx 被广泛用于网站托管和负载均衡。本资源提供的是 Nginx 的 1.24.0 版本,它是一个预编译好的二进制包,无需进行编译安装,简化了部署流程。 **安装与部署** 1. 首先,将...

    centos 7.9服务器 离线 搭建svn服务器

    centos 7.9服务器 离线 搭建svn服务器 ,该文章适用于 开发人员 实施人员 项目经理用于项目文档管理 代码管理,而不指定如何在centos7.9环境下离线搭建svn服务器,因为大多数的网站只是介绍yum install 的方式,但是...

    在CentOS7上用Nexus3搭建Maven私服.doc

    在本文中,我们将详细介绍如何在CentOS7操作系统上使用Nexus3搭建Maven私有仓库。首先,确保系统已经安装了Java Development Kit (JDK) 8和Maven3。安装这两个组件的具体步骤可以通过搜索引擎获取。 一、所需环境 ...

    centos8 nginx1.20.1 与nginx配置文件

    在这个主题中,我们主要关注如何在CentOS 8操作系统上安装Nginx 1.20.1版本以及配置Nginx以支持HTTPS服务。以下是详细的步骤和相关知识点: 首先,我们需要确保CentOS 8系统已经更新到最新状态,通过运行以下命令:...

    CentOS系统nginx安装步骤(华为云耀服务器).docx

    ### CentOS系统下Nginx服务器的安装步骤及常见问题解决 #### 一、概述 本文档详细介绍了在CentOS操作系统中安装Nginx服务器的具体步骤,并针对安装过程中可能遇到的几个常见错误给出了相应的解决方案。Nginx是一款...

    CentOS+nginx+fastCGI+mysql配置文档

    在本配置文档中,我们将详细讨论如何在 CentOS 系统上搭建一个基于 Nginx、FastCGI 和 MySQL 的服务器环境。这个配置过程涉及到多个步骤,包括安装必要的软件包、配置 Nginx 以及整合 PHP 和 MySQL。 首先,我们...

Global site tag (gtag.js) - Google Analytics