* GitLabにHTTPでアクセスする [#r163fc1c]
 #anno1(2012-01-17 : 作成)
 
 [[git-2 GitLabをインストールする>どぶお/開発しよう!/git-2 GitLabをインストールする]]でGitLabサーバが使えるようになりました。gitoliteも使えるのでSSH経由でのアクセスも可能のはずです。そこで、HTTPでのアクセス手段を追加してみます。実際はセキュリティの関係でHTTPSを使う場合が多いと思いますが、設定はほぼ同じです。~
 &color(red){GitLabの標準機能でやり方が分からなかったので作りましたが、そういう機能もあるのかも・・・};
 
 ** 何が問題か [#k032f2a4]
 SSHが問題なく使える場合はいいのですが、ファイアウォールが厳しいところはHTTPまたはHTTPSしか通らない場合があります(私の職場はそうです)。そこでHTTPまたはHTTPSも使いたいところです。
 
 *** 認証について [#y967e59a]
 SSHではgitoliteの公開鍵認証でリポジトリにアクセスできましたがHTTPだとその手段がありません。gitoliteはSmart HTTPに対応しているため、HTTP認証を使えばリポジトリにアクセスすることが可能です。実際、Smart HTTPでの設定方法が以下のサイトに示されています。
 - https://github.com/sitaramc/gitolite/blob/pu/doc/http-backend.mkd
 
 これでHTTPでリポジトリにアクセスできますが、HTTP認証を使うため、Webサーバの認証ファイルなどを編集しなければなりません。これではGitLabのアカウントで認証できません。しかもGitLabとgitoliteでは内部で使っているアカウント名が異なります(.gitolite/conf/gitolite.confを見れば分かります)。~
 それらの紐付けをするためにGibLabのデータベースを利用する必要もあります。
 
 ** gitlab-http [#c45c658f]
 そこで、それらの問題を解決するためにgitlab-httpという仕組みを考えました。実現方法は以下の通りです。
 + ApacheのHTTP認証をフックしてGitLabで認証を行う
 + 認証が通ったら、GitLabアカウントからgitoliteアカウントを紐付けしてgitoliteに渡す
 
 こんな感じです。
 
 *** glgl-http-auth [#n5a7da3c]
 それを実装したスクリプトがglgl-http-auth(ぐるぐる-http-authと読んで下さい⌣。''G''it''L''ab-''G''ito''L''iteです)です。
 - GitHubに置いてみました - http://github.com/nobrin/gitlab-http
 - アーカイブ(内容は同じはず) - &ref(gitlab-http.tar.gz);
 
 仕組みは簡単で、
 + WSGIAuthUserScriptで認証をフックして、glgl-http-authのcheck_password()をコール
 -- GitLabにアクセスして認証(Railsをよく知らないのでHTTPアクセスを使います。もっと効率的な方法もあると思います)
 + 認証が通ったら、GitLabのデータベースからgitoliteのアカウント名を取得して環境変数REMOTE_USERに格納する
 -- gitoliteのHTTP認証では環境変数REMOTE_USERが参照されます
 
 この方法によりアクセスを実現しています。
 
 *** セットアップ [#u082729f]
 必要なファイルはglgl-http-authのみなのでセットアップは簡単だと思います。~
 動作確認は、GitLab + gitolite + apache + mod_wsgiです。suEXECを使っているので、ドキュメントルートの下に配置する必要があるようです。例えば/var/www/gitlab-http/glgl-http-authというように配置して実行属性をつけて下さい。apacheの設定はexample.confを参考にしてみて下さい。
 動作確認は、GitLab + gitolite + apache + mod_wsgiです。suEXECを使っているので、ドキュメントルートの下に配置する必要があるようです。例えば/var/www/gitlab-http/glgl-http-authというように配置して実行属性をつけて下さい。apacheの設定はexample.confを参考にしてみて下さい。~
 まだ不親切な内容ですが、コメント欄で指摘があれば情報を足していきたいと思います。
 
 *** 使い方 [#p9dd1c42]
 example.confを元にセットアップをした場合、
  git clone http://gitlab.foo.com/git/myproject.git
 でユーザー名とパスワードを聞かれてアクセスできるはずです。GitLabのアカウントはメールアドレスなのでURLに埋め込むときは@を%40で記述します(http://dobuo%40mymail.foo.com@gitlab.foo.com/git/myproject.gitという感じ)。
 
 ** コメント [#g71b37b9]
 #comment