Blog スタッフブログ

GitとSourceTreeではじめるバージョン管理と自動デプロイ

Category | Blog
Tag | /
/ 4,926views
git-sourcetree

こんにちは、制作の奥田です。

弊社では開発はもちろん、クライアントワークでもGit(分散型バージョン管理)を使ってソースコードを管理しています。
CUIが苦手という方には「SourceTree」のような便利なGUIもあり、デザイナーもデベロッパーも一度は耳にしたことがあるのではないでしょうか?

FTPでアップロードしていると違った場所にファイルをあげてしまったりしてテンパった経験はありませんか?
Gitならその心配は皆無です。

今回はベアリポジトリの作成から、自動デプロイまで一連の流れをご説明いたします。

Table of contents

  1. 環境の確認
  2. ssh公開鍵認証を設定する
  3. ベアリポジトリを作成し、リモートとローカルにクローンする
  4. 自動デプロイの設定と.gitignoreファイルを作成する

環境の確認

まずはバージョン管理をしたい環境がssh接続が可能な環境かどうかを確認してください。
さくらのレンタルサーバーであればスタンダード以上が対象となります。

さくらレンタルサーバー 機能一覧

ssh接続の方法はまず、サーバー管理画面より、シェルログインのホストとユーザー名・パスワードを確認しておきます。
ターミナル(Windowsの方はTeraTermなどを使用してください。)を開き、以下のコマンドを実行します。

$ ssh ユーザー名@ホスト名

パスワードを聞かれるので入力するとログインすることができます。

FreeBSD 9.1-RELEASE-p24 (SAKURA17) #0: Thu Nov  5 00:00:00 JST 2015
Welcome to FreeBSD!

%

さくらだとこんな感じで表示されると思います。
また、接続を切りたいときはexitでsshの接続を切ることができます。

% exit

ssh公開鍵認証を設定する

ただ、このままだと毎回パスワードを求められてしまいとても不便です。
また、Gitでの接続にも必要なため、公開鍵認証の設定をします。

まず、cd(カレントディレクトリ)コマンドで.sshディレクトリに移動します。
(~/と言うのはホームディレクトリということを表しています。)

% cd ~/.ssh

そして、ssh-keygenと入力し、passphraseの入力を求められるので何も入力せずEnterを2回押します。

% ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/schacon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/schacon/.ssh/id_rsa.
Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a schacon@agadorlaptop.local

これで公開鍵と秘密鍵を生成できました。
試しに[ls]と入力してみてください。
現在のディレクトリ配下のファイル一覧を確認できます。

% ls  
id_dsa   id_dsa.pub

この「id_rsa」というファイルが秘密鍵で、「id_dsa.pub」というファイルが公開鍵になります。

公開鍵認証の方法は、秘密鍵を使ってリモート上の公開鍵との認証を行う方法です。
デフォルトで公開鍵の名前は「authorized_keys」というファイル名になっているのでファイル名を変更します。
さらにパーミッションを600に変更しておきます。

% cat id_rsa.pub >> ~/.ssh/authorized_keys
% chmod 600 ~/.ssh/authorized_keys

そして秘密鍵をローカル側で取得します。

% cat id_rsa

上記コマンドで表示された文字列をコピーし、ローカルの~/.sshフォルダにid_rsaというファイル名で保存します。

最後にいらないファイルは削除しておきましょう。

% rm id_rsa.pub id_rsa

今度はローカル側の設定です。
.sshフォルダに「config」という名前のファイルを作成し、以下のように記述します。

Host willstyle(ssh接続時に使用する名前)

  HostName     ホスト名
  Port         22
  User         ユーザー名
  IdentityFile ~/.ssh/id_rsa

秘密鍵もパーミッションを600に設定します。

$ chmod 600 ~/.ssh/id_rsa

これでssh willstyleと入力し接続できれば成功です。

$ ssh willstyle

ベアリポジトリを作成し、リモートとローカルにクローンする

ではGitのリポジトリを作成します。
まず「ベアリポジトリ」というものを作成します。
「ベアリポジトリ」とはワーキングディレクトリを持たない。
更新情報だけを持っているリポジトリのことで、そのリポジトリを介してリモートとローカルの状態を保つような仕組みです。

まずsshで接続し、reposディレクトリを作成します。
reposディレクトリに移動し、www.gitというディレクトリを作成します。

% mkdir ~/repos
% cd repos
% mkdir www.git

www.gitに移動し、git initコマンドにbare sharedオプションを付けて実行します。

% cd www.git
% git init --bare --shared

これでベアリポジトリの作成は完了です。
次にリモートの公開ディレクトリにクローンします。

% cd ~/
$ git clone /home/○○○/repos/www.git

ここで注意すべき点は、初期リポジトリは空のディレクトリである必要があるため、ディレクトリを空にしておいてください。

同じようにしてローカルにもクローンします。
今回はGUIクライアントの「Source Tree」を利用します。
以下よりインストールしてください。

Source Tree

インストールできたら、新規リポジトリ→URLからクローンを押します。

clone

そして、ssh://willstyleのあとに、ホームディレクトリからrepos/www.gitまでのパスを記述し、
フォームのフォーカスを外した時に左下に「これはGit リポジトリです」と出ればおkです。

detail

あとは保存先のパスを入力しクローンを押せばクローンが始まり、リポジトリ内に.gitフォルダが作成されているはずです。

試しに何かファイルを作成し、add > commit > pushしてみましょう。
index.htmlに以下のように記述し、ローカルリポジトリに保存します。

<h1>Hello world!</h1>

保存してSourceTreeを見てみると「Uncommitted changes」と太字で出てきます。

add

このようにして「リポジトリに変更がありましたよ」と教えてくれます。そこで「追加/削除」というボタンを押し、なにか警告が出ますが構わず「ok」を押します。
これでファイルを「add」したことになります。

できたら、左端の「コミット」というボタンを押し、メッセージを入力します。
今回は簡単に「first commit.」と入力していますが、コミットメッセージはできるだけわかりやすく記述します。

commit

そしてコミットを押すと「プッシュ」のボタンに1というバッジが表示されます。
「プッシュがたまっていますよ」ということです。
masterにチェックを入れプッシュします。
ここでプッシュして初めてリモートのベアリポジトリに更新内容が送信されます。

push

プッシュができたら、ssh接続し、更新内容をリモートリポジトリにpullします。

% cd ~/www
% git pull

これで、公開URLにアクセスすれば「Hello world!」が表示されているはずです。

自動デプロイの設定と.gitignoreファイルを作成する

このままでは手動でデプロイが面倒なのでpushがあった段階でリモート側でpullするように設定します。

% vi ~/repos/www.git/hooks/post-receive
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
cd /home/◯◯◯/www/ && git --git-dir=.git pull

post-receiveファイルはpushがあった際に、ここに書いたshellスクリプトを実行できます。
esc+:wqで保存して閉じ、chmod +xで実行権限を与えます。

chmod +x ~/repos/www.git/hooks/post-receive

これでpushがあった際に自動デプロイすることができます。

最後にGitでバージョン管理したくないファイルを指定します。
例えばWordPressのコアファイルやプラグインは一度送信してしまえば特に追跡する必要の無いファイルです。
そういうファイルを.gitignoreというファイルに記述しておくとGitは追跡をやめます。

.htaccess
wp/.htaccess
wp/sitemap.xml
wp/sitemap.xml.gz
wp/wp-config.php
wp/wp-content/advanced-cache.php
wp/wp-content/backup-db/
wp/wp-content/backups/
wp/wp-content/blogs.dir/
wp/wp-content/cache/
wp/wp-content/upgrade/
wp/wp-content/uploads/
wp/wp-content/plugins/
wp/wp-content/wp-cache-config.php

WordPressをwpフォルダに置いている場合はこのような感じです。
これをルートに配置し、コミット&プッシュしてみてください。

ユーザーの追加で更新者のコミットの管理や、ブランチを切ったりなどGitにはまだまださまざまな機能があります。
まずは事始めとして自動デプロイまでやってみてはいかがでしょうか?

Category | Blog
Tag | /
Author | Mineo Okuda / 4,926views

Company information

〒651-0087
神戸市中央区御幸通 8-1-6 神戸国際会館 22F

Contact us

WEBに関するお問い合わせは
078-570-5755 (10:00 - 18:00)