Git on CentOS7 by HTTP

04/12/2017 | | Post a Comment

文章简述git通过http协议传输的配置过程

操作背景:公司版本控制由SVN换为GIT,服务器的操作系统也升级成了RHEL7,还被告知ssh所用的22号端口不会对外开放,所以放弃了ssh协议,选择http实现。

软件环境:

git version:git-1.8.3.1-6.el7_2.1.x86_64

httpd version:httpd-2.4.6-45.el7.centos.x86_64

OS: CentOS 7  (在本机实验时用的CentOS,公司服务器是RHEL)

步骤一:安装git、httpd

[root@localhost ~]# yum install httpd git -y

步骤二:git库目录的创建,归属等设置

# mkdir /var/www/gitrepos
# cd /var/www/gitrepos
# mkdir repo01 && cd repo01
# git --bare init
# git update-server-info
# cd /var/www
# chown -R apache: gitrepos

主要是git源的初始化,还有就是gitrepos目录属主变更
git update-server-info //Update auxiliary info file to help dumb servers.这个命令不要忘记

步骤三:修改httpd主配置文件,如下:

[root@CUSVMA1 ~]# vim /etc/httpd/conf.d/git_http.conf
#
# vhost for git repositories (http)
#
<VirtualHost *:80>
ServerName     git
DocumentRoot    /var/www/gitrepos

<Location />
DAV on

# general auth settings
AuthName "Git login:"
AuthType Basic

# file authentication
AuthUserFile  /var/www/htpasswd
AuthGroupFile /var/www/htgroup

<LimitExcept PROPFIND>
Require valid-user
</LimitExcept>
</Location>

<Location /repo01>
<LimitExcept PROPFIND>
Require group adminlinux01
</LimitExcept>
</Location>

<Location /repo02>
<LimitExcept PROPFIND>
Require group adminlinux02
</LimitExcept>
</Location>

LogLevel warn
ErrorLog  /var/log/httpd/git_error.log
CustomLog /var/log/httpd/git_access.log combined
</VirtualHost>

配置文件设置的两个git源,一个是repo01,一个是repo02,认证方式基于apache进行的,文件为htpasswd和htgroup

步骤四:为git源创建账号、密码等

[root@CUSVMA1 ~]# htpasswd -c /var/www/htpasswd jkadmin1

[root@CUSVMA1 ~]# htpasswd /var/www/htpasswd jkadmin2

将创建的用户分组,因为是通过组级别来控制访问仓库权限的

[root@CUSVMA1 ~]# echo "adminlinux01: jkadm1 jkadm2" >> /var/www/htgroup

步骤五:测试

git clone http://jkadm1:"p@ssw0rd"@112.12.3.116/repo01

git add File_name

git commit -m "附加说明"

git push origin remote //向服务器推送本地源

配置完毕

 

参考文章

https://jsosic.wordpress.com/2014/05/23/git-over-http-on-centos-6/

Git仓储权限管理by gitolite

 



Want to say something? Post a comment

电子邮件地址不会被公开。 必填项已用*标注