git サーバ/ブラウザツールの構築方法

Contents


分散バージョン管理システムのひとつであるgitの使い方についてまとめます。git サーバの構築方法、Winodws, Linuxクライアントからの使い方、ブラウザツールの構築方法について説明します。

Linux Git クライアント

gitのインストール

CentOS 6では標準のリポジトリ(baseリポジトリ)でgitが公開されています。以下のようにyumコマンドを用いてインストールを行なってください。

ローカルバージョン管理

ローカルバージョン管理の意義

subversionのような旧来のバージョン管理システムに対する概念として、git, mercurialは「分散バージョン管理システム」と呼ばれます。これは、バージョン管理サーバを構築しなくても、お手軽にローカルサーバのみでバージョン管理を簡潔する事ができる仕組みです。

このローカルバージョン管理の仕組みは、開発者だけでなくインフラエンジニアにとっても有用です。例えば、以下のような日付ベースのファイル管理を想定します。設定変更する際は、「ファイル名+日付」でバックアップを作成する、よくあるパターンの残念な運用ルールです。

このような残念な運用ルールはとても操作が煩雑でオペミスを招きやすいです。しかし、gitのバージョン管理の仕組みを利用することで、煩雑な操作を解消する事ができます。バージョン管理の操作例は以下の通りです。

恐らく、おじさんエンジニアに伝わりやすい表現をすれば、かつてのRCSと同じ考え方です。gitの方がRCSよりも高機能ですが、実運用ではRCS時代と同じ使い方になるかもしれません。しかし、

  • ドキュメントが豊富である
  • インストールが簡単
  • 若年層に受け入れられやすい ( オワコンの運用は従業員のモチベーションを著しく下げる )

である事を考えれば、RCSからgitへ乗り換えるメリットは充分あると思います。

ローカルバージョン管理の操作例 ( サーバの設定ファイルの管理例 )
ローカルバージョン管理の操作例 – 初回コミット

バージョン管理したいディレクトリに移動し、”git init”コマンドを入力します。この状態でバージョン管理された状態になります。

バージョン管理に加えたいファイルを”git add”コマンドで追加します。なお、全てのファイルをバージョン管理に加えたい場合は、”git add *”とワイルドカードを指定して下さい。

“git status”コマンドを入力すると、バージョン管理対象になっているファイルと対象外になっているファイルを確認する事ができます。

“git commit -m コメント文”でファイルをコミットする事ができます。

ローカルバージョン管理の操作例 – バージョン管理配下のファイル編集

バージョン管理におかれたサーバをエディタ等で編集します。

編集内容は、”git diff”コマンドで差分表示する事ができます。

この状態で”git status”を入力します。すると、”httpd.conf”は”Changed but not updated”と表示されているのが分かります。

gitはどのファイルをcommitするかを制御する事ができます。制御対象に加えるためには、”git add”でファイル名を指定します。

“git add”で管理対象に含めた後、”git status”を入力します。”Changed but not updated”から”Changes to be committed”に変わった事が読み取れます。

“httpd.cont”を管理対象に含めた状態で”git commit”を入力します。

ローカルバージョン管理の操作例 – 切り戻し操作

バージョン戻しを行なうには、各リビジョンのハッシュ値を調べる必要があります。subversion等のバージョン管理システムではリビジョン番号という概念がありますが、gitではリビジョン番号という概念はありません。

ハッシュ値を調べる方法のひとつを紹介すると、”git reflog”コマンド入力時に左端に表示される番号がハッシュ値です。

“git checkout”コマンドの後にハッシュ値を入力する事によって、戻しが完了です。

gitのバージョン戻しの方法は、色々あります。google検索すると”git revert”の方が多数派を占めると思いますが、この方法は運用には向いていません。”git revert”は複数人開発, 複数ブランチを前提としたベストプラクティスであるのに対し、運用の現場は手順化しやすく確実に戻せる事を重視しなければなりません。このような状況を考え、賛否両論あると思いますが、私なりの結論は”git checkout”によって戻すのが一番確実であるとの結論に至りました。

gitの設定

git お勧め設定

git クライアントは、設定が可能です。以下、最低限行なったほうが良い設定を紹介します。

まずは、ユーザ名とメールアドレスの設定です。未設定の状態ですと、”git commit”実行時にユーザ名とメールアドレスを設定するように怒られてしまいます。設定例は以下の通りです。

使いやすさの観点で、color.ui trueもお勧めです。以下のようなコマンドを入力し、カラー設定を有効にします。

カラー設定を有効にすると、git diff, git statusの表示が色つきで表示されます。

color_ui_true_001

git 設定のスコープ

gitの設定は、global, system, リポジトリ単位の3種類のスコープを選択する事ができます。それぞれのスコープの意味は以下の通りです。

オプション設定ファイル意味
system/etc/gitconfigシステム全体に対する設定です。
global~/.gitconfigユーザ単位の設定です。
指定なし.git/configリポジトリ単位の設定です。

システム全体に対して設定を行ないたいのならば、–systemを指定しましょう。使用例は以下の通りです。

ユーザに対して設定を行ないたいのならば、–systemを指定しましょう。使用例は以下の通りです。

リポジトリに対する設定を行いたいならば、スコープ指定を省略します。使用例は以下の通りです。

Windows Git クライアント

ToritoiseGitのインストール

Windows環境でリビジョン管理システムを使用するには、多くの人はTortoiseシリーズを使用します。TortoiseシリーズはSubversion, Mercurialなどのバージョン管理システムを操作するGUIツールです。

以下、WindowsでGit操作ができるTortoiseGitのインストール, 使い方について説明します。

TortoiseGit ダウンロード

検索エンジンに”TortoiseGit”等と入力し公式サイトを探します。現時点(2014/10/25)では、公式サイトは以下のURLです。

公式サイトからインストーラーをダウンロードします。CPUアーキテクチャによって、インストーラーが異なる事に注意ください。

tortoisegit_download_001

TortoiseGit インストール

ダウンロードしたWindowsインストーラーファイル(msi)を実行します。インストーラーの指示に従って、インストール作業を行います。

「Next」を押下して下さい。

tortoisegit_install_001

ライセンスに関する注意事項の画面です。「Next」を押下します。

tortoisegit_install_002

Plinkを使用するか、OpenSSHを使用するかを選択する画面です。特に拘りがないのならば、そのまま「Next」を押下します。

tortoisegit_install_003

インストールするコンポーネントの画面です。特にコンポーネントの追加削除しなくても充分便利なので、そのまま「Next」を押下します。

tortoisegit_install_004

「Install」を押下します。

tortoisegit_install_005

インストールが完了するまでしばらく待ちます。

tortoisegit_install_006

「Finish」を押下して、インストールを完了させます。

tortoisegit_install_007

msysgitのインストール

msysgitのダウンロード

ToritoiseGitは内部的にはコマンドラインのGitを実行します。従って、Windows版のgit.exeをインストールしないと TortoiseGitを使用する事はできません。

右クリックメニュー, TortoiseGit, Settingsの順に選択します。

msysgit_001

すると以下のようなメッセージが表示されます。

msysgit_002

これはgit.exeへのファイルパスが設定されていない事を表します。設定するgit.exeは、cygwin版でもmsysgitでもどちらでも差し支えございません。cygwinのインストールは非常に時間がかかるので、このページではmsysgitのインストール方法を紹介します。

検索エンジンで”msysgit”と検索し、公式サイトからインストーラーをダウンロードして下さい。

msysgit_003

msysgitのインストール

先ほどダウンロードしたインストーラーを実行します。

「Next」を押下して下さい。

msysgit_004

ライセンスに関する注意事項の画面です。「Next」を押下して下さい。

msysgit_005

インストール先のディレクトリ指定の画面です。そのまま、「Next」を押下して下さい。

msysgit_006

インストールするコンポーネントの選択画面です。デフォルトの状態で特に不便は感じないと思いますので、そのまま「Next」を押下して下さい。

msysgit_007

メニューフォルダの名前を指定する画面です。そのまま「Next」を押下して下さい。

msysgit_008

PATHに関する設定画面です。デフォルトの「Use Git from Bash Only」が一番トラブルの少ない構成であると思いますので、そのまま「Next」を押下して下さい。

msysgit_009

SSHの実行ファイルを選ぶ画面です。ここはTortoiseGitの設定と併せるよう注意して下さい

TortoiseGitで全てデフォルト設定としている場合は”Use (Tortoise) Plink”を選択した状態で、”Next”を押下します。

msysgit_010

改行コードに関する指定です。そのまま「Next」を押下して下さい。

msysgit_011

インストールが完了するまで待ちます。

msysgit_012

「Finish」を押下し、インストールを完了させます。

msysgit_013

msysgitの動作確認

msysgitのインストール完了を確認するため、再び、右クリックメニュー, TortoiseGit, Settingsの順に選択します。

msysgit_001

以下のような設定画面が表示される事から、問題なくgit.exeのインストールとファイルパスが設定されたことが確認できます。

msysgit_014

ToritoiseGit 動作確認

ダウンロードの動作確認

インターネット上のリポジトリをダウンロードできるかどうか、ToritoiseGitの動作確認を行ないます。以下、cakephpを例に挙げて説明します。

“C:\”をエクスプローラーで開き、右クリックメニュー, Git Cloneの順で押下します。

cake_001

URLの欄に”https://github.com/cakephp”と入力し”OK”を押下します。なお、URLの変更は非常に多いので、疎通不能の場合は、cakephp公式サイトや検索エンジンを利用してURLを確認しましょう。

cake_002

ダウンロードが完了するまで待ちます。

cake_003

「close」を押下すると、リポジトリのダウンロードが完了します。

cake_004

Git サーバの構築

Gitサーバに関するファイルの送受信は以下3つのプロトコルを選択する事ができます。

  • http
  • ssh
  • git

ここでは3種類のプロトコルを使用したサーバの構築方法を説明します。なお、この説明は原理原則の理解程度に留めておいて下さい。実践では、チケット管理や権限管理とも連動したもっと便利なソフトウェアを使用すると良いでしょう。

ベア (bare) リポジトリ

git サーバの動作確認を行う前に、まずベアリポジトリ ( bare repository )という概念を理解する必要があります。

git, mercurialは、subversionと異なり、分散管理型のリポジトリと呼ばれます。分散管理とは、リポジトリサーバがなくてもローカルのみでバージョン管理を完結させるという事です。ローカルのみのバージョン管理は個人開発や設定ファイルのバージョン管理では充分かもしれませんが、チーム開発ではバージョン管理サーバを用いた集中管理が必要になります。

このようなサーバ側の集中管理型のリポジトリをベアリポジトリ ( bare repository ) と呼びます。ベアリポジトリ ( bare repository ) を作成するには、”git init –bare –shared=true”コマンドを使用します。

ベアリポジトリを作成すると、多数の管理ファイルが作成された事を確認できます。

Git サーバの構築 – ssh による公開

ベアリポジトリの作成

事前準備として、リポジトリサーバ側にベアリポジトリ ( bare repository ) を作成します。以下は、ホームディレクトリ配下の~/ssh_exampleにベアリポジトリ ( bare repository ) を作成する設定例です。

動作確認 – アップロード

適当なリポジトリを作成し、このリポジトリがアップロード (push) 可能かどうかを動作確認します。

ssh_exampleという名前のリポジトリを作成します。

リポジトリのアップロードが可能である事を確認します。

動作確認 – ダウンロード

先ほどアップロードしたリポジトリが、cloneコマンドによる複製が可能である事を確認します。

Git サーバの構築 – http による公開

ベアリポジトリの作成

事前準備として、リポジトリサーバ側にベアリポジトリ ( bare repository ) を作成します。apacheのデフォルト設定のルートディレクトリである/var/www/html配下に、httpd_exampleというベアリポジトリ ( bare repository ) を作成します。

sshの場合と異なり、httpdの場合は”git update-server-info“というコマンドが必要になります。このコマンドによって、info/refというHTTP管理する際に必要なディレクトリが作成されます。

webdavサーバの構築

apache 2.2系を用いたwebdavサーバ構築の方法を説明します。まず、dav_module, dav_fs_moduleの2つのモジュールが読み込まれているかを確認します。恐らくデフォルト設定のままで問題ないと思いますが、念のため設定ファイルを確認しておきましょう。

webdavおよびBasic認証の設定を行います。設定例は以下の通りです。/etc/httpd/conf.d/webdav.confというファイルを以下のように作成します。

Basic認証が使用するhtpasswdファイルを作成します。

動作確認 – アップロード

httpd_exampleという名前のリポジトリを作成します。

リポジトリのアップロードが可能である事を確認します。

Git サーバの構築 – git による公開

git-daemonのインストール

gitというプロトコルを用いて接続する事ができます。このプロトコルによるサーバは、xinetデーモンの1つの機能として提供されます。まずは以下コマンドで、xinetd, git-daemonをインストールします。

xinetdによって提供されるrsyncd, dhcpd, tftpdなどと同様に、git-daemonもデフォルトは無効化されています。/etc/xinetd.d/gitのdisableを”yes”から”no”に変更します。

xinitdを起動させます。以上でインストール作業が完了です。

設定確認

インストール時のデフォルト設定を確認してみましょう。/etc/xinetd.d/gitの設定を確認します。特に注意を払わなければならないのが、server_argsです。

–base-pathは公開するリポジトリのパスです。–base-pathで指定されたパスからの相対パスを指定する事でリポジトリの複製が可能になります。

–export-allは全てのリポジトリを公開するという意味です。このオプションが存在しない場合は、git-daemon-export-okというファイルが存在するリポジトリのみが公開されます。

なお、デフォルト設定は将来のバージョンアップで変更される可能性は充分あります。もし、見た事のないオプションがありましたら、適宜以下のマニュアルを参照してください。

動作確認

–base-pathで指定されたディレクトリに適当なリポジトリを作成し、そのリポジトリが複製できる事を確認します。

まず、–base-pathに指定されたディレクトリにsampleリポジトリを作成します。

gitプロトコルは、tcp9814を使用します。もし、ファイアウォールなどの口開け設定が必要になる場合は、適宜設定して下さい。/etc/sysconfig/iptablesの場合の設定例は以下の通りです。

リポジトリの複製操作が可能である事を確認します。

ssh httpd(webdav) 通信プロトコルの比較

特別な理由がない限り、ssh > httpd の順でサーバ構築を検討しましょう。httpdはwebdavを使用するのですが、このwebdavがかなり悪評高いプロトコルで以下のようなデメリットを備えています。

  • 非常に低速である ( git clone などの操作をした時の待ち時間が長い )
  • 近年はメンテナンス不良でwebdavサーバ構築が非常に難しい ( いわゆるオワコンです )
  • httpの中でもwebdav自体が特殊な通信プロトコルであり、ロードバランサ等のL7ネットワーク機器との相性が悪い

以上の理由で、特殊な要件がない限りはsshによるサーバ構築を検討しましょう。しかし、以下のようなhttpを使用せざるを得ない要件もあると思いますので、sshに拘りすぎるのも禁物です。

  • セキュリティポリシーとしてsshを禁止しており、httpを使わざるを得ない場合
  • sshの公開鍵認証の考え方がプロジェクトメンバーに馴染まない場合
  • 運用要件として旧来のBasic認証を引き継ぐ必要がある場合

Web インターフェース

Web インターフェース – gitweb

yumコマンドを用いて、gitwebをインストールします。

yumによるインストールが完了すると、/etc/httpd/conf.d/git.confという設定ファイルが自動的に作成されます。

httpdの設定を反映させるために、httpdを再起動します。

/etc/httpd/conf.d/git.confで指定されたURLにアクセスしてみましょう。ブラウザでhttp://<ip_addr>/git/を開きます。 “404 – No project found”と表示されるものの、apacheのデフォルトの404画面ではないので、CGIは問題なく動作している事までは確認できます。

gitweb_001

設定ファイルらしきものを探すと、どうらや/var/www/git/gitweb.cgiに設定を記述できる事が分かります。このcgiファイルの$projectrootのファイルパスを適切な値に書き換えます。

CGI書き換え後、以下のようなリポジトリが表示されている事を確認します。

gitweb_002

Description欄に”Unnamed repository”と記述されているのは、.git/descriptionが未編集のためです。このdescriptionに適切な説明文を記述すると、gitweb閲覧時に適切な説明文が表示されます。

Tips

Webdav 動作確認

webdavの動作確認は非常に困難です。近年はあまり使われなくなったため、あらゆるツールがメンテナンス不良状態になっています。このような状況の中、Windows 7 環境ではdddavというツールで動作確認する事ができました。

もし、トラブルに陥った時は、dddavを切り分け手段のひとつとしてご利用ください。

dddav

GitHub

githubは、gitサーバのクラウドサービス(SaaS : software as a Service)のひとつです。ソースコードを公開する無償版もあれば、ソースコードを非公開とする有償版も存在します。

もし、WEB系企業への転職を目指すならば、githubのアカウントは作っておくに越した事はありません。選考時に、「どのようなプログラミング言語を扱えるか」「どのような事に興味を持っているか」を採点する目的で使用されます。開発者でなくても、chefのレシピを公開したり、/etc以下の設定を公開したり、自作サーバの運用スクリプトを公開したりする事で充分な自己アピールとなります。

GitHub アカウント作成

GitHubアカウントを作成する方法について説明します。GitHubトップページにて、メールアドレス、名前、パスワードを入力します。

github_account_001

アカウントの種類を選択します。「Free」が押下されている状態になっている事を確認し、「Finish Sign up」を押下します。

github_account_002

以上でアカウントの作成が完了です。

GitHub 公開鍵の設定 (GitHub for Windowsの場合は操作不要)

GitHubへソースコードなどをアップロードするには、公開鍵/秘密鍵認証が必要となります。以下、鍵の設定方法を説明します。なお、「GitHub for Windows」を使う場合は、自動的に鍵登録を行なってくれますので、本手順の実行は不要です。

「歯車」アイコンを押下し、設定画面に遷移します。

github_account_003

「SSH Keys」「Add SSH Key」の順に押下し、公開鍵設定画面を開きます。「Title」「Key」を入力し、「Add Key」を押下します。

github_account_004

GitHub for Windows

Linux, MacでGithubを使用する事は容易ですが、Windowsではやや手間がかかります。Windowsユーザの方は、”GitHub for Windows”というソフトウェアを使用すると、容易にGitHubを操作できるでしょう。

GitHub for Windowsのインストール

ブラウザを開き、「GitHub for Windows」がダウンロード可能なURLを探します。

github_for_windows_001

「Download GitHub for Windows」を押下し、Windows用のインストーラーをダウンロードします。

github_for_windows_002

「ファイルの保存」を押下し、インストーラーをダウンロードします。

github_for_windows_003

「GitHub for Windows」は.Net Frameworkによって動作します。当該バージョンの.Net未インストールの方は、.Netのインストール画面が現れます。

.Netのエンドユーザ使用許諾契約に同意します。「Accept」を押下して下さい。

github_for_windows_004

.Netのインストールが完了するまで待ちます。

github_for_windows_005

GitHub for Windowsのインストール画面です。「Install」を押下します。

github_for_windows_006

インストールが完了するまで待ちます。

github_for_windows_007

インストールが完了すると、GitHub for Winsowsの初期設定画面が現れます。GitHubのアカウント名とパスワードを入力し、「Login」を押下します。

設定を後回しにしたい方は、ここで「Skip setup」を押下しても差し支えございません。

github_for_windows_008

“git commit”実行時に付与されれるメールアドレスと名前を入力します。

github_for_windows_009

既にWindowsPC内にgitリポジトリが存在する場合は、GitHub for Windowsの管理対象にすべきかどうを聞かれます。もし、管理対象にしたいならば、チェックを入れたままで「Add Selected」を押下して下さい。

github_for_windows_010

ディレクトリを新規作成し リポジトリを追加する場合

ディレクトリを新規作成しリポジトリを追加するには、まずは「+(プラス)」ボタンを押下します。

github_for_windows_011

「Local Path」欄に適当なディレクトリを選択し、「Name」欄にフォルダ名を入力します。この操作によって、Gitリポジトリが作成されます。

github_for_windows_012

作成されたリポジトリは、 「Publish Repository」ボタンを押下する事で、GitHubにアップロードする事ができます。初回アップロード時は、「Name」「description」を入力した後に「Publish」を押下します。

github_for_windows_013

GitHubをブラウザで開き、リポジトリがアップロードされた事を確認します。

github_for_windows_014

既存ディレクトリをリポジトリを追加する場合

既存ディレクトリをリポジトリを追加するには、まずは「+(プラス)」ボタンを押下します。

github_for_windows_015

「C:\Users\admin\GNS3」をリポジトリに加える手順を例に挙げて説明します。

「Local path」欄にリポジトリとなるディレクトリのひとつ上を指定します。この例の場合は、「Lacal path」欄に「C:\Users\admin」と入力します。その後、「Name」欄にディレクトリ名を入力します。

github_for_windows_016

作成されたリポジトリは、 「Publish Repository」ボタンを押下する事で、GitHubにアップロードする事ができます。初回アップロード時は、「Name」「description」を入力した後に「Publish」を押下します。

github_for_windows_017

GitHubをブラウザで開き、リポジトリがアップロードされた事を確認します。

github_for_windows_018

動作確認環境

Git サーバ環境は以下の通りです。

  • 動作確認日 : 2014/10/24
  • CentOS 6.5 64bit ( Sakura VPS )
  • httpd-2.2.15-31.el6.centos.x86_64
  • git-1.7.1-3.el6_4.1.x86_64
  • gitweb-1.7.1-3.el6_4.1.noarch

Linuxクライアント環境は以下の通りです。

  • 動作確認日 : 2014/10/24
  • git-1.7.1-3.el6_4.1.x86_64

Windowsクライアント環境は以下の通りです。

  • 動作確認日 2014/10/25
  • Windows 7 64bit ( レッツノート CF-J10 )
  • TortoiseGit 1.8.11.0
  • git version 1.9.4.msysgit.2

GitHub for Windowsの動作確認環境は以下の通りです。

  • 動作確認日 2014/11/22
  • Windows 7 64bit ( レッツノート CF-J10 )
  • GitHub for Windows 2.6.4

シェアする

  • このエントリーをはてなブックマークに追加

フォローする