スマートHTTPを使用して自分のサーバーの1つに自分のGitリポジトリをインストールしようとしています。スマートHTTPとsuexec:Gitリポジトリが見つかりません
suexecのない仮想サーバーで動作しますが、suexecが有効になっている本番サーバーでは動作しません。私はクローンまたはプッシュしようとすると、それは言う:
致命的な:リポジトリ 'http://domain.tld/git/project/' が見つかりません
Apacheの設定は次のようである:私は無効にした場合
<VirtualHost *:80>
Options -Indexes +ExecCGI
ServerAdmin [email protected]
DocumentRoot /var/www/domain.tld
ServerName domain.tld
Alias /fcgi-bin/ /var/www/domain.tld/fcgi-bin/
SuexecUserGroup domainuser domainuser
########## GIT ##########
SetEnv GIT_PROJECT_ROOT /var/www/git/git_domain
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias /git/ /var/www/git/git_domain/git-http-backend/
Alias /git /var/www/git/git_domain
<Directory /usr/lib/git-core>
Options +ExecCGI +SymLinksIfOwnerMatch
AllowOverride All
Require all granted
</Directory>
<Directory /var/www/git/git_domain>
Options -Indexes -SymLinksIfOwnerMatch
AllowOverride All
Require all granted
</Directory>
########## PROJECT DIRS HTPASS ##########
<LocationMatch "^/git/project1/.*$">
# DAV on
AuthType Basic
AuthName "project1"
AuthUserFile /var/www/git/gitpass/domain/project1
Require valid-user
</LocationMatch>
########## /PROJECT DIRS HTPASS ##########
########## /GIT ##########
ScriptAlias/git/var/www/git/git_domain/git-http-backend/
その場合はDAVで動作するのでクローンできますがプッシュできます。
私はすべてのファイルの所有者とアクセス権を適切な値(domainuser、755)に変更したと思います。suexecはそのログの内容について何も文句を言わない。
誰かが私が何か間違ったことを教えてもらえますか?
ありがとうございます。
これは機能しました。 ! '/ binに/ bashの PATH_INFO = $ SCRIPT_URL GIT_PROJECT_ROOT =の/ var/www /のgitの/ git_domain REMOTE_USER = $ REDIRECT_REMOTE_USER 輸出GIT_HTTP_EXPORT_ALL =真 USR/libに/のgit-コア: ラッパースクリプト私はこれを含んでいました/ git-http-backend' チュートリアルが悲しいので、このように見えるはずです。すべての行を削除した後が、 '!/ binに/ bashの 輸出GIT_PROJECT_ROOT =の/ var/www /のgitの/ git_domain USR/libに/のgit-コア/のgit-HTTP-backend' 、それがとして働いて "エクスポート" GIT_PROJECT_ROOT期待される。 ありがとうございましたkostix! – vdavid
@vdavid、 'REMOTE_USER'と' GIT_HTTP_EXPORT_ALL'変数は、彼らが何をするのかを理解していると便利です。 Webサーバがクライアント認証を実行した場合、前者はWebサーバによってCGIプログラムにエクスポートされ、この場合、変数には認証されたユーザ名が含まれます。後者は、 'git-daemon-export-ok'ファイルを含むリポジトリだけでなく、すべてのリポジトリを「書き出し」とみなすべきだということをGitに伝えます。 – kostix
@vdavid、 'REMOTE_USER'変数は、' gitolite'と一緒にGitホスティングフロントエンドを使用する場合に便利です。この場合、 'gitolite'は独自のSSH pubkeyベースの認証を実行しません。アクセス制御規則を適用するために認証されたユーザの名前を知りたがっています。 – kostix