一、卸载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所有者权限!!
本地就可以通过:
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权限分开也是可以做到的。请参考后面的文章!