Gitweb dá 404 nenhum projeto encontrado

1

Estou com problemas para configurar o gitweb com gitolite. O Gitolite funciona corretamente, mas o gitweb continua me dando um 404 - nenhum projeto encontrado.

O que é estranho é que quando eu executo o script cgi como o usuário do apache da seguinte maneira ele parece funcionar corretamente.

# su apache /var/www/git/gitweb.cgi --shell=/bin/sh
....
<tr class="dark">
<td><a class="list" href="?p=testing.git;a=summary">testing.git</a></td>
<td><a class="list" title="Test repo 3" href="?p=testing.git;a=summary">Test repo 3</a></td>
...

O Gitweb deve ter acesso de leitura e eu configurei $REPO_UMASK = 0022; no gitweb.conf e adicionei o apache ao grupo gitolite # usermod -a -G gitolite apache

# ls -l gitolite/
total 8
-rw-r--r--. 1 gitolite gitolite   12 Sep 28 08:47 projects.list
drwxr-x---. 4 gitolite gitolite 4096 Sep 28 04:52 repositories

Minha configuração do apache git:

Alias /git /var/www/git

<Directory /var/www/git>
  Options +ExecCGI
  AddHandler cgi-script .cgi
  DirectoryIndex gitweb.cgi
</Directory>

Alguém pode me ajudar a fazer isso funcionar? Estive tentando o dia todo, lendo blogs e posts diferentes, mas isso não vai funcionar

    
por alexanbj 28.09.2011 / 16:04

1 resposta

3

Corrigido! Estou correndo no RHEL e acontece que foi um problema com o SELinux. Quando o desativei, tudo funcionou corretamente. Como eu não queria desativá-lo para sempre, encontrei a solução em um blog para escrever um módulo que define as políticas corretas e as instala.

O que eu fiz foi:

# mkdir gitolite-selinux; cd gitolite-selinux
# touch local.te local.if local.fc
# vim local.te

module gitolite 1.0;

require {
type git_system_t;
type httpd_t;
type var_t;
type gitosis_var_lib_t;
type httpd_git_script_t;
class dir { search read getattr open };
class file { getattr read open ioctl };
}

#============= git_system_t ==============
allow git_system_t gitosis_var_lib_t:dir { read search open getattr };
allow git_system_t gitosis_var_lib_t:file { read getattr open };

#============= httpd_git_script_t ==============
allow httpd_git_script_t gitosis_var_lib_t:dir { read search open getattr };
allow httpd_git_script_t gitosis_var_lib_t:file { read getattr open ioctl };

#============= httpd_t ==============
allow httpd_t var_t:file getattr;

# make -f /usr/share/selinux/devel/Makefile
# semodule -i gitolite.pp
    
por 30.09.2011 / 09:25