2012-04-23 235 views
15

我在OpenSUSE(非虛擬主機)中通過Apache在我的系統中配置gitweb。但是,我收到以下錯誤:404 - No projects found配置GitWeb - 404 - 沒有找到項目

/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> 

我在的GitWeb文件夾中添加的軟鏈接鏈接gitweb.cgi和靜態文件夾。 Apache錯誤日誌顯示gitweb.cgi: Can't opendir(/home/zhijian/gitweb): Permission denied,但gitweb文件夾的權限已設置爲755.有人知道可能會導致此問題的原因是什麼?

+1

什麼是上層展示的許可?嘗試'蘇'作爲'www'(或任何它是在你的機器上)用戶和cd進入這個目錄 – CharlesB 2012-04-23 06:44:59

+0

你的意思是我需要檢查文件夾的用戶? – xuzhijian 2012-04-23 06:56:32

+0

是的,這是正確的 – CharlesB 2012-04-23 06:57:24

回答

8

gitweb cgi必須與您正在掃描的回購庫具有相同的所有者。也就是說,如果你的$ projectroot是www-data:www-data,那麼gitweb.cgi也必須是www-data:www-data。

另外,$ projectroot下的目錄也必須具有相同的權限。你應該可以做一個chown -R www-data:www-data .這應該有所幫助。您需要查看權限以及所有權,但這會更棘手,您需要確保您的權限正確並且沒有打開任何安全漏洞。

+0

其值得注意的是,如果你的web服務器沒有啓用cgi,你將會得到「權限被拒絕」,腳本將顯示爲純文本。 – jeremiah 2016-07-05 00:39:19

3

我有同樣的問題。 「404找不到項目」,但配置很好。 Apache的高速緩存的404響應並沒有再次運行CGI腳本:

  1. 配置在gitweb.conf未經編輯(默認安裝Ubuntu)
  2. 我訪問帶有網絡瀏覽器的網址:獲得「無發現項目」
  3. 我更新了配置
  4. 我打CTRL-R,但又說:‘沒有發現工程’(雖然配置現在是正確的)
  5. 我打移CTRL-R(火狐)和我得到了正確的結果!
3

編輯您的GitWeb的配置文件在這裏找到:/etc/gitweb.conf

,並更改啓動10號線 「我們的$ projectroot」 是:

我們$ projectroot =「/路徑/到/ your/git/root「

然後重新啓動您的網絡服務器,這會告訴您,如果您的webserver配置設置GIT_PROJECT_ROOT實際上正在工作。

11

我在OpenSuse 11.4中也遇到了同樣的問題。在我的情況(我懷疑這是最初的海報,誰也是opensuse用戶),問題原來是這個AppArmor的事情,我知道很少。

這裏的一些點,我注意到,導致了最終的解決方案:

  • 在OpenSuse當中,混帳的web RPM軟件包安裝,以便$ projectroot默認爲「/SRV /混帳」文件夾
  • 如果您在此「/srv/git/...中添加您的git回購「子文件夾,然後一切都運行得很好
  • 如果你決定在其他位置,例如」 /家庭/ MYNAME/SRV /混帳/」,那麼它失敗了,儘管設置所有者wwwrun:WWW如建議在其他職位。
  • 這裏的gotchya是AppArmor的,這似乎對什麼應用程序被允許做
  • 做一個「轉-ql混帳網絡」將揭示放置得更緊政策一個名爲「/etc/apparmor.d/usr.share.git-web.gitweb.cgi」的文件「
  • 打開此文件了蘇/ sudo的,所以你可以編輯
  • 在這裏,你會看到這幾行:

...

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

...

  • 將這些更改爲包含您的git回購站的父文件夾的路徑,例如,如果您將它們安置在「/home/myname/srv/git/ 「然後使用 」「 /家庭/ MYNAME/SRV/」 父文件夾,例如:

...

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

...

  • 保存您對文件的更改
  • 我想您還必須將此父文件夾的所有者更改爲wwwrun:www,例如,「sudo chown -R wwwrun:www srv/
  • 重啓的AppArmor與 「須藤rcapparmor重啓

所有現在應該罰款:)

+0

使用SLES 11 SP 3 ...這是我需要最終啓動和運行這個東西。謝謝! – 2014-03-04 18:09:52

+0

出於某種原因,GitWeb實際上在我安裝它之後爲我工作。只有在重新啓動後,我得到了同樣的「沒有找到項目」的錯誤 - 並修復了這個錯誤。謝謝。 – 2014-10-25 10:45:18

0

SELinux的不斷庫文件unavaliable的http服務器也。如果您必須使用SELinux,則必須更改策略。最簡單的方法是禁用SELinux ;-)

-1

將gitweb文件夾的權限設置爲777. 它的工作原理。