ホーム > Programming > hetemlのGitをMac(SourceTree)から使う & クライアントからpushで自動デプロイ

hetemlのGitをMac(SourceTree)から使う & クライアントからpushで自動デプロイ

2013 年 5 月 14 日 コメントをどうぞ コメント

日頃の開発でバージョン管理を全くしておらず、ちまちまFTPでアップする作業も煩わしく、さらに複数端末(開発者は自分だけ)での開発をDropboxで同期している状態に不安を感じ、Git使ってみようかな、と思い立った。Githubにプライベートリポジトリ作れる$7/monthのアカウントを作ろうか、はたまたSqaleを契約しようか悩んでいたところ、何年も使ってきたhetemlがGitが使えるようになっていた。かなり前に。

そこで、hetemlGitでBare Repositoryをセットアップし、Mac用GitのUIを提供する SourceTree というアプリ(無料)で操作しつつ、クライアントからpushしたら自動的にhetemlのウェブサーバーにデプロイ(FTPでアップするのと同じ状態)する設定をしてみた。

初めての人には、ググっても理解が難しかったり、heteml&Mac&自動デプロイのケースが見つからなかったり、SourceTree使わずにGitインストールしてコマンド打てというものが多く取っつきにくいと思うけど、以下の流れで進めれば誰でもセットアップできると思う。

前提

hetemlで公開するコンテンツはホームの /web 内に “_ドメイン名” ディレクトリを指定する形にする。(例 abc123.jpの場合 /web/_abc123.jp/)
一方、管理用のBareリポジトリはホームに /repos ディレクトリを作成し、この中に “_ドメイン名.git”の形で作成していくことにする。
また、ローカルではAppStoreで配布されているSourceTreeを利用し、その他はインストールしない。

これからリポジトリを作成して運用するサイトは、まだ何も存在していない(ディレクトリもまだ無い)ことが前提。どこかへ避けておくということでもOK。

Gitを使う準備

0_download

AppStoreからSourceTreeをインストールする。

MacのTerminal.appを使ってSSHでhetemlにログインする。(hetemlは2222ポートの指定が必要)

ssh abc123@ssh01.heteml.jp -p 2222

abc123はheteml管理画面やFTPでログインするときのユーザーIDssh01部分はheteml管理画面で通知されているssh53とかの番号

初回ログイン時に公開鍵の受け入れについて聞かれるのでyesとし、パスワードを聞かれるのでhetemlのパスワードを入力する。

Gitの初期設定として、名前とメールアドレスを指定する。

git config --global user.email "your@email.com"
git config --global user.name "Your Name"

好みに合わせて表示色の設定をしてもいいけれど、個人的には重要ではないのでボクはスキップ。

git config --global color.ui auto

リモートサーバーにBare リポジトリを作成

準備ができたらいよいよリモートリポジトリを作成する。

SSHログイン直後はユーザーのホーム(例 /home/sites/heteml/users/a/b/c/abc123)にいるので、そこで /repos ディレクトリを作成する。

mkdir repos

そしてこのディレクトリの中に、対象サイトのリポジトリを作成する。
ディレクトリ名は前提にある公開ディレクトリの命名規則+末尾に .git 付与とする。

cd repos
mkdir _abc123.jp.git
cd _abc123.jp.git
git init --bare --shared

すぐに処理が終わり、Initialized empty shared Git repository in〜のメッセージ後ろに/home/〜 のパスが出力されるので、これをメモしておく。
これで管理用のBare リポジトリの作成が完了。簡単。

デプロイ先にリポジトリ(クローン)を作成

デプロイ先=ウェブサイトのコンテンツを公開するディレクトリにリポジトリを作成するため、webディレクトリに移動

cd
cd web

ここにBareリポジトリから、デプロイ先用のリポジトリ(クローン)を作成する。

git clone /home/sites/heteml/users/a/b/c/abc123/repos/_abc123jp.git/

数秒で処理が完了し、現在のディレクトリ下(/web)にドメイン名のディレクトリ(/abc123.jp)が作成される。
リポジトリは /web/abc123.jp/.git ディレクトリに格納されている。

ローカルにリポジトリを作成&リモートリポジトリ登録

SourceTreeを起動する。
初回起動時は名前、メールアドレスを入力する。Github等のアカウント情報を聞かれるが、何も入力せず進んで設定を完了する。

1_step1

ツールバーの左端のアイコン(Add Repository)をクリックし、ドロワーの右端にある「リポジトリを作成」ボタンを押す。

2_step2

リポジトリのタイプはGitを選択。

3_step3

リポジトリの保存先にフォルダを指定するので、コンテンツを保存しておく空のフォルダを指定(必要に応じて作成)する。
ブックマーク名は分かりやすい名称を指定。

これでローカルリポジトリが作成できたので、ここにリモートリポジトリを登録する。

保存したブックマークをダブルクリックするとウィンドウが開くので、メニューから「リポジトリ→リポジトリの設定」を開く。

4_step4

追加ボタンを押し、分かりやすい名前とURLを入力する。
このURLはリモートのBareリポジトリのURLなので ssh://abc123@ssh01.heteml.jp:2222/home/sites/heteml/users/a/b/c/abc123/repos/_abc123.jp.git/ のように、SSHのユーザー名や/repos内のBareリポジトリまでのパスを指定する。

自動デプロイの設定

FTPでhetemlに接続し、/repos内の作成したリポジトリのディレクトリへ行く。
その中の /hooks ディレクトリに移動し、post-receive.sample をダウンロードする。
post-receive.sampleをテキストエディタ等で開き、末尾に自動デプロイの指定を1行追加する。

cd /home/sites/heteml/users/a/b/c/abc123/web/_abc123.jp;
git --git-dir=.git pull

ファイルを保存し、ファイル名から.sampleを取り(ファイル名は post-receive となる)、hooksディレクトリにアップロードする。
Terminal.appに戻り、アップロードしたpost-receiveに実行属性を与える。

cd /repos/_abc123.jp.git/hooks
chmod +x post-receive

ファイルを追加してテスト

ローカルのリポジトリを作成したフォルダに、公開するコンテンツを入れる。(どこかからファイルをコピーしてもいいし、ダミーのテキストファイルを置いてみるもよし)

そしてSourceTreeを見ると、「作業ツリーのファイル」ペインにファイルが表示される。
このファイルは追跡(Gitで管理)されていないので、選択して「追加」アイコンを押すか、ドラッグ&ドロップで「Indexにステージしたファイル」ペインに移動する。

この時点では作業中であり、まだ何も公開されていない。

「コミット」ボタンを押すと、Masterブランチにコミットが反映される。
でも、これもまだ何も公開されない。

公開するには、「プッシュ」ボタンを押して、「プッシュしますか?」カラムにチェックを入れ、OKをクリックするとリモートのBare リポジトリにプッシュされ、hooks/post-receiveの設定に基づいて自動的に公開用ディレクトリにファイルが反映される。
アップロードはFTPより早い。

カテゴリー: Programming