1,搭建httpd应用
2,修改httpd.conf文件
注释 DocumentRoot "/data/httpd/htdocs"
注释 <Directory "/data/httpd/htdocs"></Directory>
结尾添加 Include /etc/httpd/conf.d/git.conf #引入git配置文件
开放注释
LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dav_module modules/mod_dav.so
3,新建git.conf文件,配置为虚拟主机
<VirtualHost *:8081>
#---------------git permission--------------------
ServerName git.home.com
DocumentRoot /data/git
DavLockDB "/app/httpd2.4.2/var/DavLock" #var这个目录需要新建并且修改权限,DavLock文件自动生成
<Directory /data/git/ >
Dav On
Deny from all
AuthType Basic
AuthName "plm git repository"
AuthUserFile /etc/httpd/conf.d/passwd
AuthGroupFile /etc/httpd/conf.d/group
Require valid-user
</Directory>
<Directory "/data/git/spider.git/" >
Allow from all
Order allow,deny
<Limit GET>
Require group readgroup
</Limit>
<Limit GET PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require group writegroup
</Limit>
</Directory>
<Directory "/data/git/parent.git/" >
Allow from all
Order allow,deny
<Limit GET>
Require group readgroup
</Limit>
<Limit GET PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require group writegroup
</Limit>
</Directory>
</VirtualHost>
4,新建group与passwd文件
group内容
readgroup: jack tom
writegroup: jack tom
passwd内容,密码使用htpasswd命令生成
jack:$apr1$pEy4YuAu$KORJuHCgVB2dvA8e2aaPA0
tom:$apr1$JpJBe660$P3lW.G5IC0zAiY/mqX4hK1
5,新建git仓库
$ mkdir myproject.git
$ cd myproject.git
$ git init --bare
这里需要注意--bare参数,表示是要生成一个"干净"的仓库,仅包含历史代码不包含工作代码。如果是希望初始化一个已存在的代码库,也可以类似如下命令替换最后一行git命令:
这样完成了一个仓库的初始化,但要客户端可以使用还缺少了一步——配置钩子(hook),执行下面命令:
$ cd myproject.git
$ mv hooks/post-update.sample hooks/post-update
$ chmod a+x hooks/post-update
$ ./hooks/post-update # 刚刚初始化完成必须手工执行一次
这样Git会在每次有update之后(post update)执行这个钩子(其实际是执行了命令:git update-server-info,可以通过vi hooks/post-update查看)
6,部署完成:如果不能正常pull与push,一般都是文件权限问题,请仔细查看httpd日志进行排查