Установка GitWeb на Centos 5.5

0.250 Предисловие

GitWeb - самая удобная и правильная веб-морда для GIT. Процесс установки на CentOS не представялет ни какой сложности, за исключением некоторых хитростей, о которых можно прочитать в интернете. GitWeb работает как perl-cgi приложение, поэтому проще всего его поставить используя apache, но существуют умельцы, вариант установки под NginX тоже возможен, только там нужно что-то во что-то оборачивать... - гемор оборачивать вокруг пальца)) ...Шутка... На самом деле GitWeb написан как обычное CGI-приложение на Perl, что достаточно печально в случае использования замечательного веб-сервера NginX, который принципиально работает только с FastCGI. Покопавшись в инете, в архивах списка рассылки git вы сможете обнаружить скрипт, оборачивающий gitweb как FastCGI-приложение. Но об этом позже...

0.500 Имею

1. Как уже писал, Ось - CentOS 5.5
2. Git - git-1.7.3-1.el5.rf.x86_64.rpm , т.к. в стандартных репах его нету совсем, а в Epel-repo - версия трижды ветхая...
3. GitWeb - gitweb-1.7.3-1.el5.rf.x86_64.rpm
4. Все зависимости для пакетов можно взять там же

0.750 Хочу

1. Установить на уже имеющуюся ось, используя имеющийся git-репозиторий, находящийся в /home/gitweb/repos/.
Так, все константы описаны, приступим...

1. Реализация

Устанавливаем Git, GitWeb

# cd /home/andreika
# wget http://packages.sw.be/git/git-1.7.1-3.el5.rf.x86_64.rpm 
# wget http://packages.sw.be/git/perl-Git-1.7.3-1.el5.rf.x86_64.rpm 
# wget http://packages.sw.be/git/gitweb-1.7.3-1.el5.rf.x86_64.rpm


#rpm -ihv gitweb-1.7.3-1.el5.rf.x86_64.rpm


Проверяем наличие необходимых перл модулей

// Должно пройти без ошибок (код 0):
# perl -mCGI -mEncode -mFcntl -mFile::Find -mFile::Basename -e ""
# echo $?


Настройка apache(httpd)

Добавляем VirtualHost блок в файл конфигурации Apache httpd.conf:

Listen 8888
NameVirtualHost *:8888
DocumentRoot /home/gitweb/www
ServerName git.server
#SuexecUserGroup gitosis gitosis
ErrorLog "/home/gitweb/logs/error_log"
CustomLog "/home/gitweb/logs/access_log" combined
SetEnv  GITWEB_CONFIG  /etc/gitweb.conf
DirectoryIndex gitweb.cgi
Options +ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AddHandler cgi-script .cgi
  SetHandler cgi-script
RewriteEngine on
RewriteCond     %{REQUEST_FILENAME}   !-f
RewriteCond     %{REQUEST_FILENAME}   !-d
RewriteRule     ^.*   /gitweb.cgi/$0 [L,PT]


NB: Не забудьте создать папочку /home/gitweb/logs, с правами на запись для apache, а то апач не стартанет.

Настройка GitWeb

Добавляем описание репозитория

# echo "repository.git owner@example.com" | sudo -u git tee -a /home/gitweb/repos/


Настраиваем /etc/gitweb.conf

# grep -v "#" gitweb.conf 
our $projectroot = "/home/gitweb/repos/";
$site_name = "Web GitWeb trees ;-]";


Это всё, что у меня лежит в конфиге...
Собственно настройка уже закончена, запускаем апач, и лезем смотреть http://telega_ip:8888

Попутно посматривая в логи нашего веб-сервера

# tail -f /home/webgit/log/access_log


Так же мной было обнаружено, что GitWeb не правильно обрабатывает .sh файлы, находящиеся в репозитории, пытаясь скачать файл, вместо того чтобы отобразить его содержимое. Для исправления добавим в /etc/mime.types:

application/x-sh sh


Эта строка причина того, что файл отправляется, вместо того, чтобы быть отображенным:

Transfer-Encoding: chunked
Content-Type: application/x-sh


Всё.

Про установку GItWeb под NginX читаем тут.




Вас также может заинтересовать:

Установка Centos 6
Установка GeoIP (Centos, Red Hat)
Установка 1C 8.2 под PostgreSQL на CentOS 6.3
Установка PHP-SQLite в CentOS из SRC-RPM
Сборка и установка MemcacheDB на CentOS 5.5
Удаленная установка CentOS или Fedora