CentOS7.1 64bitにGitをサーバー用途としてインストール、設定
ファイルのバージョン管理システムであるGitをサーバー用途として、CentOS7.1 64bitにインストール、設定する方法を以下に示します。
※CentOS6 64bitをご使用の場合は、当サイトのCentOS6 64bitにGitをサーバー用途としてインストール、設定のページをご覧ください。
ここではGitはCentOS7.1の標準リポジトリからインストールできる、バージョン1.8.3を使用しています。
Gitの構成等に関する詳しい説明に関しては、公式サイトのドキュメント等を参考にして頂くのが分かり易いかと思いますので、ここでは省略しますが、ざっくりと述べますと、GitではGitを利用する各マシンにリポジトリが存在し、各マシンのリポジトリに記録されているファイルの変更履歴を、他のマシンのリポジトリとやり取りしていく構成となっています。
複数人でファイルを共有して管理したい場合は、サーバー用途で使用するマシンにある1つのリポジトリに対し、各マシンのリポジトリからデータを送受信する形になります。
※CVS、Subversionでは、リポジトリはサーバー上に1箇所のみあり、それをクライアントから利用する構成となっているのが、Gitとは異なる点になります。
Gitではリポジトリ同士でデータをやり取りするプロトコルに、Localプロトコル、SSHプロトコル、Gitプロトコル、HTTP/Sプロトコルと、複数のものが利用できますが、ここではSSHプロトコルを使用していきます。
以下の各コマンドで、プロンプトが「#」で開始しているものはrootユーザーでの実行、「$」で開始しているものは一般ユーザーでの実行となります。
ここで作成したリポジトリをクライアントから利用する方法については、当サイトのEclipseでGitをクライアント用途として使用のページ、EclipseでGitをクライアント用途として使用(その2)のページもご覧ください。
Gitのインストール
冒頭にも記載しましたが、Gitでは各マシンに存在するリポジトリ同士で、データをやり取りするようになっていますので、サーバーとクライアントでインストールするものも同じになっています。
以下のコマンドを実行して、Gitのインストールを行います。
# yum install git
共有リポジトリの作成
ファイルの編集を行うマシンに存在するリポジトリには、実際に編集を行うファイルと、Gitの管理情報用のファイルが存在することになるのですが、サーバー用途で使用するマシンに存在するリポジトリでは、編集対象のファイルの実体は持たず、管理情報用のファイルのみを持つことになります。
このようなリポジトリのことをGitでは、ベアリポジトリと呼んでいます。
ベアリポジトリに対し、ここではSSHでアクセスするようにしますので、ベアリポジトリへの読み書きのアクセス権は、CentOSで管理しているユーザー、グループに対して設定することになります。
尚、コミットのログにはSSHでアクセスするユーザーではなく、コミットを行うマシンのGitで設定されているユーザー名、メールアドレスが使用されます。
ベアリポジトリへアクセスを行うユーザーが所属するグループの作成
ベアリポジトリへの書き込み権限を複数のユーザーに対して設定したい場合は、それらのユーザーを所属させるグループを初めに作成します。
以下のようなコマンドを実行して、グループの作成を行います。
※グループ名には作成したいものを指定します。ここでは「gitgroup」としています。
# groupadd gitgroup
※グループを使用しない場合は、作成する必要はありません。
ベアリポジトリへアクセスを行うユーザーの作成
続いてベアリポジトリへアクセスを行うユーザーの作成を行います。
以下のようなコマンドを実行して、ユーザーの作成を行います。
※ユーザー名には作成したいものを指定します。ここでは「gituser」とし、先程作成したグループに所属させています。
# useradd -g gitgroup gituser
※グループを使用しない場合は、所属グループを指定する必要はありません。
以下のようなコマンドを実行して、作成したユーザーにパスワードを設定します。
# passwd gituser
ベアリポジトリを作成するディレクトリの作成
ベアリポジトリへアクセスを行うユーザーを作成したら、次にベアリポジトリを作成するディレクトリを作成します。
以下のようなコマンドを実行して、ディレクトリの作成を行います。
※ここではディレクトリ「/xxx/git/」に、ベアリポジトリ用のディレクトリ「rep.git」を作成するようにしています。
※Gitではベアリポジトリ用のディレクトリ名は、慣例として「.git」で終わるようになっています。
# mkdir -p /xxx/git/rep.git
ベアリポジトリの作成は、SSHでアクセス可能とするユーザーで行う必要があるため、ベアリポジトリ用のディレクトリの所有者をこのユーザーに設定し、読み書きの権限を与えます。
以下のようなコマンドを実行して、先に作成したベアリポジトリ用のディレクトリの所有者を設定します。
※ここではディレクトリ「rep.git」の所有者を、「gituser」に設定しています。
# cd /xxx/git/
# chown gituser rep.git/
ベアリポジトリの作成
ここまで準備ができたら、最後にベアリポジトリの作成を行います。
ベアリポジトリの作成は、SSHでアクセス可能とするユーザーで、ベアリポジトリ用のディレクトリで行います。
以下のようなコマンドを実行して、ベアリポジトリの作成を行います。
※ここではユーザー「gituser」を使用して、ディレクトリ「/xxx/git/rep.git/」にベアリポジトリの作成を行っています。
# su - gituser
$ cd /xxx/git/rep.git/
$ git init --bare --shared
Initialized empty shared Git repository in /xxx/git/rep.git/
- 「--bare」オプションを指定すると、ベアリポジトリの作成が行われます。
- 「--shared」オプションを指定すると、ベアリポジトリの作成を行ったユーザーが所属するグループに対しても、リポジトリへの書き込み権限が与えられます。グループを使用しない場合は、「--shared」を指定する必要はありません。
ベアリポジトリの作成パターンによる結果を、以下に示します。
グループ「gitgroup」に所属する、ユーザー「gituser」で、「--shared」オプションを指定して、ベアリポジトリの作成を行うと、以下のような権限でファイル、ディレクトリが作成されます。
# ls -al /xxx/git/rep.git/
合計 20
drwxrwxr-x. 7 gituser root 4096 (略) .
drwxr-xr-x. 5 root root 52 (略) ..
-rw-rw-r--. 1 gituser gitgroup 23 (略) HEAD
drwxrwsr-x. 2 gituser gitgroup 6 (略) branches
-rw-rw-r--. 1 gituser gitgroup 126 (略) config
-rw-rw-r--. 1 gituser gitgroup 73 (略) description
drwxrwsr-x. 2 gituser gitgroup 4096 (略) hooks
drwxrwsr-x. 2 gituser gitgroup 20 (略) info
drwxrwsr-x. 4 gituser gitgroup 28 (略) objects
drwxrwsr-x. 4 gituser gitgroup 29 (略) refs
グループ「gitgroup」に所属する、ユーザー「gituser」で、「--shared」オプションを指定せずに、ベアリポジトリの作成を行うと、以下のような権限でファイル、ディレクトリが作成されます。
# ls -al /xxx/git/rep.git/
合計 20
drwxr-xr-x. 7 gituser root 4096 (略) .
drwxr-xr-x. 5 root root 52 (略) ..
-rw-r--r--. 1 gituser gitgroup 23 (略) HEAD
drwxr-xr-x. 2 gituser gitgroup 6 (略) branches
-rw-r--r--. 1 gituser gitgroup 66 (略) config
-rw-r--r--. 1 gituser gitgroup 73 (略) description
drwxr-xr-x. 2 gituser gitgroup 4096 (略) hooks
drwxr-xr-x. 2 gituser gitgroup 20 (略) info
drwxr-xr-x. 4 gituser gitgroup 28 (略) objects
drwxr-xr-x. 4 gituser gitgroup 29 (略) refs
グループへの所属を行っていない、ユーザー「gituser」で、「--shared」オプションを指定せずに、ベアリポジトリの作成を行うと、以下のような権限でファイル、ディレクトリが作成されます。
# ls -al /xxx/git/rep.git/
合計 20
drwxr-xr-x. 7 gituser root 4096 (略) .
drwxr-xr-x. 5 root root 52 (略) ..
-rw-rw-r--. 1 gituser gituser 23 (略) HEAD
drwxrwxr-x. 2 gituser gituser 6 (略) branches
-rw-rw-r--. 1 gituser gituser 66 (略) config
-rw-rw-r--. 1 gituser gituser 73 (略) description
drwxrwxr-x. 2 gituser gituser 4096 (略) hooks
drwxrwxr-x. 2 gituser gituser 20 (略) info
drwxrwxr-x. 4 gituser gituser 28 (略) objects
drwxrwxr-x. 4 gituser gituser 29 (略) refs
Gitをサーバー用途としてインストール、設定については、以上です。