在ubuntu上搭建gitweb+apache2

Gitweb提供了git版本库的图形化web浏览功能。它不仅让用户可以一目了然地看到服务器上的最新版本和分支,标签等情况,还允许用户在不必clone整个版本库的情况下,获得某个版本的某个文件。笔者的git server是一台ubuntu的机器,用gitolite做权限管理。下面是在上面用apache2搭建gitweb的步骤:

1. 安装apache2

可以用命令sudo service apache2 restart来查看apache2是否已经成功安装了,若没有,运行sudo apt-get install apache2

2. 安装gitweb

sudo apt-get install gitweb

运行之后会自动创建/var/www/gitweb和/etc/gitweb.conf # 配置文件, 如果未生成/var/www/gitweb这个目录,则需要克隆git源码,再拷贝其中的 gitweb 文件夹到 /var/www/,git clone git://git.kernel.org/pub/scm/git/git.git

3. 修改配置文件/etc/gitweb.conf,指定gitweb里需要显示的版本库的路径

$projectroot = /home/git/repositories

4. 手工创建一个文件/etc/apache2/conf.d/gitweb, 内容如下:

Alias /gitweb /usr/share/gitweb

<Directory /usr/share/gitweb>

Options FollowSymLinks +ExecCGI

AddHandler cgi-script .cgi

</Directory>

5. 添加用户权限

sudo usermod -a -G git www-data
sudo chmod g+r /home/git/projects.list
sudo chmod -R g+rx /home/git/repositories
sudo service apache2 restart
其中www-data是apache2的运行用户,需要将其添加到git组中,并且 修改 .gitolite.rc 文件,设置$REPO_UMASK = 0027;这个是版本库中数据的缺省权限设置,0027对应的值是同组的用户也可读可执行。

6.重启apache2查看界面http://localhost:8080/gitweb

这时有一个问题,并不是所有的git版本库我们都想开放给gitweb显示,比如管理员库gitolite-admin就不应该显示。解决的办法是修改配置文件/etc/gitweb.conf,设置$project_list = "/home/git/projects.list"。其中projects.list文件由gitolite管理,如果gitolite.conf对repo的定义如下:

repo  myrep

RW = @all

R = gitweb

则myrep.git会被写入projects.list文件,否则不会写入。通过projects.list文件就可以控制哪些版本库显示出来,哪些不用。


你可能感兴趣的:(在ubuntu上搭建gitweb+apache2)