以前にGitLabのインストールや使い方を書いてみたのですが、どうやらあれはsshをつかえる環境でないといけないようで、簡単にhttp(やhttps)を経由してのclone, pushなどはできないようでした。おまけに各ユーザーのプライベートリポジトリを作ることが前提で、非登録のユーザーが閲覧することもできないようです。(言い分としてはその場合はGitHubでいいでしょ、ということだそうで)。
さて、なぜHttp経由かという理由ですが、httpプロトコルしか通過できないファイアウォールがあるところも多いです。特に開発の現場ではまだまだ多く存在するようです。こういった場合にはgitを使う場合にclone,pushらをhttpによって行う必要が出てきます。
Subversionでもsvnプロトコルではなくhttp経由のWebDAVを用いて使っている例も多いのはその理由によるところもあるのかなと思ったりしています。
前提条件
次のものはインストール済みで設定も終わっているものとします。
- Apache(WebDAV有効状態で)
- git
設定
リポジトリらを /var/www/html/repos-git に配置するとして、ディレクトリを用意しておきます。
これから説明するディレクトリらの所有者はapacheとしておきます。
Apacheの設定ファイル(httpd.conf)を開いて、リポジトリらをWebDAVでアクセスできるように修正します。
例
DAV on
※上記で指定するWebDAVを有効にするディレクトリを指定する際には、gitリポジトリそのものである必要があります。
SVNのよう な親ディレクトリを指定すればOKな感じでは無く、各リポジトリそれぞれでDAV ONとしなくてはならないようです。この点にはまりました(5/29追記)
apacheを再起動した上で、テストのためにリポジトリを用意してみます。
動作チェック
次のコマンドを実行していき、リモートリポジトリを用意します。
cd /var/www/html/repos-git mkdir test cd test git --bare init git update-server-info クライアント側(TortoiseGit使う方)で、このリポジトリを取得します。
入力するアドレスは、 http://(サーバーのIP)/repos-git/test です。
うまくいけば、Success を表示されて、リポジトリが取得できます。
gitを試していると、リポジトリが取得できても、push ができないことが割と発生しますので、ここでpushも正常にできるかを確認しておきます。
適当なファイルを追加して、編集した後で、commit, push してリモートリポジトリにpushが成功するかを確認してみてください。
Gitwebのインストール
せっかくなのでGitwebも入れてみました。
yum install gitweb
このコマンドで簡単にインストールが完了します。
あとは設定ファイル /etc/gitweb.conf を編集するだけです。
$projectroot という変数にGitリポジトリの場所を設定するようになっているので、次のように書き換えます。
#our $projectroot = "/var/lib/git"; ↓ our $projectroot = "/var/www/html/repos-git";
そして、apacheを再起動して、http://(サーバーのIP)/git/ にアクセスしてみます。
問題なければ、testリポジトリが一覧に並んでいることでしょう。
まとめ
とりあえずユーザー認証はなしでまずはサーバーにgitを用意してhttpによるアクセスをさせるというところを目的として、環境設定を行ってみました。今のところやっぱりWebDAVによってhttp経由のアクセスをさせるというところに落ち着いてしまいました。 ただWebDAVを使っていると遅いという話もあるようなので、別の方法でhttp経由のgitリポジトリ取得の方法がないかを、もうしばらく探してみたいと思います。
コメント