在centos中搭建基于smart http的git server

#

由于公司的特殊需求,需要将git集成到IBM的RTC里面,而RTC使用的是http,所以要只能放弃了git原生的ssh,转而使用smart http,git server搭建在centos系统上。博主在浏览了N多教程发现都是比较残缺的,并没有针对smart http的特殊需求,有一篇相对完整的但也有几个坑(博主为了填这几个坑吐了好多口老血,因此决定把教程记录到博客上防各位不时之需,该教程针对像博主这样的非专业运维的developer的手把手教程,欢迎指正!)

以下是主要的环境参数

  • 系统linux centos 7
  • git版本 2.6.0.0
  • 容器 Apache 2 .6.4(httpd)

1. 首先打开系统terminal,获取root操作权限(博主用的是Xshell远程登录):

  输入命令:sudo  su

系统要求输入用户密码:

完成后入下图所示

在centos中搭建基于smart http的git server_第1张图片

2. 安装httpd:

输入命令:yum install httpd (安装时除了输入“Y”确定外无特别需要注意的)

3. 安装gitweb(如不需要可不安装):

输入命令:yum install gitweb

4. 完成后创建一个git仓库,这里选择在/srv/目录下创建一个bare repo(若目录不同需要在稍后提到的配置文件中修改),取名为test.git

输入命令cd /srv
输入命令git init –bare test.git
在centos中搭建基于smart http的git server_第2张图片

5. 把该目录下文件所有者的组改成apache

输入命令:chown -R apache:apache test.git

6. 用vim编辑器修改httpd配置文件

输入命令:vim /etc/httpd/conf/httpd.conf

在centos中搭建基于smart http的git server_第3张图片
在文档中添加如下配置:

# 设置git所管理的工程的存放目录
SetEnv  GIT_PROJECT_ROOT /srv

SetEnv  GIT_HTTP_EXPORT_ALL


# 对git库的各种请求,执行git-http-backend.cgi
ScriptAliasMatch \
    "(?x)^/git/(.*/(HEAD | \ info/refs | \ objects/(info/[^/]+ | \ [0-9a-f]{2}/[0-9a-f]{38} | \ pack/pack-[0-9a-f]{40}\.(pack|idx)) | \ git-(upload|receive)-pack))$" \
    /usr/local/libexec/git-core/git-http-backend/$1

ScriptAlias / /usr/share/gitweb/gitweb.cgi
#为git的http操作添加认证,认证信息存在git-auth文件中,关于此文件的配
#置将会在稍后讲解
<Location />
        AuthType Basic
        AuthName "Git Access"
        AuthUserFile /var/www/git-auth
        Require valid-user
        AuthBasicProvider file
</Location>

完成后输入wq保存文件

7. push的操作认证

a.打开刚刚创建的test.git仓库为config添加如下配置
输入命令: cd /srv/test.git/
在centos中搭建基于smart http的git server_第4张图片

b. 打开config文件添加如下内容

[http]
receivepack = true

在centos中搭建基于smart http的git server_第5张图片

完成后保存并退出

c. 再配置文件中定义的/var/www文件夹下添加git-auth密码文件
输入命令:cd /var/www
添加一个名为git(可自己定义)的账户
输入命令:htpasswd -c git-auth git

在centos中搭建基于smart http的git server_第6张图片

8. 重启httpd服务

输入命令:service httpd start

在centos中搭建基于smart http的git server_第7张图片

完成后可在客户端做clone和push的检查操作

(注意:如果系统用户没有权限,使用chmod 755 -R username 命令添加权限,否则推送会被拒)

至此!搭建完毕,博主没有配置gitweb不过相关的教程也很多而且相对简单,剩下的问题无非也就是linux的组权限问题,这个视个人环境做微调即可,如有不足之处还望不吝赐教!

参考链接:

http://particle128.com/posts/2014/12/git-server.html
https://git-scm.com/docs/git-http-backend
https://git-scm.com/book/be/v2/Git-on-the-Server-Smart-HTTP

你可能感兴趣的:(centos,server,git)