ec2、さくらのレンタルサーバ、vagrant上にgit共有リポジトリを作る

ec2、さくらのレンタルサーバ、vagrant仮想マシンの各サーバ・クラウド環境で、gitコマンドでgit共有リポジトリ(bareリポジトリ)を作り、ソースやファイルをリモートで共有・バージョン管理する方法について説明しています。

このページの目的と動作環境

最終更新日:2022/12/16

ここでは、AWSのec2、さくらのレンタルサーバ、vagrant仮想マシンのそれぞれの環境のサーバ上に、gitの共有リポジトリ(bareリポジトリ)を作り、リモートでソースやファイルの共有・バージョン管理をする環境を構築する方法・設定について説明しています。gitはコマンド操作でやっていきます。

もちろんgitはGitHubというサービスがあり、個人向けのフリープラン(無料プラン)もあって(2022/12/9時点)、非常に便利なサービスです。(GitHubのプラン内容は変更されるかも知れないので、詳細は公式サイトを確認してください。)
プランご紹介 - GitHub

ただGitHub以外の環境でも、コマンドのgit操作を使って、他の環境でもgit共有リポジトリを作れると色々と便利ですし、コマンド操作に慣れてる人、特に個人で(独学で)プログラミングの勉強をしていてちょっとgitを使ってソースのバージョン管理をしてバックアップを取っておきたいという人ならは、様々なクラウド・サーバ上でコマンドgitを使える方が楽で効率が良い事もあると思います。

という事で、本記事ではgitコマンドで、ec2、さくらサーバ、Vagrant仮想マシン上の各環境で、git共有リポジトリを作る方法について説明します。さくらのレンタルサーバは、安い料金プランで結構大きなストレージ容量(SSD)のサーバが借りられると思うので、用途としてサイト運営などのウェブサーバのみで、使用できる容量が結構余っている人も中にはいるんじゃないかと思います。そんな時、さくらのサーバ上にgit共有リポジトリを作って余っている容量を有効活用するのも1つの手だと思います。

◾️git共有リポジトリにアクセスするクライアントパソコン側の動作環境とバージョン情報です
OS:macOS Big Sur(バージョン11.7.1)

$ git version
git version 2.32.0 (Apple Git-132)

これ以降の話の前提として、クラウドやサーバ上のgit共有リポジトリにアクセスするクライアント側マシンのgit環境は、ユーザ名とメールアドレスを設定済みである事とします。この2つの設定をしておかないとgit commitなどの基本的なgitコマンドがエラーが出てできませんので。この2つの設定はgit configコマンドでできますが、ネットで調べれば多くの情報が出てくると思います。

AWSのec2上に共有リポジトリ(bareリポジトリ)を建てる

AWSのec2上にgitの共有リポジトリ(bareリポジトリ)、macパソコン側にgitリポジトリ(gitクライアント)という環境を作っていきます。

ec2のOSはAmazon Linux release 2、Amazon Linux2のgitのバージョンは2.23です。

$ git version
git version 2.23.3

ec2へはSSH接続(鍵認証)でログインできますが、SSH接続の設定を~/.ssh/configファイルにしている事を前提にこれ以降の話を進めていきます。例えば、ec2のホスト名をec2hostに設定した場合(~/.ssh/configのHost名)、このsshコマンドでec2にSSHログインできます。

$ ssh ec2host

まず、ec2にSSH接続して、適当なgit共有リポジトリ(bareリポジトリ)用のディレクトリを作成します。

$ mkdir ec2site.git
$ cd ec2site.git/
$ pwd
/home/ec2-user/ec2site.git

ec2site.gitというディレクトリを作ったので、そこでgitの共有リポジトリ(bareリポジトリ)を作ります。

$ git init --bare
Initialized empty Git repository in /home/ec2-user/ec2site.git/
これで、ec2側のgit共有リポジトリの準備は完了です。

次に、クライアントのmacPC側に戻って、適当なディレクトリでgitリポジトリを作ります。

$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
Initialized empty Git repository in /Users/hogeuser/tmp/testgit/ec2site/.git/
[master #]$

コマンド実行時にhint~という警告メッセージが出ていますが、ここではこの警告を無視します。この警告メッセージの意味については別ページで説明しているので、そちらをを参考にしてください。
git initコマンド実行時に「hint:〜」の警告が出る。 - Gitでよく使うコマンドやオプション

gitリポジトリを作ったので、そこで適当なファイルを作ります。

[master #]$ echo hello ec2 >> hoge.txt
[master #]$ ls hoge.txt
hoge.txt
[master #]$ cat hoge.txt
hello ec2

addとcommitを実行します。

[master #]$ git add .
[master +]$ git commit -m '最初のコミット。hoge.txtファイルの作成。'
[master (root-commit) 0d6b6d4] 最初のコミット。hoge.txtファイルの作成。
 1 file changed, 1 insertion(+)
 create mode 100644 hoge.txt

git remote addコマンドでリモートリポジトリの設定をします。
リモートリポジトリはec2上に建てた共有リポジトリ(ec2site.git)を指定します。

[master]$ git remote add origin ssh://ec2-user@ec2host/home/ec2-user/ec2site.git
originは設定したリモートリポジトリ名、ec2-userはec2のログインユーザ名、ec2hostはec2に付けた適当なホスト名です(~/.ssh/configファイルで設定したHost名)。

設定したリモートリポジトリの確認は、git config -lコマンドやgit remote -vコマンドでできます。

[master]$ git config -l | grep remote
remote.origin.url=ssh://ec2-user@ec2host/home/ec2-user/ec2site.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/
[master]$ git remote -v
origin	ssh://ec2-user@ec2host/home/ec2-user/ec2site.git (fetch)
origin	ssh://ec2-user@ec2host/home/ec2-user/ec2site.git (push)
リモートリポジトリの設定ができました。

ちなみにリモートリポジトリの設定を取り消したい場合、git remote rmコマンドに取り消したいリモートリポジトリを指定します。

[master]$ git remote rm origin

リモートリポジトリの設定は問題なさそうなので、リモートリポジトリ(ec2の共有リポジトリ)にpushします。

[master]$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 266 bytes | 88.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://ec2host/home/ec2-user/ec2site.git
 * [new branch]      master -> master
pushできました!

今度はec2上の共有リポジトリ(ec2site.git)をgit cloneしてみます。適当なディレクトリに移動してgit cloneコマンドを実行します。

$ git clone ssh://ec2-user@ec2host/home/ec2-user/ec2site.git ec2site2
Cloning into 'ec2site2'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

$ cd ec2site2/
[master]$ ls
hoge.txt
[master]$ git log --oneline
0d6b6d4 (HEAD -> master, origin/master, origin/HEAD) 最初のコミット。hoge.txtファイルの作成。
git cloneもできました!

この後にgitバージョン管理下のファイルをちょっと試しに修正してgit pullコマンドも確認したけど、問題なくできました。

[master]$ git pull origin master
〜

これでAWSのec2上にgitの共有リポジトリ、macパソコン側にgitリポジトリの環境を作るという当初やりたかった事ができるようになりました!

ちなみに共有リポジトリ(bareリポジトリ)についてですが、通常のリポジトリと違い使えるコマンドの制限などがありますが、git logコマンドは使えるのでコミットログを確認する事ができます。

Kindle Unlimitedなら対象の本が定額で読み放題 [広告]
対象本には、プログラミングなどのIT関連本、マンガ、雑誌、ビジネス書などがたくさんあります!

さくらのレンタルサーバ上に共有リポジトリ(bareリポジトリ)を建てる

さくらのレンタルサーバ上にgitの共有リポジトリ(bareリポジトリ)、macパソコン側にgitリポジトリ(gitクライアント)という環境を作っていきます。

さくらのレンタルサーバは、スタンダードプラン以上でSSH接続してサーバ上でシェルコマンド操作ができますが、デフォルトでできるSSH接続はパスワード認証です(2022/12/8時点)。
シェルログイン - レンタルサーバーはさくらインターネット

けど、さくらのレンタルサーバは認証鍵(公開鍵と秘密鍵)を作成・設定する事で鍵認証でSSH接続する事が可能です(毎回パスワード入力を求められないのでやっぱり便利)。また、SSH接続設定を~/.ssh/configファイルにする事で、シンプルなsshコマンドでさくらのレンタルサーバにSSHログインできます。例えば、さくらのレンサバのホスト名をsakurarsに設定した場合(~/.ssh/configのHost名)、このsshコマンドでさくらレンサバにSSHログインできます。

$ ssh sakurars

これ以降の話は、さくらのレンタルサーバ環境が鍵認証によるSSH接続と~/.ssh/configファイルにSSH接続設定をしている事を前提にします。鍵の作成方法、さくらのレンタルサーバの鍵認証でのSSH接続の設定・方法の詳細については別ページで書いていますので、そちらを参考にしてください。
さくらのレンタルサーバへSSHログインする、mysqlコマンドでSQLでDB操作も

さくらのレンタルサーバのgitのバージョンです。

% git version
git version 2.34.1

まず、さくらのレンタルサーバにSSHログインして、適当なgit共有リポジトリ(bareリポジトリ)用のディレクトリを作成します。

% mkdir sakurasite.git
% cd sakurasite.git/
% pwd
/home/sakurauser/sakurasite.git

sakurasite.gitというディレクトリを作ったので、そこでgitの共有リポジトリ(bareリポジトリ)を作ります。

% git init --bare
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
Initialized empty Git repository in /home/sakurauser/sakurasite.git/

コマンド実行時にhint~という警告メッセージが出ていますが、ここではこの警告を無視します。この警告メッセージの意味については別ページで説明しているので、そちらをを参考にしてください。
git initコマンド実行時に「hint:〜」の警告が出る。 - Gitでよく使うコマンドやオプション

これで、さくらのレンタルサーバ側のgit共有リポジトリの準備は完了です。

次に、クライアントのmacPC側に戻って、適当なディレクトリでgitリポジトリを作ります。

$ git init
〜
Initialized empty Git repository in /Users/hogeuser/tmp/testgit/sakurasite/.git/

[master #]$

gitリポジトリができたので、そこで適当なファイルを作ります。

[master #]$ echo hello sakura rentalserver >> hoge.txt
[master #]$ ls
hoge.txt
[master #]$ cat hoge.txt
hello sakura rentalserver

addとcommitを実行します。

[master #]$ git add .
[master +]$ git commit -m '最初のコミット。hoge.txtファイルの作成。'
[master (root-commit) cbe47e8] 最初のコミット。hoge.txtファイルの作成。
 1 file changed, 1 insertion(+)
 create mode 100644 hoge.txt

git remote addコマンドでリモートリポジトリの設定をします。
リモートリポジトリはさくらのレンタルサーバ上に建てた共有リポジトリ(sakurasite.git)を指定します。

[master]$ git remote add origin ssh://sakurauser@sakurars/home/sakurauser/sakurasite.git
originは設定したリモートリポジトリ名、sakurauserはさくらから貰ったアカウント名、sakurarsはさくらのレンタルサーバのホストに付けた適当なホスト名です(~/.ssh/configファイルで設定したHost名)。

設定したリモートリポジトリは、git config -lコマンドやgit remote -vコマンドで確認できます。

[master]$ git config -l | grep remote
remote.origin.url=ssh://sakurauser@sakurars/home/sakurauser/sakurasite.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

設定できたので、リモートリポジトリ(さくらのサーバ上の共有リポジトリ)にpushします。

[master]$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 281 bytes | 281.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://sakurars/home/sakurauser/sakurasite.git
 * [new branch]      master -> master
pushできました!

今度は共有リポジトリ(sakurasite.git)をgit cloneしてみます。適当なディレクトリに移動してgit cloneコマンドを実行します。

$ git clone ssh://sakurauser@sakurars/home/sakurauser/sakurasite.git sakurasite2
Cloning into 'sakurasite2'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

$ cd sakurasite2/
[master]$ ls
hoge.txt
[master]$ git log --oneline
cbe47e8 (HEAD -> master, origin/master, origin/HEAD) 最初のコミット。hoge.txtファイルの作成。
git cloneもできました!

これでさくらのレンタルサーバ上にgitの共有リポジトリ、macパソコン側にgitリポジトリの環境を作るという当初やりたかった事ができるようになりました。

Vagrant仮想マシン上に共有リポジトリ(bareリポジトリ)を建てる

vagrant仮想マシン側にgitの共有リポジトリ(bareリポジトリ)、macパソコン側にgitリポジトリ(gitクライアント)という環境を作っていきます。

Vagrantで試した仮想マシンの(VM)のBoxは「bento/centos-7.6」です(CentOS7のBOX)。仮想マシン上のgitバージョンです。

$ git version
git version 2.9.5
CentOS7環境でyumを使ってgitをインストールするとバージョンが1.8とかでかなり古いので、ソースからバージョン2.9のgitをインストールしています(ちなみにmirrors.edge.kernel.orgサイトからダウンロードできるgitソースファイルを見る限り、2022/12/11時点のgit最新バージョンは2.38.*)。ソースからgitをインストールする方法については、こちらのサイトが参考になります。
CentOS7 に最新版の Git をインストールする方法

あと、VagrantとVirtualBox環境のバージョンです。

$ vagrant -v
Vagrant 2.2.7

$ VirtualBox -h
Oracle VM VirtualBox VM Selector v6.1.16

Vagrant環境の前提として、vagrantで作成・起動した仮想マシン(VM)へのSSH接続情報を~/.ssh/configファイルに設定しておき、sshコマンドで仮想マシンへログインできる状態にしています。例えば、vagrant仮想マシンのホスト名をtestwpに設定した場合(~/.ssh/configのHost名)、このsshコマンドで仮想マシンVMにSSHログインできます。

$ ssh testwp

sshコマンドでvagrant仮想マシンにSSHログインする設定・方法の詳細については別ページで書いていますので、そちらを参考にしてください。
vagrantで起動した仮想マシンにsshコマンドで接続する

まず、仮想マシン上で適当なgit共有リポジトリ用のディレクトリを作成します。

$ mkdir testsite.git
$ cd testsite.git/
$ pwd
/home/vagrant/testsite.git
testsite.gitというディレクトリを作ったので、そこでgitの共有リポジトリ(bareリポジトリ)を作ります。
$ git init --bare
Initialized empty Git repository in /home/vagrant/testsite.git/
これでvagrant仮想マシン側のgit共有リポジトリの準備ができました。

クライアントのmacPC側に戻って、適当なディレクトリでgitリポジトリを作ります。

$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint: 
hint: 	git config --global init.defaultBranch <name>
hint: 
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint: 
hint: 	git branch -m <name>
Initialized empty Git repository in /Users/hogeuser/tmp/testgit/testsite/.git/

[master #]$

コマンド実行時にhint~という警告メッセージが出ていますが、ここではこの警告を無視します。この警告メッセージの意味については別ページで説明しているので、そちらをを参考にしてください。
git initコマンド実行時に「hint:〜」の警告が出る。 - Gitでよく使うコマンドやオプション

gitリポジトリができたので、そこで適当なファイルを作ります。

[master #]$ echo hello git >> hoge.txt
[master #]$ ls
hoge.txt
[master #]$ cat hoge.txt
hello git

addとcommitを実行します。

[master #]$ git add .
testsite [master +]$ git commit -m '最初のコミット。hoge.txtファイルの作成。'
[master (root-commit) 394b862] 最初のコミット。hoge.txtファイルの作成。
 1 file changed, 1 insertion(+)
 create mode 100644 hoge.txt

リモートリポジトリの設定をします。リモートリポジトリはvagrant仮想マシン上に建てた共有リポジトリ(testsite.git)を指定します。

[master]$ git remote add origin ssh://vagrant@testwp/home/vagrant/testsite.git
originは設定したリモートリポジトリ名で、testwpはvagrant仮想マシンに付けた適当なホスト名です(~/.ssh/configファイルで設定したHost名)。

設定したリモートリポジトリは、git config -lコマンドやgit remote -vコマンドで確認できます。

[master]$ git config -l | grep remote
remote.origin.url=ssh://vagrant@testwp/home/vagrant/testsite.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*

問題なく設定できていそうなので、リモートリポジトリ(vagrant仮想マシン上の共有リポジトリ)にpushします。

[master]$ git push origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 265 bytes | 265.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To ssh://testwp/home/vagrant/testsite.git
 * [new branch]      master -> master
pushできました!

今度は共有リポジトリ(testsite.git)をgit cloneします。適当なディレクトリに移動してgit cloneコマンドを実行します。

$ git clone ssh://vagrant@testwp/home/vagrant/testsite.git testsite2
Cloning into 'testsite2'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

$ cd testsite2/
[master]$ ls
hoge.txt
[master]$ git log --oneline
394b862 (HEAD -> master, origin/master, origin/HEAD) 最初のコミット。hoge.txtファイルの作成。
git cloneもできました!

これでvagrant仮想マシン上にgitの共有リポジトリ、macパソコン側にgitリポジトリの環境を作るという当初やりたかった事ができるようになりました!

アマゾンでGit・GitHubの入門書・実践本を探す[広告]

EclipseのSpring BootプロジェクトをGitで管理し、更にそのソースをリモート環境でGit共有リポジトリで管理する

このページで説明してきたgitコマンド操作を使えば、自分のパソコン内の色々なディレクトリをgitで管理したり、リモートのサーバ・クラウド環境にGit共有リポジトリを作り、そのリモート環境でもファイルの共有・バックアップなどの管理ができるようになります。

使用例として別ページで、Java開発環境のEclipse上で開発しているSpring BootプロジェクトをGitで管理し、更にそのSpring Bootプロジェクトのソースファイルをリモートのec2環境でGit共有リポジトリ管理する方法について説明しているので、興味のある方は参考にしてください。
EclipseのSpring BootをGitで管理する。更にリモート環境でGit共有リポジトリ管理も