17

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と静的フォルダーをリンクしました。Apacheエラーログにはgitweb.cgi: Can't opendir(/home/zhijian/gitweb): Permission deniedが表示されますが、gitwebフォルダーのアクセス許可は755に設定されています。この問題の原因を誰かが知っていますか?

4

6 に答える 6

12

OpenSuse11.4でも同じ問題が発生しました。私の場合(そしてこれはopensuseユーザーでもある最初のポスターの場合だったと思います)、問題はこのAppArmorのことであることが判明しましたが、これについてはほとんど知りません。

最終的な解決策につながったと私が気付いたいくつかのポイントは次のとおりです。

  • OpenSuseでは、git-web rpmパッケージがインストールされるため、$ projectrootはデフォルトで「/srv/git」フォルダーになります。
  • この" /srv / git / ... "サブフォルダー内にgitリポジトリを追加すると、すべてが正常に機能します
  • 「 /home/ myname / srv / git / 」など、他の場所を決定した場合、他の投稿でアドバイスされているように所有者をwwwrun:wwwに設定しても、失敗します。
  • ここでの落とし穴はAppArmorです。これは、アプリに許可されていることに対してさらに厳しいポリシーを課しているようです。
  • rpm-qlgit-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/「parent-folder」を使用します。 、例:

..。

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

..。

  • 変更をファイルに保存します
  • この親フォルダの所有者もwwwrun:wwwに変更する必要があると思います。例: " sudo chown -R wwwrun:www srv / "
  • 「 sudorcapparmorrestart」でAppArmorを再起動します

今はすべてうまくいくはずです:)

于 2013-08-31T03:35:09.050 に答える
8

gitweb cgiには、スキャンしているリポジトリと同じ所有者が必要です。つまり、$ projectrootがwww-data:www-dataの場合、gitweb.cgiもwww-data:www-dataである必要があります。

さらに、$projectrootの下のディレクトリにも同じ権限が必要です。あなたは助けになるはずのことをすることができるchown -R www-data:www-data .はずです。所有権だけでなくアクセス許可も確認する必要がありますが、それは難しいので、正しく設定されており、セキュリティホールが開いていないことを確認する必要があります。

于 2013-01-27T13:18:49.430 に答える
3

私も同じ問題を抱えていました。「404プロジェクトが見つかりません」が、構成は良好でした。Apacheは404応答をキャッシュし、cgi-scriptを再度実行しませんでした。

  1. gitweb.confの設定は編集されませんでした(デフォルトのubuntuインストール)
  2. WebブラウザでURLにアクセスしました:「プロジェクトが見つかりません」
  3. 設定を更新しました
  4. 私はctrl-rを押しましたが、もう一度:「プロジェクトが見つかりません」(構成は現在正しいですが)
  5. shift-ctrl-r(Firefox)を押すと、正しい結果が得られました。
于 2012-05-16T09:31:42.723 に答える
3

ここにあるgitweb設定ファイルを編集します:/etc/gitweb.conf

そして、「our$projectroot」で始まる10行目を次のように変更します。

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

次に、Webサーバーを再起動します。これにより、GIT_PROJECT_ROOTを設定するWebサーバー構成が実際に機能しているかどうかがわかります。

于 2013-03-05T23:29:18.607 に答える
0

SELinuxは、リポジトリファイルをhttpサーバーでも使用できないようにします。SELinuxを使用する必要がある場合は、ポリシーを変更する必要があります。最も簡単な方法は、SELinuxを無効にすることです;-)

于 2015-05-20T11:23:27.693 に答える
-3

gitwebフォルダーのアクセス許可を777に設定します。これは機能します。

于 2017-07-14T06:00:39.760 に答える