ステータス:非推奨

この記事では、サポートされなくなったバージョンのUbuntuについて説明します。 現在Ubuntu12.04を実行しているサーバーを運用している場合は、サポートされているバージョンのUbuntuにアップグレードまたは移行することを強くお勧めします。

理由:
Ubuntu 12.04は2017年4月28日に保守終了(EOL)に達しました and no longer receives security patches or updates. This guide is no longer maintained.

代わりに参照してください:このガイドは参照として役立つ場合がありますが、他のUbuntuリリースでは機能しない場合があります。 可能な場合は、使用しているUbuntuのバージョン用に作成されたガイドを使用することを強くお勧めします。 ページ上部の検索機能を使用して、より新しいバージョンを見つけることができます。

序章


Gitは、あらゆる種類のプロジェクトの変更とコードを追跡するために使用できる優れた分散バージョン管理システムです。 チームのプロジェクトを収容するようにgitサーバーを構成すると役立つ場合があります。

Gitolite は、gitサーバーのアクセス制御レイヤーを提供するため、オペレーティングシステムのユーザーアカウントを伴わずにユーザーベースのgitアクセスを構成できます。 これにより、サーバーを他の種類の相互作用にさらすことなく、gitコントリビューターに必要な特権が提供されます。

これらのコンポーネントをUbuntu12.04VPSにインストールします。 このチュートリアルでは、このVPSにsudo権限を持つ通常のユーザーアカウントがあることを前提としています。 Ubuntu でのユーザーアカウントの設定についてサポートが必要な場合は、このチュートリアルを使用してください。

Gitをインストールする


通常のユーザーアカウントでUbuntuサーバーにログインします。

Ubuntuのデフォルトリポジトリからgitをインストールします。

sudo apt-get install git-core

これでgitがインストールされました。 gitが正しく動作するようにいくつかの設定を行います。

Gitoliteをインストールします


gitが正しく設定されたので、リポジトリへのユーザーアクセスを管理するためにgitoliteをインストールできます。

Gitoliteは、Ubuntuのデフォルトのリポジトリでも利用できます。 次のコマンドでインストールします。

sudo apt-get install gitolite

Gitoliteはgitを介してその構成を管理します! これを適切に設定するために、gitoliteと対話することを唯一の機能とするオペレーティングシステムユーザーを作成します。

オペレーティングシステムのユーザーはgitと呼ばれ、共同作業者が覚えやすいようになっています。 suコマンドを使用してのみアクセスできるようにパスワードを設定することはありません。

sudo adduser --system --group --shell /bin/bash --disabled-password git

これで、gitolite構成を処理する「git」というユーザーができました。 通常のアカウントからこのユーザーにアクセスできる必要があります。 これを行うには、git管理に関連付けられたSSHキーを構成します。

Git管理用のSSHキーを構成する


gitとgitoliteの管理に使用するlocalコンピューターで、SSHキーペアをまだ作成していない場合は作成する必要があります。

注:すでにキーペアを作成している場合は、SSHキーが上書きされないように、このコマンドをスキップする必要があります。

ssh-keygen -t rsa

デフォルトの場所を受け入れ、ENTERを押して、パスワードなしでキーベースのログインを構成します。

次のように入力して、公開鍵をgitサーバーにコピーします。

scp〜/ .ssh / id_rsa.pub regular_username @ git_server_IP_address :/tmp/git-admin.pub

サーバーの初期設定の記事に従った場合は、gitユーザーにSSHアクセスを許可する必要があります。 これを行うには、 / etc / ssh / sshd_config を編集し、AllowUsersディレクティブにgitを追加します。 完了したら、SSHサーバーを再起動します。

 sudo service ssh restart 

Gitoliteを構成する


次の手順は、gitサーバーで実行されます。 通常のユーザーで再度ログインします。

「git」ユーザーでログインして、転送したばかりの公開鍵でgitoliteを初期化できます。

sudo su - git

これで、次のコマンドを使用してgitoliteを設定できます。

gl-setup /tmp/git-admin.pub

ENTERを押して、構成をエディターにプルします。 コンテンツをスキャンして、デフォルトの構成がニーズを満たしていることを確認します。 後でいつでも変更できます。

終了したら、保存してファイルを終了します。

ジトライトの投与方法


ローカルコンピューターに戻って、gitoliteの管理を開始できます。

このコンピューターにgitがまだインストールされていない場合は、次のコマンドを使用してインストールする必要があります。

sudo apt-get install git-core

まず、gitサーバーからローカルマシンにgitolite情報を複製する必要があります。

git clone git @ git_server_IP_address :gitolite-admin

これにより、現在のディレクトリ内にgitolite-adminという新しいディレクトリが作成されます。 ここで、アクセスポリシーに変更を加えてから、それらの変更をgitサーバーにプッシュできます。

Gitoliteに新しいユーザーを追加する


プロジェクトにユーザーを追加するには、ユーザーの公開鍵が必要になります。 Gitoliteは、サインインするユーザー名を同じ名前の公開鍵に関連付けることで機能します。 このデモンストレーションでは、johnというユーザーがいると仮定します。

ローカルマシンで、gitolite-adminディレクトリに移動して、中身を確認できます。

cd gitolite-admin
ls

conf    keydir

内部には、confkeydirの2つのディレクトリがあります。 当然のことながら、keydirにはユーザーキーが含まれています。

あなたは「ジョン」と通信し、彼が使用する予定の公開鍵を取得します。 次に、そのキーを次のようにこのディレクトリにコピーします。

cp /path/to/john's/public/key.pub〜/gitolite-admin/keydir/john.pub

その後、新しい公開鍵をgitリポジトリに追加する必要があります。

まず、管理用gitアクションに関連付けられるユーザー名と電子メールを構成します。 これを構成するには、次のコマンドを入力します。

 git config --global  user.nameyour_name_here 」gitconfig--globaluser.email「 your_email  @住所 .com

おそらく、選択したエディターを使用するようにgitを構成することもできます。 次のコマンドを入力して、設定を指定します。

git config --global core.editor your_editor_choice

これで、新しいファイルをgitに追加できます。

git add keydir/john.pub

メッセージで変更をコミットします。

git commit-a-m「新しいユーザーJohnが追加しました」

変更をgitサーバーにプッシュして、結果を保存します。

git push

Gitoliteでアクセスを構成する


前のセクションでユーザーを追加したときに、次のような警告に気付いたかもしれません。

remote: 
remote: 		***** WARNING *****
remote:         the following users (pubkey files in parens) do not appear in the config file:
remote: john(john.pub)

新しいユーザーが構成ファイルにないというメッセージが表示されます。 これは、ユーザー「john」がgitoliteに認識されているが、アクセスが作成されていないことを意味します。

~/gitolite-admin/conf/gitolite.confファイルを編集することで、彼を構成に簡単に追加できます。

しかし、さらに一歩進んで、彼に独自のリポジトリを提供します。 johnsprojectというリポジトリを作成し、彼にアクセス権を与えます。

nano ~/gitolite-admin/conf/gitolite.conf

repo    gitolite-admin
        RW+     =   git-admin

repo    testing
        RW+     =   @all

ご覧のとおり、構文は非常に単純です。

repoキーワードの後に名前を付けてgitリポジトリを指定します。 その下に、特権タイプ、等号(=)、およびそのアクセス権を取得する必要があるユーザーを記述します。

グループは、次のような行で定義できます。

@ group_name = user1 user2 user3

その後、グループを参照することで、次のような多くのユーザーを参照できます。

repo some_repo RW + = @ group_name

@allと呼ばれる特別なグループは、コンテキストに基づいて、すべてのユーザーまたはすべてのリポジトリを参照します。

権限は、次のいずれかの値になります。

  • R :読み取り専用アクセス
  • RW :新しい変更を読み取ったりプッシュしたりできます。 gitサーバーにすでに存在する参照を削除することはできません。
  • RW + :破壊的にプッシュしたり、サーバー上の参照を削除したりできます。
  • :指定されたコンテンツにアクセスできません。

ファイルの最後に次の行を追加することで、「john」にjohnsprojectという新しいリポジトリへのフルアクセスを与えることができます。

repo    johnsproject
        RW+     =       john

ファイルを保存して閉じます。

これで、新しいメッセージでこの変更をコミットできます。

git commit-a-m「 MadeJohnのリポジトリ

最後に、変更をgitサーバーにプッシュします。

git push

これで、「john」は、公開鍵と秘密鍵を作成したコンピューターから、次のコマンドを使用してプロジェクトリポジトリのクローンを作成できるようになります。

git clone git @ git_server_IP_address :johnsproject

結論


これで、gitoliteが正しく構成されているはずです。 付随するオペレーティングシステムのユーザーと権限を毎回構成することを心配することなく、gitユーザーを簡単に作成できるはずです。

多様なチームで複数のプロジェクトを管理している場合は、プロジェクトに対応するグループを設定するのがおそらく最善です。 keydirキーをプロジェクトに基づいてサブディレクトリに整理することも役立つ場合があります。 Gitoliteはそれらを同じように使用しますが、管理目的で見つけるのが簡単になります。

ジャスティン・エリングウッド