ようやくgitを少しずつ使い出してみたもののデプロイするにはどうすればいいのか分からなかったのでとりあえず作業内容をメモしておく。
ローカル環境とリモート環境の準備
公開鍵方式でSSHにログイン出来るようにする
ローカル:mac OSX 10.6
リモートサーバ:CentOS 5.5
ローカル環境での操作
ターミナルでログインし、ホームディレクトリで秘密鍵と公開鍵のペアを作成する。RSA方式でよいと思われる。
MacBook:~ clicktx$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/clicktx/.ssh/id_rsa): [enter] Enter passphrase (empty for no passphrase): [enter] Enter same passphrase again: [enter] Your identification has been saved in /Users/clicktx/.ssh/id_rsa. Your public key has been saved in /Users/clicktx/.ssh/id_rsa.pub. The key fingerprint is: 01:0a:3b:c1:1c:7f:2e:1c:5d:ae:1b:16:59:70:ef:fd clicktx@MacBook.local The key's randomart image is: +--[ RSA 2048]----+ | o+. o.+ | | o= o B . | | o + = o . | | o + o o . | | o = S . . | | o o . | | . E | | | | | +-----------------+
id_rsa … 秘密鍵
id_rsa.pub … 公開鍵
秘密鍵と公開鍵のペアがホームディレクトリの.ssh/以下に作成される。
公開鍵である id_rsa.pub をリモートサーバのホームディレクトリに転送する。
個人的にリモートサーバのSSHはポート番号を変更しているため以下のような[-P ポート番号]オプションをつけている。
MacBook:~ clicktx$ cd ~/.ssh MacBook:.ssh clicktx$ scp -P ポート番号 id_rsa.pub clicktx@domain.com:~/ clicktx@domain.com's password: id_rsa.pub 100% 405 0.4KB/s 00:00
リモートサーバでの操作
ホームディレクトリに.sshディレクトリが無ければ作成する。
id_rsa.pubの内容を.ssh/authorized_keysに追加する
$ cat id_rsa.pub >> ~/.ssh/authorized_keys $ cd .ssh/ $ chmod 600 authorized_keys (自分だけ読み書き出来る) $ rm ~/id_rsa.pub (不要になったid_rsa.pubを削除しておく)
新しいターミナルからログインしてみる。
MacBook:~ clicktx$ ssh -p ポート番号 clicktx@domain.com Last login: Thu Nov 24 10:12:16 2011 from xxxxxx.xxx.xxx.xx.jp
公開鍵作成時にパスフレーズは設定していないので、何も聞かれずにログイン出来れば成功。
リモートサーバにgitをインストール
CentOSのデフォルトリポジトリではgitが提供されていない。
rpmforgeリポジトリを導入していればyumで一発でインストールできる。
gitの環境設定
ユーザー名とメールアドレスを設定。
$ git config --global user.name "clicktx" $ git config --global user.email clicktx@domain.com
git pushした時にデプロイされるようにする
ローカルで開発した内容をデプロイする時にgit pushで済むようにする。
仕組み的には
bareリポジトリにpush ↓ デプロイ先のリポジトリがbareリポジトリからpull ↓ ワークツリーに反映される
こんな感じみたい。なるほど。
作業自体はこんな感じ
リモートでの作業 ・リモートサーバにbareリポジトリを作る(push先) ・フックを仕掛ける ・デプロイ先(公開ディレクトリ)にgitリポジトリを作る ローカルでの作業 ・リモートリポジトリの登録
リモートでの作業
リモートサーバにbareリポジトリを作る
フックを仕掛ける
post-receive.sampleのシェルスクリプトをコピーしてpost-receiveを作成する。実行権を与える。
$ cd ~/repos/mysite.git $ cp hooks/post-receive.sample hooks/post-receive $ vi hooks/post-receive (cd /home/clicktx/www/mysite; git --git-dir=.git pull) # 最終行に追記する $ chmod +x ~/repos/mysite.git/hooks/post-receive
デプロイ先(公開ディレクトリ)にgitリポジトリを作る
ここでは ~/www/mysite
ローカルでの作業
すでにgitリポジトリがあるものとする。
リモートリポジトリの登録
$ cd ~/Work/mysite $ git remote add origin ssh://clicktx@domain.com:ポート番号/~/repos/mysite.git
pushしてみる。2回目からはgit pushのみで行える。
これでおれおれバージョン管理システムとはお別れ…かな?
参考:

