Назад | Перейти на главную страницу

Как настроить Gitweb

Я установил Git на сервере, используя gitosis для управления доступом к фиксации. Я хотел бы настроить свою систему Git так, чтобы любой внутри нашего брандмауэра мог иметь доступ на чтение к репозиторию Git, и я также хотел бы настроить Gitweb.

Я нашел несколько руководств по установке Gitweb в разных блогах, но они различаются по различным деталям, а некоторые из них устарели. Я бы хотел, чтобы на этот вопрос был актуальный ответ.

Моя конкретная установка - Red Hat Enterprise Linux. Я успешно установил пакеты Git, gitosis и Gitweb и Apache. Однако я не понял, как настроить Apache для фактического предоставления доступа к Gitweb.

Как мне настроить мой сервер, чтобы разрешить доступ только для чтения к Git и разрешить Gitweb работать?

После установки gitweb (на RHEL $ yum install gitweb), он должен создать каталог var/www/git и поместите файл в etc/httpd/conf.d/git.conf. Если их не существует, создайте их. Поместите все свои репозитории git в var/www/git и редактировать git.conf чтобы позволить ему выполнять сценарии cgi и переписывать URL-адреса для gitweb. Вот что у меня есть:

<Directory /var/www/git>
SetEnv  GITWEB_CONFIG  /etc/gitweb.conf
DirectoryIndex gitweb.cgi
Allow from all
AllowOverride all
Order allow,deny
Options +ExecCGI
AddHandler cgi-script .cgi
<Files gitweb.cgi>
  SetHandler cgi-script
</Files>
RewriteEngine on
RewriteRule ^[a-zA-Z0-9_-]+.git/?(\?.)?$ /gitweb.cgi%{REQUESTURI} [L,PT]
</Directory>

Также есть файл gitweb.conf в /etc/gitweb.conf который указывает на такие вещи, как CSS, значки и логотипы. Я почти уверен, что они сработают, если вы оставите свои проекты в / var / www / git, но если вы измените этот каталог, вам, вероятно, придется поместить его в gitweb.conf.

Протестировано на Ubuntu 8.04:

sudo apt-get install apache2 git-core gitweb
sudo a2enmod rewrite

Предполагая, что ваши проекты git находятся в /pub/git, отредактируйте файл: /etc/gitweb.conf

$projectroot = "/pub/git";
$git_temp = "/tmp";
#$home_link = $my_uri || "/";
$home_text = "indextext.html";
$projects_list = $projectroot;
$stylesheet = "/gitweb.css";
$logo = "/git-logo.png";
$favicon = "/git-favicon.png";
# enable human readable URLs
$feature{'pathinfo'}{'default'} = [1];

Теперь настройте новый виртуальный хост в каталоге конфигурации Apache. Отредактируйте новый файл с именем: /etc/apache2/sites-available/gitweb

<VirtualHost *>
   ServerName     git.mydomain.com
   ServerAlias    git

   DocumentRoot /pub/git
   SetEnv GITWEB_CONFIG /etc/gitweb.conf

   RewriteEngine on
   RewriteRule ^/$                                            /gitweb [PT]
   RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /gitweb%{REQUEST_URI}  [L,PT]

   # Aliases
   ScriptAlias /gitweb           /usr/lib/cgi-bin/gitweb.cgi
   Alias       /gitweb.css       /usr/share/gitweb/gitweb.css
   Alias       /git-logo.png     /usr/share/gitweb/git-logo.png
   Alias       /git-favicon.png  /usr/share/gitweb/git-favicon.png

   # Logfiles
   ErrorLog  /var/log/apache2/gitweb.error.log
   CustomLog /var/log/apache2/gitweb.access.log combined
</VirtualHost>

Включите новый сайт:

sudo a2ensite gitweb

Перезагрузите Apache:

sudo invoke-rc.d apache2 restart