gitoliteを使用したGitサーバーのセットアップ
Gitoliteについて Gitoliteは無料のオープンソースGitサーバーであり、単一サーバーで複数のGitリポジトリをホストする場合に最適です。GitoliteはGit上にアクセス制御レイヤーを提供するため、ユーザーに基づいてGitアクセス権を設定できます。Gitoliteは多数のgitoliteユーザーへのアクセスを提供し、多くのGitリポジトリへのアクセスを制御します。
参考ドキュメント:
https://juejin.im/post/5a7802846fb9a063317c2e92
https://www.linuxidc.com/Linux/2017-07/145764.htm
以下にGitoliteの概要図を示します:
特徴 Gitoliteの機能については、以下の点が挙げられます:
非常に強力なルール言語(ブランチ/タグ名、変更されたファイル/ディレクトリ、変更されたファイルのサイズ、変更されたファイルの数などに基づいて決定)。 ルール作成の便利な機能(バックアップグループ、ユーザーグループ、LDAPからのユーザーグループ情報の取得、ファイルの包含、マクロなど)。 高いカスタマイズ性とスクリプト化可能性、特にユーザー定義コマンド。 多くのビルトインコマンドとオプション。 強力で柔軟なミラーシステム。 ユーザーはフィードバックを作成し、アクセス権を設定できます(許可されている場合)。 このチュートリアルでは、CentOS 7ミニマルサーバーにGitサーバーGitoliteをインストールしてセットアップする方法を見ていきます。
OS: CentOS 7 64ビットミニマルサーバー
一、システム環境の準備(rootユーザー操作)1.サーバーの更新と前提条件のインストール rootユーザーとして以下のコマンドを使用してCentOS 7サーバーを更新します:
[root@server1 ~]# yum update
以下の前提条件をインストールします:
[root@server1 ~]# yum -y install autoconf git
2.Gitoliteユーザーの作成 次に、Gitolite用にユーザーを作成し、以下のコマンドでパスワードを設定します:
[root@server1 ~]# adduser git
[root@server1 ~]# passwd git
3.SSH公開鍵の作成とgitユーザーへのコピー SSH公開鍵を作成し、Gitoliteサーバーに送信する必要があります。 以下のコマンドを使用してSSHキーを作成します:
[root@server1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
de:5f:11:3e:ab:91:c2:6e:3d:99:82:36:54:8a:fd:9d root@server1.linuxidc.local
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| . |
| . . . |
| oSo + |
| ..+o . + |
| ..o+oo+o |
| +.+oE+ |
| . o..o. |
+-----------------+
上図のように、2つのキーが生成されています。1つは秘密鍵で、機密を保つ必要があります。もう1つは公開鍵で、誰とコミュニケーションを取るかによって共有する必要があります。この例では、この公開鍵を'git'ユーザーと共有します。以前の手順で'git'という名前のユーザーを作成したことを覚えておいてください。
まず、公開鍵のコピーを作成します。
[root@server1 ~]# cp .ssh/id_rsa.pub admin_key.pub
次に、以下のコマンドを使用して公開鍵を'git'ユーザーのホームディレクトリにコピーします: [root@server1 ~]# cp admin_key.pub /home/git リモートシステムからキーをコピーする場合は、以下のコマンドを使用する必要があります:
[root@server1 ~]# scp admin_key.pub git@<ip-address>:/home/git
キーが正常に'git'ユーザーのホームディレクトリに転送されたことを確認できます:
[root@server1 ~]# ls /home/git/
以下のコマンドを実行してBashを更新します:
[git@server1 ~]$ source .bash_profile
二、Gitoliteのインストール(gitユーザー操作)[root@server1 ~]# su - git #gitユーザーに切り替え
[git@server1 ~]$ mkdir ~/bin #「git」ユーザーのホームディレクトリにbinという名前のディレクトリを作成
[git@server1 ]$ git clone git://github.com/sitaramc/gitolite #最新のGitoliteリポジトリをgitクローン
以下のような出力が表示されます:
Cloning into 'gitolite'...
remote: Counting objects: 9225, done.
remote: Total 9225 (delta 0), reused 0 (delta 0), pack-reused 9224
Receiving objects: 100% (9225/9225), 3.79 MiB | 260.00 KiB/s, done.
Resolving deltas: 100% (5269/5269), done.
[git@server1 ~]$ gitolite/install -ln ~/bin #コマンドを使用して、〜/ binディレクトリにGitoliteシンボリックリンクを作成
[git@server1 ~]$ ls ~/bin #〜/ binディレクトリにGitoliteシンボリックリンクが表示される
必要な前提条件のステップはすべて完了しました。これで、Gitoliteのインストールに進むことができます。
[git@server1 ~]$ ~/bin/gitolite setup -pk admin_key.pub #SSH公開鍵でGitoliteをインストールし、rootユーザーのキーをgit管理権限に追加
以下のような出力が表示されます:
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/git/repositories/testing.git/
WARNING: /home/git/.ssh missing; creating a new one
(this is normal on a brand new install)
WARNING: /home/git/.ssh/authorized_keys missing; creating a new one
(this is normal on a brand new install)
上記の出力が表示された場合は、おめでとうございます!Gitoliteは正常にインストールされています。 いくつかの警告が表示されるかもしれません。心配しないでください。これらは新しいインストールでは正常です。
三、Gitoliteのテスト(rootユーザー操作)[git@server1 ~]$ su - root
[root@server1 ~]# git clone git@192.168.1.150:gitolite-admin #新しくインストールしたGitoliteサーバーからgitolite-adminリポジトリをクローンし、この操作を行うことでgitのadmin権限を取得します
rootユーザーのパスワードの入力を求められます。SSHキーを交換したためです。 以下のような出力が表示されます
Cloning into 'gitolite-admin'...
The authenticity of host '192.168.1.150 (192.168.1.150)' can't be established.
ECDSA key fingerprint is ed:6b:ab:6d:b8:58:d0:f2:77:67:62:ef:90:51:26:ad.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.1.150' (ECDSA) to the list of known hosts.
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (6/6), done.
コマンドを使用してgitolite-adminリポジトリの内容を確認します:
[root@server1 ~]# ls
[root@server1 ~]# ls gitolite-admin/