gitolite 与 smart http

gitolite 默认采用ssh公私钥的方式来验证用户,通过配合 apache 可以使用 用户名/密码 的方式来进行用户验证

在debian下需要安装apache2 和 apache2-suexec 这两个包
# apt-get install apache2 apache2-suexec
假定gitolite安装在/opt/gitolite中

安装完毕后在.gitolite.rc的定部添加
$ENV{PATH} .= ":/opt/gitolite/bin";

之后通过以下命令来查看 apache 的doc_root在哪里
/usr/lib/apache2/suexec -V
以下假定 AP_DOC_ROOT=’/var/www’


install -d -m 0755 -o git -g git /var/www/bin
install -d -m 0755 -o www-data -g www-data /var/www/git

之后在/var/www/bin中创建一个名为gitolite-suexec-wrapper.sh的脚本,权限为0700
内容如下

#!/bin/bash
#
# Suexec wrapper for gitolite-shell
#

export GIT_PROJECT_ROOT="/home/git/repositories"
export GITOLITE_HTTP_HOME="/opt/gitolite"

exec ${GITOLITE_HTTP_HOME}/gitolite-source/src/gitolite-shell

http://sitaramc.github.com/gitolite/http.html

之后需要配置 apache 来创建一个virtual host
在 /etc/apache2/sites-avaliable/ 中创建一个名为 git 的配置文件内容如下

<VirtualHost *:80>
    ServerName git.example.com
    ServerAlias git
    ServerAdmin you@example.com
    DocumentRoot /home/git/repositories
    <Directory /var/www/git>
        Options None
        AllowOverride none
        Order allow,deny
        Allow from all
    </Directory>
        SuexecUserGroup git git
        ScriptAlias /git/ /var/www/bin/gitolite-suexec-wrapper.sh/
        ScriptAlias /gitmob/ /var/www/bin/gitolite-suexec-wrapper.sh/
    <Location /git>
    AuthType Basic
    AuthName "Git Access"
    Require valid-user
    AuthUserFile /etc/apache2/git.passwd
</Location> </VirtualHost>

最后一步很重要需要在gitolite-admin/conf/gitolite.conf中把想要通过http可以访问的库加上R = daemon这个上权限

完成后在/etc/apache2/git.passwd中使用htpasswd来创建user/password

如果没有什么问题的话gitolite+smart http就搭建好了
用户可以通过 git clone http://user:pass@server/repo_name.git 来访问代码库了

权限的配置文件中的只需用户名与 git.passwd 中的用户名相匹配就可以了,并且要加上R = daemon

发表评论

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