1

git /gitweb1.7.1とhttpd2.2.15がインストールされているCentOS6.2サーバーでgitwebをセットアップしようとしています。

gitwebのデフォルトのプロジェクトルート(CGIスクリプトで確認済み)は/ var / lib / gitであるため、これと裸のgitリポジトリを作成しました。

$ ls -laF /var/lib/git
total 12
drwxrwxr-x.  3 git  git  4096 Feb  8 16:37 ./
drwxr-xr-x. 15 root root 4096 Feb  8 14:20 ../
drwxrwxr-x.  7 git  git  4096 Feb  8 15:37 foo/

$ git init --bare --shared foo
Initialized empty shared Git repository in /var/lib/git/foo/

$ ls -lF foo
total 32
drwxrwsr-x. 2 git git 4096 Feb  8 17:16 branches/
-rw-rw-r--. 1 git git  126 Feb  8 17:16 config
-rw-rw-r--. 1 git git   73 Feb  8 17:16 description
-rw-rw-r--. 1 git git   23 Feb  8 17:16 HEAD
drwxrwsr-x. 2 git git 4096 Feb  8 17:16 hooks/
drwxrwsr-x. 2 git git 4096 Feb  8 17:16 info/
drwxrwsr-x. 4 git git 4096 Feb  8 17:16 objects/
drwxrwsr-x. 4 git git 4096 Feb  8 17:16 refs/

$ cat foo/HEAD
ref: refs/heads/master

ただし、表示するhttp://localhost/git/と「404プロジェクトが見つかりません」と表示されます。

スクリプトをデバッグしたところ、スクリプトが検出されていることがわかりました/var/lib/git/fooが、Perlの-e演算子はで失敗し/var/lib/git/foo/HEADます。ファイルの同じ場所で、バッククォートされた呼び出しlsは、ファイルがそこに表示されていることを示していますが、Perlにファイルを表示させることはできません-e

何がこれを失敗させているのか考えていますか?これは私には意味がありません。

編集:このCentOSボックスのSELinux拡張機能が無効になっているように見えることに注意してください:

$ sudo sestatus
SELinux status:                 disabled

編集:すべてをから/var/lib/gitに移動し/gitても効果はありません。ユーザーを実際のシェルに変更し、apacheそのユーザーとしてログインして、問題のすべてのディレクトリとファイルにアクセスできることを確認しました。

4

2 に答える 2

2

実際、それは SELinux でした。SELinux は無効であると報告しましたが、httpd で実行されている CGI スクリプトの一部のファイルへのアクセスを何らかの形で妨げていました。SELinux を有効にして許容モードに設定すると、動作し始めました。

これは非常に直感的ではないようで、イライラしますが、少なくとも機能しています。

于 2012-02-09T17:40:25.593 に答える
0

私はまだ権限の問題だと思っています...しかし、私は間違っている可能性があります。ディレクトリに至るまでのすべての親ディレクトリ/var/lib/gitがパーミッションでアクセス可能であることを確認しましたか?

他の誰かがここで同様の問題を抱えていたので、まったく別のディレクトリを試す価値があるかもしれません...おそらく/opt.

于 2012-02-08T23:35:19.193 に答える