OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

Git 1.8.3.1をCentOS 7.2へインストールしてベアリポジトリを構成

カテゴリ:OSSセットアップ | ソフトウェア:Git | タグ:
最終更新日:2020/11/02 | 公開日:2016/08/24

目次

概要

 CentOS 7.2へGit 1.8.3.1をインストールして、複数のアプリケーション開発者が共同で利用するためのリポジトリを構成します。 Gitの細かい説明は割愛しますが、今回構成するリポジトリは、ベアリポジトリと呼ばれ、 みんなが作成、編集したアプリケーションを集約して管理するためのリポジトリです (個人的には集中管理と言うとちょっとニュアンスが異なる気がします)。 管理するのが目的のリポジトリなので、各開発者がベアリポジトリ上で管理されているソースコードを直接編集することはできません。 各開発者の端末上に構成されたローカルリポジトリ(ノンベアリポジトリ)でコミットしたソースコードを pushしたり、他の開発者がプッシュした変更をpullして、自身のローカルリポジトリに取り込んで使うような形になります。

構成

サーバ構成

OSバージョン

CentOS 7.2.1511 x86_64

ソフトウェア・パッケージ一覧

  • git-1.8.3.1-5.el7.x86_64.rpm
  • perl-Git-1.8.3.1-5.el7.noarch.rpm
  • libgnome-keyring-3.8.0-3.el7.x86_64.rpm
  • perl-TermReadKey-2.30-20.el7.x86_64.rpm
  • perl-Error-0.17020-2.el7.noarch.rpm

環境構築

インストール

 Gitのパッケージとその依存パッケージ4つをインストールします。 CentOS 7.2のインストールDVDをDVDドライブに挿入し、以下のコマンドを実行します。

# cd /media/
# mkdir cdrom
# mount /dev/cdrom /media/cdrom
mount: /dev/sr0 is write-protected, mounting read-only
# cd /media/cdrom/Packages/
# rpm -ihv git-1.8.3.1-5.el7.x86_64.rpm libgnome-keyring-3.8.0-3.el7.x86_64.rpm perl-Error-0.17020-2.el7.noarch.rpm perl-Git-1.8.3.1-5.el7.noarch.rpm perl-TermReadKey-2.30-20.el7.x86_64.rpm
警告: git-1.8.3.1-5.el7.x86_64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID f4a80eb5: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:perl-Error-1:0.17020-2.el7       ################################# [ 20%]
   2:perl-TermReadKey-2.30-20.el7     ################################# [ 40%]
   3:libgnome-keyring-3.8.0-3.el7     ################################# [ 60%]
   4:perl-Git-1.8.3.1-5.el7           ################################# [ 80%]
   5:git-1.8.3.1-5.el7                ################################# [100%]
# cd /
# umount /media/cdrom

設定

Git用OSグループの作成

 Gitをリモートリポジトリとして利用する際に、OSユーザとOSグループでアクセスを制御します(複雑な制御はできないかったと思います)。 まず、Git用のOSグループをグループ名 gitgroup、GID 1001 で作成します。 グループ名とGIDはサーバ内で一意になっていれば、任意で付与して構いません。

# groupadd -g 1001 gitgroup
# tail -n 2 /etc/group
stapdev:x:158:
gitgroup:x:1001: ←OSグループが作成された

Git用OSユーザの作成

 続いてGit用のOSユーザをユーザ名 gituser01、UID 1001 で作成します。 OSグループと同様にユーザ名とUIDはサーバ内で一意になっていれば、任意で構いません。 また、OSユーザ作成後に、パスワードも設定します。

# useradd -u 1001 -g 1001 gituser01
# tail -n 2 /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
gituser01:x:1001:1001::/home/gituser01:/bin/bash ←OSユーザが作成された
# passwd gituser01
ユーザー gituser01 のパスワードを変更。
新しいパスワード: ←パスワードを入力
新しいパスワードを再入力してください: ←上と同じパスワードを再入力
passwd: すべての認証トークンが正しく更新できました。

ベアリポジトリ用ディレクトリの作成

 Gitのリポジトリデータを格納するディレクトリを作成します。 今回ベアリポジトリとするディレクトリは /data/git/repo.git/ とします。 ディレクトリは以下のポリシーで作成します。

  • /data/ はGit以外でも利用するため、所有者が root で、パーミッションは 777 とする。
  • /data/git/ 内にリポジトリ用のディレクトリを作成する。複数作成する想定。所有者は gituser01 で、パーミッションは744 とする。
  • /data/git/repo.git/ をベアリポジトリとする。所有者は gituser01 で、パーミッションは 744 とする。
# cd /
# mkdir data
# ls -ld data/
drwxr-xr-x 2 root root 6  8月 21 12:27 data/
# chmod 777 data
# ls -ld data/
drwxrwxrwx 2 root root 6  8月 21 12:27 data/
# su - gituser01
$ cd /data/
$ mkdir git
$ ls -ld git/
drwxr-xr-x 2 gituser01 gitgroup 6  8月 21 12:30 git/
$ cd /data/git/
$ mkdir repo.git
$ ls -ld repo.git/
drwxr-xr-x 2 gituser01 gitgroup 6  8月 21 12:32 repo.git/

ベアリポジトリの作成

 作成した /data/git/repo.git/ ディレクトリをベアリポジトリとして初期化します。 空だったディレクトリに必要なファイルが生成され、ベアリポジトリとして利用できるようになります。 なお、gitコマンドのオプションとして --shared を付与することで、ベアリポジトリを作成したユーザ gituser01 だけでなく、 同じグループ gitgroup に所属するユーザにもアクセス可能なパーミッションが付与されます。

$ cd /data/git/repo.git/
$ git init --bare --shared
Initialized empty shared Git repository in /data/git/repo.git/
$ ls -l
合計 16
-rw-rw-r-- 1 gituser01 gitgroup   23  8月 21 12:36 HEAD
drwxrwsr-x 2 gituser01 gitgroup    6  8月 21 12:36 branches
-rw-rw-r-- 1 gituser01 gitgroup  126  8月 21 12:36 config
-rw-rw-r-- 1 gituser01 gitgroup   73  8月 21 12:36 description
drwxrwsr-x 2 gituser01 gitgroup 4096  8月 21 12:36 hooks
drwxrwsr-x 2 gituser01 gitgroup   20  8月 21 12:36 info
drwxrwsr-x 4 gituser01 gitgroup   28  8月 21 12:36 objects
drwxrwsr-x 4 gituser01 gitgroup   29  8月 21 12:36 refs
$ exit
ログアウト
#

 以上でGitのベアリポジトリの構成は終了です。 次はベアリポジトリを利用するための開発者端末での設定を行います。