gitosis による git サーバーの管理 のバックアップ差分(No.4)
更新- バックアップ一覧
- 現在との差分 を表示
- ソース を表示
- バックアップ を表示
- プログラミング/gitosis による git サーバーの管理 へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
[[公開メモ]] #contents * gitosis について [#kf89cbe7] gitosis の説明は gitosis は、(複数の)git リポジトリの管理を容易にしてくれるソフトウェア。~ 詳しい説明は、http://openbooth.org/archives/60.html あたりを参照のこと。 - http://openbooth.org/archives/60.html gitosis により管理されるサーバーには git clone gitosis-account@some.your.server.com:your-gitosis-project あたりを。 のような形でアクセスすることになる。 * Debian における gitosis リポジトリの作成 [#l4afdd75] :some.your.server.com| gitosis をインストールしたサーバーのアドレス :gitosis-account| some.your.server.com に(通常は)1つだけ作成された gitosis 用のアカウント名~ すべてのユーザーはこのアカウントを通じてリポジトリにアクセスする :your-gitosis-project| git リポジトリの名前~ 1つの gitosis-account で複数の git リポジトリを管理することができる リポジトリへのアクセス制御は公開鍵(rsa)ベースで、 ユーザーごと、そして、リポジトリごとに、 読み取り専用、または、読み書き可能、を指定できる。 git リポジトリの管理は、shell ログインすることなくリモートから行える。 - 新しいリポジトリの作成 - ユーザーアカウントの追加・削除 - リポジトリごと、ユーザーごとのアクセス制御 * Debian での gitosis のインストール [#l4afdd75] - http://openbooth.org/archives/65.html と同様にやれば良いんだけれど、 はまるのは、git というユーザーではうまく行かない事。 はまるのは、git というユーザーを使おうとするとうまく行かない事。 gitosis というユーザーが自動的に作られるので、それを使う。 手順としては、 + aptitude で gitosis をインストール (1行目) + 1人目の管理者(自分)の公開鍵を用いて gitosis を初期化 (10行目) + 自分のアカウントからアクセスできることを確認する (17行目) LANG:console $ sudo aptitude install gitosis 以下の新規パッケージがインストールされます: gitosis python-pkg-resources{a} python-setuptools{a} 更新: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。 284kB のアーカイブを取得する必要があります。展開後に 1217kB のディスク領域が新たに消費されます。 $ cp ~/.ssh/id_rsa.pub ~gitosis/osamu_id_rsa.pub $ sudo su gitosis gitosis$ cd gitosis$ pwd /srv/gitosis gitosis$ gitosis-init < osamu_id_rsa.pub gitosis$ gitosis-init < ~osamu/.ssh/id_rsa.pub Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/ gitosis$ rm osamu_id_rsa.pub gitosis$ ls -a .ssh gitosis repositories gitosis$ exit $ cd $ ssh gitosis@localhost PTY allocation request failed on channel 0 ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment. Connection to localhost closed. $ git clone gitosis@localhost:gitosis-admin.git Initialized empty Git repository in /home/osamu/gitosis-admin/.git/ remote: Counting objects: 5, done. remote: Compressing objects: 100% (4/4), done. remote: Total 5 (delta 0), reused 5 (delta 0) Receiving objects: 100% (5/5), done. $ cd gitosis-admin/ * 管理作業 [#u5d1b577] - http://openbooth.org/archives/82.html を参考に、osamu@another-server を管理者として登録してみる。 gitosis のリポジトリ管理情報は、それ自体1つの git リポジトリで管理されている。 手順は、 + 管理情報リポジトリ gitosis-admin をローカルにコピー : git clone + 管理情報をローカルで編集 : jed など + 編集結果をローカルリポジトリに登録 : git add / git commit + ローカルリポジトリをサーバーに送信 : git push LANG:console $ pwd ~/gitosis-admin/ $ git clone gitosis@localhost:gitosis-admin.git Initialized empty Git repository in /home/osamu/gitosis-admin/.git/ remote: Counting objects: 5, done. remote: Compressing objects: 100% (4/4), done. remote: Total 5 (delta 0), reused 5 (delta 0) Receiving objects: 100% (5/5), done. $ cd gitosis-admin/ $ ls gitosis.conf keydir: osamu@debian-server.pub $ cat gitosis.conf [gitosis] [group gitosis-admin] writable = gitosis-admin members = osamu@debian-server $ jed gitosis.conf [gitosis] [group gitosis-admin] writable = gitosis-admin members = osamu@debian-server, osamu@another-server $ scp osamu@another-server:.ssh/id_rsa.pub keydir/osamu@another-server.pub $ git add keydir/osamu@another-server.pub $ git commit -a Created commit d7e6afb: osamu@another-server.pub was added as admin 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 keydir/takeuchi@dora.pub $ git status # On branch master nothing to commit (working directory clean) $ git push Counting objects: 6, done. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 730 bytes, done. Total 4 (delta 0), reused 0 (delta 0) To gitosis@localhost:gitosis-admin.git 31412ce..d7e6afb master -> master これで追加されているはず。 これで、新しいユーザーが追加され、 登録した公開鍵を使って gitosis アカウントにログイン可能になっている。 LANG:console $ ssh osamu@another-server $$ git clone gitosis@gitosis.server:gitosis-admin.git Initialized empty Git repository in ~/gitosis-admin/.git/ remote: Counting objects: 10, done. remote: Compressing objects: 100% (9/9), done. remote: Total 10 (delta 1), reused 4 (delta 0) Receiving objects: 100% (10/10), done. Resolving deltas: 100% (1/1), done. $$ rm -r gitosis-admin うまく行っている。 * gitosis.conf の設定方法 [#u6460df3] * 管理情報の構成 [#xf612861] gitosis の管理情報は以下のようなファイル構成になっている。 gitosis-admin/ gitosis.conf keydir/ osamu@another-server.pub osamu@debian-server.pub :gitosis.conf| 管理情報フォルダのルートにある~ リポジトリごと、ユーザーアカウントごとのアクセス制御情報が書かれている :keydir/*| ユーザーアカウントごとの公開鍵 ** gitosis.conf の設定方法 [#u6460df3] 使い方は /usr/share/doc/gitosis/example/* を見る。 基本は、 [group グループ名] members = member1 member2 member3 ... members = member1 member2 member3 @other-group ... writable = リポジトリ1 リポジトリ2 リポジトリ3 ... readonly = リポジトリ1 リポジトリ2 リポジトリ3 ... という設定。 member? は keydir/* に保存した公開鍵ファイルの名前で指定します。~ 他のグループ名を @ 付きで指定することもできます。 gitosis-admin リポジトリ自体もこの形式のアクセス制御が可能なので、 容易に複数の管理者アカウントを作成・管理することができます。 あとは、必要に応じてリポジトリごとの設定。 [repo foo] [repo リポジトリ1] ## Allow gitweb to show this repository. gitweb = yes #gitweb = yes ## Oneline description of the project, mostly for gitweb. description = blah blah #description = blah blah ## Owner of this repository. Used in gitweb list of projects. owner = John Doe #owner = John Doe ## Allow git-daemon to publish this repository. daemon = yes #daemon = yes gitosis でリポジトリへの書き込み権限を作ってから git push することになる。 設定は、書き換えたら LANG:console git commit -a -m "message" git push を忘れずに行う。 新しいリポジトリを作成するには、上記方法でリポジトリへの書き込み権限を作ってから git push することになる。 LANG:console $ git clone gitosis@git.server.com:gitosis-admin.git ... $ cd gitosis-admin/ $ jed gitosis.conf ... [group myteam] members = member1 member2 member3 writable = my_project ... $ git commit -a -m "my_project created" $ git push $ mkdir my_project $ cd my_project $ git init $ git remote add origin gitosis@git.server.com:free_monkey.git $ # do some work, git add and commit files $ git push origin master:refs/heads/master * コメント [#z8ca5a65] 自由にコメントを付けて下さい。 #article_kcaptcha
Counter: 45300 (from 2010/06/03),
today: 2,
yesterday: 3