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

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

※ 本ページはプロモーションが含まれています。

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

最終更新日:2023/10/2

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

GitにはGitHubという有名なWebサービスがあり、個人向けの基本プラン(無料のフリープラン)もあって(2023/10/1時点)、非常に便利なサービスです。(GitHubのプラン内容や料金は変更されるかも知れないので、詳細は公式サイトを確認してください。)
プランご紹介 - GitHub

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

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

チームや仕事でGitを使う人だけでなく、個人(独学)でEC2、さくらのレンタルサーバ、VagrantのLinux仮想マシンにGit共有リポジトリを構築して、gitコマンド操作でソースファイルのバックアップやバージョン管理をしたい人は、是非参考にして下さい。

◾️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上にGit共有リポジトリ(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リポジトリ)を作ります。 --bareオプションを付けて、git initコマンドを実行する。

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

次に、クライアント側のmacパソコンに戻って、適当なディレクトリでgitリポジトリを作ります。(オプション無しでgit initコマンドを実行する。)

$ 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 #]$

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

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

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

git addとgit 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上で作ったGit共有リポジトリ(/home/ec2-user/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上の共有リポジトリ(/home/ec2-user/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リポジトリの環境を作るという当初やりたかった事ができるようになりました!

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

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

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

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

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

けど、さくらのレンタルサーバは認証鍵(公開鍵と秘密鍵)を作成・設定する事で鍵認証でSSH接続する事が可能です(毎回パスワード入力を求められないので、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コマンドでリモートリポジトリの設定をします。
リモートリポジトリは、さくらのレンタルサーバ上に建てたGit共有リポジトリ(/home/sakurauser/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できました!

今度はGit共有リポジトリ(/home/sakurauser/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のLinux仮想マシン上にGit共有リポジトリ(bareリポジトリ)を建てる

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

今回Vagrantで試した仮想マシンの(VM)のBoxは「bento/centos-7.6」です(Linux 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コマンドで接続する

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

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

クライアントのmacパソコン側に戻って、適当なディレクトリでgit initコマンドで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

git remote add originコマンドで、リモートリポジトリの設定をします。
リモートリポジトリは、vagrant仮想マシン上に建てたGit共有リポジトリ(/home/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できました!

今度は共有リポジトリ(/home/vagrant/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リポジトリの環境を作るという当初やりたかった事ができるようになりました!

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

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

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