Ubuntuのローカル環境でGitサーバーを構築してみよう!

今回は、Ubuntuのローカル環境でGitサーバーを構築する手順をご紹介したいと思います。

広告

はじめに

Ubuntuのローカル環境でGitサーバーを構築する利点を挙げるとすると主に下記3点が思い浮かびます。

  • ローカル環境でGitを管理するためカスタマイズし易い。

  • 複数人でGitを共有する場合でも人数制限がない。

  • Gitサーバーを構築することでサーバー構築の勉強になる。

広告

Gitとは?

Gitは代表的なバージョン管理ツールです。バージョン管理ツールとはソースの変更履歴を管理するためのツールのことです。

バージョン管理ツールは、SVNやGitなどが有名です。Wikipediaさんでバージョン管理ツールを使うシステムについて書かれています。

バージョン管理システム(バージョンかんりシステム、VCS)とは、コンピュータ上で作成、編集されるファイルの変更履歴を管理するためのシステム。 特にソフトウェア開発においてソースコードの管理に用いられることが多い。

無料の Git サーバー

Gitを提供するサーバーとして有名はGitHubは、機能制限付きですが無料プランでもプライベートリポジトリを無制限に作ることができるようになったようです。(2019/1/7から)

https://github.blog/2019-01-07-new-year-new-github/

GitHubなどのバージョン管理サーバーも内部的にGitコマンドを使っていて、GitHubで管理するソースをGitHub内のサーバーに保存しています。

ローカル Git サーバーの構築手順

リモートリポジトリの作成

ローカル環境にリモートリポジトリを作成します。

リポジトリとはソース一式を格納する格納庫のようなものです。

$ mkdir repositories
$ cd repositories
$ mkdir myapp.git
$ cd myapp.git
$ git --bare init --shared

リモートリポジトリを作成しても「git fetch」コマンドでエラーが出る場合の対処方法を表にしました。

エラーメッセージ 対処方法
ssh: connect to host 192.168.*.* port 22: Connection refused sshサーバーのインストール
Permission denied (publickey,password) sshdの設定
ssh公開鍵認証の実装
「git fetch」コマンドを実行することでローカル環境のGitサーバーに正しく接続できるかを確認することができます。

sshサーバーのインストール

sshサーバーであるopenssh-serverをインストールします。

$ sudo apt purge openssh-server
$ sudo apt install openssh-server

sshdの設定

sshサーバーの設定ファイルであるsshdの設定を行います。

「/etc/ssh/sshd_config」ファイルの内容を下記の通り変更してください。

#ポートは暫定的に22を使います
Port 22
#rootログインを禁止
PermitRootLogin no
#パスワード認証を禁止
PasswordAuthentication no
#PAM認証を禁止
UsePAM no

ssh公開鍵認証の実装

sshサーバーに公開鍵認証方式で接続できるようにssh公開鍵認証の実装を行います。

リモートリポジトリのあるGitサーバーで秘密鍵と公開鍵を作成します。(今回はローカル環境です)

$ ssh-keygen -t rsa

Enter file in which to save the keyと聞かれるので、鍵の名前「id_rsa」を入力します。

Enter passphrase (empty for no passphrase):と聞かれるので、パスフレーズなしの空でエンターを押下します。

パスフレーズを入力すればセキュリティがより強固になりますがここでは簡略化のため省略します。パスフレーズについては下記URLに詳しく載っているので気になる方はご参照ください。

下記2ファイルが作成されます。

  • id_rsa(秘密鍵)
  • id_rsa.pub(公開鍵)

公開鍵をクライアント側に配置しないといけないのですが、今回は引き続きローカル環境で下記コマンドを実行します。

$ mv id_rsa.pub ~/.ssh
$ cd ~/.ssh

# (1)か(2)、該当するコマンドを実行します

# (1).ssh配下にauthorized_keysが既にある場合
$ cat id_rsa.pub >> authorized_keys
$ rm id_rsa.pub

# (2).ssh配下にauthorized_keysがない場合
$ mv id_rsa.pub authorized_keys

# authorized_keys ファイルのパーミッションを 0600 に変更
$ chmod 600 authorized_keys

保存したいプロジェクトの初期化とリモートリポジトリへの接続

[プロジェクトの初期化]
リモートリポジトリに保存したいプロジェクトを初期化し、プロジェクトを Git で管理することを宣言します。

[リモートリポジトリの設定]
この Git プロジェクトが接続するリモートリポジトリを宣言します。

$ cd ~/workspace/SpringApp/
$ git init
$ git remote add origin localhost:~/repositories/myapp.git

※ ~/workspace/SpringApp が今回 Git で管理するプロジェクトです。

接続確認

$ git fetch

※ git fetch はプロジェクトフォルダのルートで実行してください。(ここでは ~/workspace/SpringApp/)

「git fetch」コマンドを実行後エラーが出なければ、ローカル環境のGitサーバーに接続できています!

参考URL

下記のURLを参考にさせて頂きました。

ありがとうございます。

まとめ

ローカルの Git サーバーを構築するには ssh の知識やもちろん Git コマンドの知識も知っておかないといけないため、簡単なサーバー構築の勉強になるんじゃないでしょうか。

GitHub などで ssh 認証する際にも ssh を使った公開鍵と秘密鍵の知識を知っておかないといけないのでこちらの記事を参考していただけたら幸いです。

無料の Git サーバーである GitHub で非公開リポジトリを作成する方法についても記事にしたので気になる方下記URLからお願いします。

最後までお読み頂きありがとうございました。

広告

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


ABOUT US
ぽむ
はじめまして! ぽむ と申します。 Java、Kotlin (Android)、VBAなどの開発経験があるITエンジニアです。 備忘録として始めたブログですがみなさまのお役に立てたら光栄です。 英語など IT 以外の話題にも触れていこうと思っています。 詳しい自己紹介についてはこちら! よろしくお願いします。