/ Apache

搭建http协议的git服务器

使用了一段时间的git,完爆svn,所以打算自己搞一个git服务器玩玩。

服务器用的是centos 5.8 64位。

首先要做的是安装git,比较偷懒,直接用yum,但是yum源里没有git,可以使用第三方源。

rpm -Uvh http://repo.webtatic.com/yum/centos/5/latest.rpm yum install --enablerepo=webtatic git-all

然后是http服务器,选的apache,本来我是想用nginx的,后来试了一下,发现nginx自带的dav不支持git的push,不能提交代码,如果要完整支持则需要引入第三方模块https://github.com/arut/nginx-dav-ext-module,嫌麻烦就用apache吧,反正对性能没要求。

apache的编译命令如下:

./configure --prefix=/path/to/apache/ --enable-rewrite --enable-deflate --disable-userdir --enable-so --enable-expires --enable-headers --with-included-apr --with-apr=/usr --with-apr-util=/usr --enable-ssl --with-ssl=/usr --enable-dav --enable-dav-fs --enable-dav-lock make && make install

创建文件夹/path/to/apache/conf/vhost,然后在/path/to/apache/conf/httpd.conf最后面加上一行

include conf/vhost/*.conf

其他apache的基础配置,例如设置启动账户之类的本文就不说了,网上教程很多。

接下来是创建git根目录,我选的是/home/leo/git/,在这个目录下创建目录leo_git_test,并且初始化git目录

mkdir -p /home/leo/git/leo_git_test cd /home/leo/git/leo_git_test git init --bare git update-server-info

接下来是设置apache的访问控制,在/path/to/apache/conf/vhost下执行

/path/to/apache/bin/htpasswd -c git.passwd leo

按照提示输入两次密码。

创建git.conf文件,内容如下:

<VirtualHost *:80> SetEnv GIT_PROJECT_ROOT /home/leo/git/ #git目录 SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias / /usr/libexec/git-core/git-http-backend/ #将/上的请求转发给git <Location "/"> DAV on #开启dav扩展 Order allow,deny Allow from all AuthType Basic #开启密码验证 AuthName "Git" AuthUserFile /path/to/apache/conf/vhost/git.passwd Require valid-user

然后启动apache即可。

在本地clone测试一下

git clone http://127.0.0.1/leo_git_test

输入之前设置的http账号密码即可。

搭建http协议的git服务器
Share this