2012-04-23 9 views
15

Sto configurando gitweb nel mio sistema tramite Apache in OpenSUSE (host non virtuale). Tuttavia, ottengo il seguente errore: 404 - No projects found.Configurazione di GitWeb - 404 - Nessun progetto trovato

/etc/gitweb.conf

# path to git projects (<project>.git) 
$projectroot = "/home/zhijian/gitweb"; 

# directory to use for temp files 
$git_temp = "/tmp"; 

# target of the home link on top of all pages 
#$home_link = $my_uri || "/"; 

# html text to include at home page 
$home_text = "/gitweb/static/indextext.html"; 

# file with project list; by default, simply scan the projectroot dir. 
$projects_list = $projectroot; 

# stylesheet to use 
$stylesheet = "/gitweb/static/gitweb.css"; 

# logo to use 
$logo = "/gitweb/static/git-logo.png"; 

# the 'favicon' 
$favicon = "/gitweb/static/git-favicon.png"; 

/etc/apache2/conf.d/gitweb.conf

Alias /gitweb "/home/zhijian/gitweb" 

<Directory "/home/zhijian/gitweb"> 
    Options +Indexes +ExecCGI +FollowSymLinks 
    AllowOverride All 
    Order allow,deny 
    Allow from all 
    AddHandler cgi-script .cgi 
    DirectoryIndex gitweb.cgi 

</Directory> 

ho aggiunto un link simbolico nella cartella gitweb di collegare gitweb.cgi e la cartella statica. Il registro degli errori di Apache mostra gitweb.cgi: Can't opendir(/home/zhijian/gitweb): Permission denied, ma le autorizzazioni sulla cartella gitweb sono state impostate su 755. Qualcuno ha un'idea di cosa potrebbe causare questo problema?

+1

qual è il permesso di upper dirs? prova a 'su' come utente' www' (o qualunque cosa sia sulla tua macchina) e cd in questa directory – CharlesB

+0

vuoi dire che devo controllare l'utente della cartella? – xuzhijian

+0

sì, giusto – CharlesB

risposta

8

gitweb cgi deve avere lo stesso proprietario del repository che si sta digitalizzando. Vale a dire, se il tuo $ projectroot è www-data: www-data allora gitweb.cgi deve essere www-data: anche www-data.

Inoltre, anche le directory in $ projectroot devono avere le stesse autorizzazioni. Dovresti essere in grado di fare un chown -R www-data:www-data . che dovrebbe aiutare. Dovrai esaminare le autorizzazioni e la proprietà, ma ciò è più complicato e ti consigliamo di assicurarti di aver capito bene e di non aver aperto buchi di sicurezza.

+0

Vale anche la pena notare che se non hai abilitato cgi nel tuo server web riceverai il "permesso negato" e lo script apparirà come testo normale. – jeremiah

3

Ho avuto lo stesso problema. "404 nessun progetto trovato" ma la configurazione era buona. Apache memorizzate nella cache il 404-risposta e non ha eseguito di nuovo il cgi-script:

  1. config nella gitweb.conf non era stato montato (installazione di Ubuntu di default)
  2. ho accesso alla URL con un browser web: Got "no progetti trovato"
  3. ho aggiornato il config
  4. colpisco Ctrl-R, ma ancora una volta: "Nessun progetto trovato"(anche se la configurazione fosse corretto ora)
  5. mi ha colpito shift-ctrl-r (Firefox) e Ho ottenuto il risultato corretto!
3

Modificare il file di configurazione gitweb trovato qui: /etc/gitweb.conf

e cambiare la linea 10 che inizia "il nostro $ projectroot" di essere:

nostro $ projectroot = "/ path/to/your/git/root "

quindi riavviare il server web, questo vi dirà se la configurazione del server web che GIT_PROJECT_ROOT sta effettivamente funzionando.

11

Ho avuto lo stesso problema anche in OpenSuse 11.4. Nel mio caso (e ho il sospetto che questo fosse il caso per il poster iniziale, che è anche un utente opensuse), il problema si è rivelato essere questa cosa AppArmor, di cui so ben poco.

Ecco alcuni punti ho notato che ha portato alla soluzione finale:

  • in openSUSE, il pacchetto rpm git-web installa in modo che il $ projectroot il default è il "/srv/git" cartella
  • Se si aggiungono i repository git all'interno di questo "/srv/git/... "sotto-cartella, poi tutto funziona bene
  • Se si decide su qualche altra posizione, ad esempio," /home/myname/srv/git/", quindi non riesce, nonostante l'impostazione proprietario wwwrun: www come consigliato in altri post.
  • Il Gotchya qui è AppArmor, che sembra collocare le politiche ancora più stretti su ciò che un app è permesso fare
  • Facendo un "rpm -ql git-web" rivelerà un file chiamato: "/etc/apparmor.d/usr.share.git-web.gitweb.cgi"
  • Aprire questo file con su/sudo in modo da poter modificarlo
  • Qui, si vedrà queste righe:

...

/srv/git/ r, 
/srv/git/** r, 

...

  • Cambiare questi nel percorso della cartella principale contenente i repository git, ad esempio, se li si ospita in "/home/nome/srv/git/ "quindi utilizzare il ""/" genitore-cartella /home mionome/srv/, ad esempio:

...

/home/myname/srv r, 
/home/myname/srv/** r, 

...

  • Salva le tue modifiche al file
  • Penso che devi anche cambiare il proprietario di questa cartella genitore su wwwrun: www, ad esempio, "sudo chown -R wwwrun: www srv/"
  • restart AppArmor con "sudo rcapparmor restart"

Tutti dovrebbero andare bene ora :)

+0

Lavorare su SLES 11 SP 3 ... questo è ciò di cui avevo bisogno per far funzionare finalmente questa cosa. Grazie! –

+0

Per qualche motivo, GitWeb ha funzionato per me subito dopo averlo installato. Solo dopo il riavvio, ho ricevuto lo stesso errore "nessun progetto trovato" e questo l'ha risolto. Grazie. –

0

SELinux mantiene i file di repository unavaliable per il server http anche. Se devi usare SELinux devi cambiare politica. Il modo più semplice è disabilitare SELinux ;-)

-1

impostare le autorizzazioni sulla cartella gitweb su 777. funziona.