ConoHa VPS に Gitサーバを立ててみた

提供: tknotebook
2016年12月14日 (水) 02:44時点におけるNakamuri (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

メインページ>コンピュータの部屋>ConoHa VPS を使ってみた


長年 Subversion を Subversion Edge で愛用してきましたが、 時代の流れに負け、Git も使ってみることを決心、Git のリモートリポジトリを ConoHa VPS上に作成してみることにしました。

たいして難しくはなかったのですが、備忘録です。

方針

バージョン

私が利用している ConoHa VPS の OS は CentOS-6.6 ですが(ConoHaの旧プラン)、 CentOS-6.6 では git 1.7 が予めインストール済みです。

しかし、これはあまりにも古すぎるので、最新版かそれに近い版を入れることにしました。

最新版の場合、必要な各種ライブラリを yum でインストールし、git はソースからコンパイルというのが 一般的らしいのですが、 wing というyum レポジトリを使うと簡単にインストールできることが分かりました。 そこで、古い git は削除し、wing というリポジトリをインストールして、最近の git を導入することにしました。

クライアントとの接続方法

Gitサーバーとクライアントの接続方法には GitプロトコルHTTPS など各種方法があるようですが 最も簡単かつ実用的で安全な SSH を使うことにしました。

SSHの場合、git リポジトリにアクセス可能な権限を持つユーザを用意し、そのユーザで SSHでログイン可能なように SSHをセットアップするだけです。

最近のLinuxの扱いに慣れた管理者にとって、SSHの設定は日常的なものですから、この方法は git を利用する方法として最も簡単なものと言えるでしょう。

手順

ユーザを作成する

git のインストールには直接関係ありませんが、後でクライアントから git にアクセスするためのユーザを用意します。 ユーザ名はgit, グループ名は git としました。

ユーザの作り方はConoha VPS でそこそこ新しいLAMP環境の構築#ユーザを追加するを参考にするとよいでしょう。

SSH でログインできるようにユーザ git を構成すれば、後でネットワーク経由で簡単に git のリポジトリにアクセスできます。

yum のリポジトリフォルダへ移動

cd /etc/yum.repos.d

wing リポジトリをインストール

wing リポジトリは 最近のgitをお手軽に yum でインストールできるようにするリポジトリです。 まずこれをインストールします。enable=0 でインストールされるので、yumで使う時は オプション --enablerepo=wing が必要です。

wingは epel が必須ですが、epelはConoHaでは最初から enable=1 でインストールされているので、インストールも yum コマンドで指定する必要もありません。


wget http://wing-repo.net/wing/6/EL6.wing.repo
--2016-10-23 14:33:36--  http://wing-repo.net/wing/6/EL6.wing.repo
Resolving wing-repo.net... 103.12.17.254
Connecting to wing-repo.net|103.12.17.254|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 303
Saving to: “EL6.wing.repo”

100%[======================================>] 303         --.-K/s   in 0s

2016-10-23 14:33:36 (37.2 MB/s) - “EL6.wing.repo” saved [303/303]

インストール済み git と利用可能な git の確認

yum --enablerepo=wing list git
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Installed Packages
git.x86_64                      1.7.1-3.el6_4.1                            @base
Available Packages
git.x86_64                      2.10.1-1.el6_55.wing                       wing

git 1.7 の削除

yum remove git
Loaded plugins: fastestmirror, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package git.x86_64 0:1.7.1-3.el6_4.1 will be erased
--> Processing Dependency: git = 1.7.1-3.el6_4.1 for package: perl-Git-1.7.1-3.el6_4.1.noarch
--> Processing Dependency: git for package: php-phpunit-Version-1.0.3-3.el6.remi.noarch
--> Running transaction check
---> Package perl-Git.noarch 0:1.7.1-3.el6_4.1 will be erased
---> Package php-phpunit-Version.noarch 0:1.0.3-3.el6.remi will be erased
--> Processing Dependency: php-composer(sebastian/version) >= 1.0 for package: php-phpunit-PHP-CodeCoverage-2.0.11-1.el6.remi.noarch
--> Processing Dependency: php-composer(sebastian/version) < 2 for package: php-phpunit-PHP-CodeCoverage-2.0.11-1.el6.remi.noarch
--> Processing Dependency: php-composer(sebastian/version) >= 1.0 for package: php-phpunit-PHPUnit-4.3.4-1.el6.remi.noarch
--> Processing Dependency: php-composer(sebastian/version) < 2 for package: php-phpunit-PHPUnit-4.3.4-1.el6.remi.noarch
--> Running transaction check
---> Package php-phpunit-PHP-CodeCoverage.noarch 0:2.0.11-1.el6.remi will be erased
---> Package php-phpunit-PHPUnit.noarch 0:4.3.4-1.el6.remi will be erased
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                         Arch      Version               Repository
                                                                           Size
================================================================================
Removing:
 git                             x86_64    1.7.1-3.el6_4.1       @base     15 M
Removing for dependencies:
 perl-Git                        noarch    1.7.1-3.el6_4.1       @base     35 k
 php-phpunit-PHP-CodeCoverage    noarch    2.0.11-1.el6.remi     @remi    1.0 M
 php-phpunit-PHPUnit             noarch    4.3.4-1.el6.remi      @remi    957 k
 php-phpunit-Version             noarch    1.0.3-3.el6.remi      @remi    8.7 k

Transaction Summary
================================================================================
Remove        5 Package(s)

Installed size: 17 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : php-phpunit-PHPUnit-4.3.4-1.el6.remi.noarch                  1/5
  Erasing    : php-phpunit-PHP-CodeCoverage-2.0.11-1.el6.remi.noarch        2/5
  Erasing    : php-phpunit-Version-1.0.3-3.el6.remi.noarch                  3/5
  Erasing    : perl-Git-1.7.1-3.el6_4.1.noarch                              4/5
  Erasing    : git-1.7.1-3.el6_4.1.x86_64                                   5/5
  Verifying  : git-1.7.1-3.el6_4.1.x86_64                                   1/5
  Verifying  : php-phpunit-Version-1.0.3-3.el6.remi.noarch                  2/5
  Verifying  : perl-Git-1.7.1-3.el6_4.1.noarch                              3/5
  Verifying  : php-phpunit-PHP-CodeCoverage-2.0.11-1.el6.remi.noarch        4/5
  Verifying  : php-phpunit-PHPUnit-4.3.4-1.el6.remi.noarch                  5/5

Removed:
  git.x86_64 0:1.7.1-3.el6_4.1

Dependency Removed:
  perl-Git.noarch 0:1.7.1-3.el6_4.1
  php-phpunit-PHP-CodeCoverage.noarch 0:2.0.11-1.el6.remi
  php-phpunit-PHPUnit.noarch 0:4.3.4-1.el6.remi
  php-phpunit-Version.noarch 0:1.0.3-3.el6.remi

Complete!

新しい git を追加

yum --enablerepo=wing install git
Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.jaist.ac.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package git.x86_64 0:2.10.1-1.el6_55.wing will be installed
--> Processing Dependency: perl-Git = 2.10.1-1.el6_55.wing for package: git-2.10.1-1.el6_55.wing.x86_64
--> Processing Dependency: perl(Git) for package: git-2.10.1-1.el6_55.wing.x86_64
--> Running transaction check
---> Package perl-Git.noarch 0:2.10.1-1.el6_55.wing will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package         Arch          Version                        Repository   Size
================================================================================
Installing:
 git             x86_64        2.10.1-1.el6_55.wing           wing        9.5 M
Installing for dependencies:
 perl-Git        noarch        2.10.1-1.el6_55.wing           wing         36 k

Transaction Summary
================================================================================
Install       2 Package(s)

Total download size: 9.6 M
Installed size: 28 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): git-2.10.1-1.el6_55.wing.x86_64.rpm               | 9.5 MB     00:01
(2/2): perl-Git-2.10.1-1.el6_55.wing.noarch.rpm          |  36 kB     00:00
--------------------------------------------------------------------------------
Total                                           8.7 MB/s | 9.6 MB     00:01
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : git-2.10.1-1.el6_55.wing.x86_64                              1/2
  Installing : perl-Git-2.10.1-1.el6_55.wing.noarch                         2/2
  Verifying  : perl-Git-2.10.1-1.el6_55.wing.noarch                         1/2
  Verifying  : git-2.10.1-1.el6_55.wing.x86_64                              2/2

Installed:
  git.x86_64 0:2.10.1-1.el6_55.wing

Dependency Installed:
  perl-Git.noarch 0:2.10.1-1.el6_55.wing

Complete!
git --version
git version 2.10.1

使い方

以上ですが、SSHの設定ができていれば、もうこれだけで、ConoHa VPS は git のリモートリポジトリとして立派に機能します。

例えば、gitというユーザが SSHログインできるようになっていて、SSHでサーバにログインして、/home/git/sample.git というフォルダを作り、そこに cd して

git init --bare --shared

としてリモートリポジトリを作れば、 、 gitクライアントからは scp書式

git@serv.nakamuri.info:/home/git/sample.git


でリポジトリを参照できます。もちろん ユーザが(上記の場合 gitユーザが)リポジトリフォルダ(上記の /home/git/sample.git) を読み書きできる権限を持っていることが前提です。

redmine等からも見えるようにするには、
リポジトリを /var の下あたりに置くことをお勧めします。

SSHのアクセスで秘密鍵が必要な場合は、アカウントに設定した時にサーバに設定した公開鍵の片割れである秘密鍵が必要になります。 gitクライアントが秘密鍵を使用します。やり方はgitクライアント毎に異なりますので gitクライアントのマニュアルを参照してください。

大部分のgitクライアントは

  1. 接続時に秘密鍵のファイルの場所を聞いてくる
  2. あらかじめgitクライアントに、接続先と秘密鍵のファイル名の対応を登録しておく。
  3. 利用者のホームディレクトリの .ssh フォルダに id_rsa 等の名前で秘密鍵ファイルを入れておく

等のやり方が多いようです。秘密鍵の形式は ppkだったり、OpnSSHだったりします。

SSHによるgitのリモートリポジトリの利用は、サーバ側に git と SSH 以外何もいらないので、 SSHに慣れている管理者の方にお勧めです。