nginxでgitリポジトリの公開 - Smart HTTPを試してみた

nginxでgitリポジトリを公開してみます。
Smart HTTPというのが使えるようですが、こちらの例ではApache HTTP Serverでしたが、
特別なことは必要なさそうなので、nginxで試してみます。
80番ポートで通信できるとか、認証方法によっては鍵が必要なかったりといろいろ使い道がありそうですね。

こちらを参考にしました。

nginx 1.2.1を使用しますが、インストール手順は省略します。
上記の記事によるとgit-http-backendを動かす必要があるので、fcgiwrapを使ってみます。

fcgiwrapインストール

  • fcgiwrapインストール
yum -y install fcgi-devel.x86_64
cd /usr/loca/src
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure --prefix=/usr/local/fcgiwrap
make
make install
  • fcgiwrapの起動
sudo -u www /usr/local/fcgiwrap/sbin/fcgiwrap -c2 -s unix:/tmp/fcgiwrap.sock >> /var/log/fcgiwrap.log &

nginx設定

  • 試しに設定したserverセクションです。

ドメイン名、パス、認証方法などは適宜変更してください。

server {
    listen   80;
    server_name git.example.com;

    access_log /usr/local/nginx/logs/git/access_log;
    error_log /usr/local/nginx/logs/git/error_log;

    location / {
        auth_basic            "Restricted";
        auth_basic_user_file  htpasswd;

        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/local/git/libexec/git-core/git-http-backend;
        fastcgi_param GIT_PROJECT_ROOT /var/git;
        fastcgi_param GIT_HTTP_EXPORT_ALL "";
        fastcgi_param PATH_INFO $uri;

        fastcgi_pass unix:/tmp/fcgiwrap.sock;
    }
}

設定が完了したらnginxを再起動します。
認証が無いと誰でもアクセスできるので、なんらかの認証は設定した方がいいですね。