読者です 読者をやめる 読者になる 読者になる
無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

WebDAVでアクセスできるGitリポジトリの作成手順

Tool Git

WebDAVでpushできるGitリポジトリを作ったのでメモ。
以下は、

場合の作業手順です。

環境

使用した環境は次の通り。

  • クライアント
  • 公開先サーバー(foo.com)

概要

  1. apacheWebDAVの設定をする。
  2. リポジトリhoge」の裸(bare)のクローンを作る。
  3. 作成したクローンをサーバーに送付
  4. クローンを公開リポジトリに配置し、公開設定をする。
  5. クライアントからcloneしてみる。

1.apacheWebDAVの設定をする。

公開サーバーで、apacheの公開ディレクトリ「/git」を作成し、WebDAVでアクセスできるようにします。

1.1.公開ディレクトリの作成

「/var/www/html」がDocumentRootだったので、「/var/www/html/git」を作成し所有者をapacheの実行ユーザーにします。

$ cd /var/www/html/
$ mkdir git
$ chown apache:apache git/
1.2.WebDAVの設定

「/etc/httpd/conf.d/git.conf」を新規作成し、以下の設定を書きます。

<Location /git>

   DAV on

   #Basic認証の設定
   AuthType Basic
   AuthName "git repository"
   AuthUserFile <パスワードファイル>
   Require valid-user

</Location>
1.3.apacheを再起動します。
$ /etc/init.d/httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

再起動すると、ブラウザから「http://foo.com/git」にアクセスできるようになっているはず。

補足
  • 環境によっては、mod_davの読み込み設定や、DAVLockDBの設定も必要かも。
  • 試した環境だと、「/etc/httpd/conf/httpd.conf」にデフォルトで設定されていました。
$ grep dav /etc/httpd/conf/httpd.conf
LoadModule dav_module modules/mod_dav.so
LoadModule dav_fs_module modules/mod_dav_fs.so
<IfModule mod_dav_fs.c>
    DAVLockDB /var/lib/dav/lockdb

2.リポジトリhoge」の裸(bare)のクローンを作る。

ローカルで、リポジトリhoge」の裸(bare)のクローンを作成します。また、公開のための設定をします。

$ cd <リポジトリ「hoge」のあるディレクトリ>
$ git clone --bare ./hoge/ hoge.git
Initialized empty Git repository in /xxx/hoge.git/
$ touch ./hoge.git/git-daemon-export-ok

3.作成したクローンをサーバーに送付

作成したクローンをサーバーに送ります。転送手段はなんでも良さそうですが、とりあえずscpで。

$ scp -r ./hoge.git <ユーザー>@foo.com:/var/www/html/git

4.クローンを公開リポジトリに配置し、公開設定をする。

サーバーに移動し、クローンを公開リポジトリに配置して公開設定をします。また、apacheから更新ができるように、リポジトリの所有者をapacheの実行ユーザーにしておきます。

$ cd /var/www/html/git/hoge.git
$ git --bare update-server-info
$ chmod a+x hooks/post-update
$ chown -R apache:apache .

これでリポジトリhttp://foo.com/git/hoge.git」が公開されたはず。

5.クライアントからcloneしてみる。

ちゃんと設定できているか、クライアントから接続して確認してみます。

5.1.認証情報の設定

「~/.netrc」というファイルを作成し、認証情報を設定します。

    • 改行コードは「LF」とすること。
machine foo.com
login <ユーザー名>
password <パスワード>
5.2.クローンの確認

以下のコマンドを実行し、公開リポジトリからクローンを作成できることを確認します。

$ git clone http://foo.com/git/hoge.git

ローカルに「hogeリポジトリが作成されるはず。

5.3.pushの確認

クローンができたら、ファイルを追加してpushしてみます。

$ cd ./hoge
$ vi README
$ git add .
$ git commit -m "test"
$ git push http://foo.com/git/hoge.git master

無事pushができればOK。


参考