一、卸载centos自带的git:yum remove git -y

提前安装 必要的环境:

yum install libcurl-dev libcurl-devel

yum install expat-devel

yum install perl-ExtUtils-MakeMaker package

yum install tcl build-essential tk gettext

如果在编译过程中,遇到缺少lib的可以继续安装需要的lib环境。

二、下载git-2.11.0.tar.gz 上传至服务器,下载链接:http://distfiles.macports.org/git/

三、解压安装git 并添加git到环境变量

cd /usr/local/src/
tar zxvf git-2.11.0.tar.gz
make prefix=/usr/local/git all
make prefix=/usr/local/git install
添加git到环境变量
    echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc
    或者
    echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile
source /etc/bashrc 或者 source /etc/profile

四、查看git版本号 

[root@localhost git-2.11.0]# git --version
git version 2.11.0

五、生成htpasswd的验证文件。

先了解什么是htpasswd?

htpasswd是httpd功能apache服务的一个工具,是目录访问权限认证的一个方式。可配合.htaccess文件,编写成独立的.htpasswd文件。在.htpasswd文件中账号以 用户名/加密密码 形式存在,密码支持MD5、crypt、sha、plain明文方式保存。该权限控制并不能保证绝对的密码安全,网上会有破解教程,但仍然可以作为基本的权限认证来使用,或者搭配网站功能的权限检测作为重要加密内容的双保险。

#建立git访问的用户名密码文件 
htpasswd -m -c /etc/httpd/conf/git-team.htpasswd zhang
chown apache:apache /etc/httpd/conf/git-team.htpasswd
chmod 640 /etc/httpd/conf/git-team.htpasswd
#创建了zhang的用户名密码,再追加用户的话,不要加-c  -m是选择MD5加密方式

六、启用http和https访问git

vim /etc/httpd/conf/httpd.conf

<VirtualHost *:80>
   DocumentRoot "/var/www/html/git代码路径"
   ServerName gamebox.域名.com

   SetEnv GIT_PROJECT_ROOT /var/www/html/git代码路径
   SetEnv GIT_HTTP_EXPORT_ALL

   #安装git-core后,用find命令查一下git-http-backend在哪里
   ScriptAlias /git /usr/libexec/git-core/git-http-backend/
   Alias /gitweb /var/www/git   //这个是git自己的路径

   #在文件/etc/gitweb.conf末尾另起一行加上 $projectroot = "/var/www/html/git代码路径";
   SetEnv GITWEB_CONFIG /etc/gitweb.conf   //这个是git自己的路径

   <Directory "/var/www/git">  //这个是git自己的路径
      Options ExecCGI Indexes FollowSymLinks SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all
      AllowOverride All
      Require all granted
      AddHandler cgi-script cgi
      DirectoryIndex gitweb.cgi
   </Directory>

   <Location />
      DAV on
      AuthType Basic
      AuthName "Git Access"
      AuthUserFile /etc/httpd/conf/git-team.htpasswd  //http的htpasswd验证文件路径
      Require valid-user
   </Location>

</VirtualHost>

七、以上配置完毕,在 “/var/www/html/git代码路径”里去生成git仓库

mkdir /var/www/html/git代码路径/test.git -p
cd /var/www/html/git代码路径/test.git
git init --bare
ll命令可以看到里面的branches,hooks,hooks,info,objects,refs,config,description,HEAD

八、配置完成后,一定要给git代码目录Apache所有者权限!!

centos git安装客户端 centos安装git服务器_html

本地就可以通过:

git clone https://gamebox.域名.com/git/test.git

来拉取代码了,这里是需要验证的htpasswd账号即可!访问下面的地址可以查看网页版的git

http://gamebox.域名.com/gitweb/

九、https的配置:

<VirtualHost *:443> 
ServerName gamebox.域名.com

DocumentRoot "/var/www/html/git代码路径"

 SSLEngine on 
 SSLProtocol all -SSLv2 -SSLv3
 SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM 
 SSLCertificateFile cert/3004746_gamebox.域名.com_public.crt
 SSLCertificateKeyFile cert/3004746_gamebox.域名.com.key
 SSLCertificateChainFile cert/3004746_gamebox.域名.com_chain.crt

SetEnv GIT_HTTP_EXPORT_ALL
SetEnv GIT_PROJECT_ROOT /var/www/html/MiniGameGitHub
ScriptAlias /git /usr/libexec/git-core/git-http-backend/
Alias /gitweb /var/www/git
SetEnv GITWEB_CONFIG /etc/gitweb.conf

   <Directory "/var/www/git">
      Options ExecCGI Indexes FollowSymLinks SymLinksIfOwnerMatch
      Order allow,deny
      Allow from all
      AllowOverride All
      Require all granted
      AddHandler cgi-script cgi
      DirectoryIndex gitweb.cgi
   </Directory>

   <Location /git> //这里的权限是任何人都可以下载,git默认是push代码是需要验证的,所以去除验证
      #DAV on    //也就是保证不能push 
      #AuthType Basic
      #AuthName "Git"
      #AuthUserFile /etc/httpd/conf/git-team.htpasswd
      #Require valid-user
   </Location>

</VirtualHost>

十、git的pull 和push权限分开也是可以做到的。请参考后面的文章!