【问题标题】:Configuring GitWeb - 404 - No projects found配置 GitWeb - 404 - 未找到项目
【发布时间】:2012-04-23 06:00:14
【问题描述】:

我正在通过 OpenSUSE(非虚拟主机)中的 Apache 在我的系统中配置 gitweb。但是,我收到以下错误:404 - No projects found

/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 和 static 文件夹。 Apache 错误日志显示 gitweb.cgi: Can't opendir(/home/zhijian/gitweb): Permission denied,但 gitweb 文件夹的权限已设置为 755。有人知道可能导致此问题的原因吗?

【问题讨论】:

  • 上层目录的权限是什么?尝试su 作为www(或您机器上的任何内容)用户并 cd 进入此目录
  • 你的意思是我需要检查文件夹的用户?
  • 用户需要对refs/* 拥有READ 权限才能查看项目的gitweb。

标签: gitweb


【解决方案1】:

我在 OpenSuse 11.4 中也遇到过同样的问题。就我而言(我怀疑最初的发帖人也是如此,他也是一名 opensuse 用户),问题出在 AppArmor 上,我对此知之甚少。

以下是我注意到的导致最终解决方案的几点:

  • 在 OpenSuse 中,安装 git-web rpm 包以便 $projectroot 默认为“/srv/git”文件夹
  • 如果您将 git 存储库添加到此“/srv/git/...”子文件夹中,则一切正常
  • 如果您决定选择其他位置,例如“/home/myname/srv/git/”,那么尽管将所有者设置为 wwwrun:www,它还是会失败正如其他帖子中所建议的那样。
  • 这里的问题是 AppArmor,它似乎对允许应用执行的操作制定了更严格的政策
  • 执行“rpm -ql git-web”将显示一个名为:“/etc/apparmor.d/usr.share.git-web.gitweb.cgi强>”
  • 使用 su/sudo 打开此文件,以便编辑它
  • 在这里,您将看到以下几行:

...

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

...

  • 将这些更改为包含您的 git 存储库的父文件夹的路径,例如,如果您将它们存放在“/home/myname/srv/git/”中,则使用“”/home/myname/srv/" 父文件夹,例如:

...

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

...

  • 保存对文件的更改
  • 我认为您还必须将此父文件夹的所有者更改为 wwwrun:www,例如“sudo chown -R wwwrun:www srv/
  • 使用“sudo rcapparmor restart”重新启动 AppArmor

现在应该一切都好:)

【讨论】:

  • 在 SLES 11 SP 3 上工作...这是我最终启动并运行这件事所需要的。谢谢!
  • 出于某种原因,GitWeb 实际上在我安装后就为我工作了。只有在重新启动后,我才得到相同的“未找到项目”错误 - 这修复了它。谢谢。
【解决方案2】:

gitweb cgi 必须与您正在扫描的 repo 拥有相同的所有者。也就是说,如果你的 $projectroot 是 www-data:www-data 那么 gitweb.cgi 也必须是 www-data:www-data。

另外,$projectroot 下的目录也必须具有相同的权限。你应该能够做一个chown -R www-data:www-data . 这应该会有所帮助。您需要查看权限以及所有权,但这比较棘手,您需要确保自己做对了并且没有打开任何安全漏洞。

【讨论】:

  • 另外值得注意的是,如果您的网络服务器中没有启用 cgi,您将收到“权限被拒绝”,并且脚本将显示为纯文本。
【解决方案3】:

我遇到了同样的问题。 “404 未找到项目”,但配置很好。 Apache 缓存了 404 响应,并没有再次运行 cgi 脚本:

  1. 未编辑 gitweb.conf 中的配置(默认 ubuntu 安装)
  2. 我使用网络浏览器访问该 URL:得到“未找到项目”
  3. 我更新了配置
  4. 我按了 ctrl-r 但又一次:“找不到项目”(尽管现在配置正确)
  5. 我点击了 shift-ctrl-r (Firefox),得到了正确的结果!

【讨论】:

    【解决方案4】:

    编辑您在此处找到的 gitweb 配置文件:/etc/gitweb.conf

    并将以“我们的 $projectroot”开头的第 10 行更改为:

    我们的 $projectroot = "/path/to/your/git/root"

    然后重新启动您的网络服务器,这将告诉您您的网络服务器配置设置 GIT_PROJECT_ROOT 是否确实有效。

    【讨论】:

      【解决方案5】:

      SELinux 也使存储库文件对 http 服务器不可用。如果您必须使用 SELinux,您必须更改策略。最简单的方法是禁用 SELinux ;-)

      【讨论】:

        【解决方案6】:

        将 gitweb 文件夹的权限设置为 777。 它有效。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-07-31
          • 2021-08-11
          • 1970-01-01
          • 2020-02-29
          相关资源
          最近更新 更多