PRESSMAN*Tech

HTML5, CSS3からWordPress, AWS, Docker, Node.jsまで。プレスマンのスタッフが綴る技術ブログ。

http上でgitをapacheユーザー以外で使いたい

gitを使うならssh経由のほうが速いし、設定も簡単ですが、例えば22番ポートが使えないとか、色々な理由でhttp経由で使用したい時もあります。そんな時に以下のような感じでgit-http-backendを使用してちょいちょいっと設定すれば使えるようになります。ちなみにこれ以下のapacheの設定は全ての環境で同じなわけではないのと、セキュリティについては考慮していません。実際はBasic認証をかけるなりしてください。また、Gitoliteは使わない設定です。

 

<VirtualHost xxx.xxx.xxx.xxx:443>
DocumentRoot "/var/www/git"
ServerName git.xxx.jp
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
<VirtualHost>

ただ、これだとapacheユーザーで動いてしまいます。http経由のみで使うならいいのですが、sshでも使用していたりすると違うユーザーで同じリポジトリを扱うことになってしまったりしてどうも具合がよくありません。
そこで、suexecを使用してgitユーザーとして動かせば色々と都合がいいのですが、少しだけやらないといけないことがあります。

<VirtualHost xxx.xxx.xxx.xxx:443>
DocumentRoot "/var/www/git"
ServerName git.xxx.jp
SuexecUserGroup git git
ScriptAlias /git/ /var/www/git/git-http-backend/
<VirtualHost>

として、/var/www/git/git-httpd-backendを以下のように作成して、所有者をgit、実行権限をつけてください。

#!/bin/bash
export GIT_PROJECT_ROOT=/var/www/git
export GIT_HTTP_EXPORT_ALL=true
/usr/libexec/git-core/git-http-backend

当然、リポジトリの所有者はgitユーザーにしてください。以上で設定終了です。
あと、TortoiseGitは便利だけど遅いですね・・・・。

投稿者:taichi

taichi の紹介

何でもやりますが、一応プログラマです。
このエントリーをはてなブックマークに追加

私たちと一緒に働きませんか?

株式会社プレスマンでは、ディレクションが大好きな方、仕事を通してさらにスキルを磨きたい方を募集しています。まずは募集職種をご覧の上、お気軽にお問い合わせください。あなたとお会いできるのを楽しみにしています。

プレスマンの採用情報を見る →

コメントは受け付けていません。

▲ 先頭へ戻る