ローカルネットワーク向けgit公開サーバ(HTTP)
HTTPを使ったローカルネットワーク環境でのgitリポジトリの公開方法についてまとめる。ローカルネットワーク向けなのでセキュリティやリポジトリへのアクセス速度は気にしないことにする。なお、以下の作業はDebian 7.1 (Wheezy)のインストールオプションに "Web server" を指定した場合を前提としている。
/etc/apache2/sites-enabled/000-defaultを見ると
DocumentRoot /var/www
となっているので、この下に公開用gitリポジトリを置くことにする。
まずはApacheでWebDAVとBASIC認証の設定を行う。/etc/apache2/conf.d/git.confを作成し、以下のように編集する。
<Location /git> Options -Indexes DAV on AuthType Basic AuthName "Git repository" AuthUserFile "/var/www/git/.gitusers" Require valid-user </Location>
BASIC認証用のパスワードファイルを用意する。
# mkdir /var/www/git # cd /var/www/git # htpasswd -c .gitusers username(ユーザ名)
WebDAVを使えるようにするため、以下のコマンドを実行。
# a2enmod dav_fs # a2enmod dav # dav_fsだけでよいかも
Apacheを再起動する。
# service apache2 restart
webブラウザでhttp://localdomain/gitにアクセスして正しく認証できることを確認する。
公開用のgitリポジトリを設置する。
# cd /var/www/git # git clone --bare ~/hoge hoge.git # cd hoge.git # touch git-daemon-export-ok # git update-server-info # mv hooks/post-update.sample hooks/post-update # chown -R www-data:www-data /var/www/git
以上で設置完了。クライアントからcloneできることを確認する。
$ git clone http://username@localdomain/git/hoge.git # ユーザ名を指定する場合 $ git clone http://username:password@localdomain/git/hoge.git # ユーザ名:パスワードを指定する場合 $ 何か編集 $ git commit -m "comment on modification" $ git push