リモートサーバのgit環境を構築 + git pushでdeploy出来るようにするまでのまとめ
ローカル環境とリモート環境の準備
ようやくgitを少しずつ使い出してみたもののデプロイするにはどうすればいいのか分からなかったのでとりあえず作業内容をメモしておく。
- ローカル:mac OSX 10.6
- リモートサーバ:CentOS 5.5
公開鍵方式でSSHにログイン出来るようにする
ローカル環境での操作
ターミナルでログインし、ホームディレクトリで秘密鍵と公開鍵のペアを作成する。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 ポート番号]オプションをつけている。
$ cd ~/.ssh
$ scp -P ポート番号 id_rsa.pub clicktx@domain.com:~/
clicktx@domain.com's password:
id_rsa.pub 100% 405 0.4KB/s 00:00
リモートサーバでの操作
ホームディレクトリに.sshディレクトリが無ければ作成する。
$ mkdir ~/ .ssh
$ chmod 700 .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を削除しておく)
ローカル端末からの操作
新しいターミナルからログインしてみる。
$ 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で一発でインストールできる。
$ sudo yum install git
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リポジトリを作る
$ mkdir ~/repos
$ cd ~/repos
$ mkdir mysite.git
$ cd mysite.git
$ git init --bare
フックを仕掛ける
post-receive.sampleのシェルスクリプトをコピーしてpost-receiveを作成する。実行権を与える。
単にpullしたいリポジトリがあるディレクトリに移動してpullを実行させるだけ。
$ 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リポジトリを作る(cloneする)
ここでは ~/www/mysite
$ mkdir ~/www
$ cd ~/www
$ git clone ~/repos/mysite.git/
ローカルでの作業
すでにgitリポジトリがあるものとする。
リモートリポジトリの登録
$ cd ~/Work/mysite
$ git remote add origin ssh://clicktx@domain.com:ポート番号/~/repos/mysite.git
pushしてみる。2回目からはgit pushのみで行える。
$ git push origin master
...色々変更
git commit -a
git push
これでおれおれバージョン管理システムとはお別れ...かな?
参考:
- gitのリモートリポジトリ作成メモ|Spark-Lab Engineer's Blog
- Pro Git - Pro Git 4.4 Git サーバー サーバーのセットアップ
- git pushでdeployな生活をつくる方法 - コードで気楽な日々を
- git push + さくらのレンタルサーバーで github pages ライクにデプロイする方法 - punitan (a.k.a. punytan) のメモ
[amazonjs asin="427406767X" locale="JP" title="入門git"]
-
前の記事
macでcpanシェルやscraperシェルのカーソル移動とか履歴を有効にする 2012.04.04
-
次の記事
mac(Snow Leopard)にDBD::SQLiteを入れる 2012.04.06