ConoHa VPS に Gitサーバを立ててみた
メインページ>コンピュータの部屋>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クライアントは
- 接続時に秘密鍵のファイルの場所を聞いてくる
- あらかじめgitクライアントに、接続先と秘密鍵のファイル名の対応を登録しておく。
- 利用者のホームディレクトリの .ssh フォルダに id_rsa 等の名前で秘密鍵ファイルを入れておく
等のやり方が多いようです。秘密鍵の形式は ppkだったり、OpnSSHだったりします。
SSHによるgitのリモートリポジトリの利用は、サーバ側に git と SSH 以外何もいらないので、 SSHに慣れている管理者の方にお勧めです。