| 16件目(121件中) |

リリース運用について調べたメモ(gitやCAKE_ENVの利用など)

固定リンク:#0000000114   投稿者:ZiSTA 日時:2011-02-02 18:11:07   コメント( 0

Cakephperさんの第2回 CakePHP勉強会@福岡で発表してきました。の発表の中の「開発・本番環境の話、デプロイの話」が勉強になりました。Webアプリケーションの開発、テスト、本番をどのような手順で投入してゆくかが紹介されたていました。git pullとrsyncの組み合わせで、とてもシンプルな方法で良さそうでした。


デプロイ方法を身につけてリリースを簡単に実行できるようにしたいと思っていたので、さらに調べてみました。


gitのコマンドなどでCakePHPアプリケーションを投入していく手順が具体的に紹介されています。
gitでpushしたりpullしたり


gitを使った例がこちらにもありました。テストで合格したらgitでタグを打ってリリース、不合格ならgit checkout で直前のタグにロールバックするといった具体的な記述があります。こちらは上記2例と違ってpullの代わりにfetchとcheckoutを使用していました。
gitによる管理とリリース運用


Capistranoというツールが複数台構成では便利そうです。自分にはまだ必要なさそうです。こちらではシンボリックリンクでリリースを切り替えるというアイディアを知りました。これならロールバックも瞬時です。
symfonyアプリケーションをデプロイするためのCapistranoレシピ


フレームワーク自身やユーザーの画像ファイルをどのように扱うかに関してCapistranoを使ったときのディレクトリ構成例があって、参考になります。
Capistrano実践Tips集
Capistranoで自動デプロイ

環境変数で切り替える

最初のcakephperさんの資料でも触れられていますが、各種設定を環境変数で切り替える例が具体的に紹介されていて参考になります。
CAKE_ENVで開発環境と本番環境の切り替え


メール駆動などapacheを経由しないでCakeのシェルを実行する場合は、「export CAKE_ENV=production && コマンド」などで駆動するように設定すれば CAKE_ENVを利用できます。
メール受信時の環境変数RAILS_ENVの設定


ちなみにpostfix経由では$_SERVER['SENDER']や$_SERVER['CLIENT_ADDRESS']などが設定されます。プログラムでメール送信者に関するログを記録するなどに利用できそうです。

書きかけメモ

gitでソースコード管理。


デプロイ・サーバー(本番サーバー)

  • 新しいバージョンはそのバージョン用ディレクトリにclone & checkoutする
  • バージョンの切り換えはシンボリックリンクで行う(ロールバックも用意)
  • 運用中のソースに対するgitコマンドは実行しない(pull,checkout等、実行中に不整合になるため)


デプロイ・サーバーのアプリケーション用ディレクトリ

  • releases
    • app -> v1.2
    • v1.2
    • v1.1
    • v1.0

手順

  1. 新バーションがが完成しテストサーバーで問題なければ、ソースをタグ(v1.3)をつけてからoriginにpushする。
  2. デプロイ・サーバーではソースをoriginからreleases/v1.3にcloneする。
  3. 新バーションであるv1.3をcheckoutする。
  4. シンボリックリンクであるappのリンク先をv1.3に貼り直す。("ln -fns app version_xxx")
  5. 必要に応じてキャッシュのクリア
  • リリースバージョン=Gitのタグ or 日付がいい?
  • 2.3.のGItでリポジトリ全部転送するかわりにoriginでタグをアーカイブしてそれをscpで転送する手もある。


サーバー1台でもCapistranoが便利そう。


Capistranoでデプロイ時にタグを指定する方法。Capistranoは通常HEADを使う。
Deploy from a Git tag with Capistrano

Deploying CakePHP with Capistrano

 

コメント

| 16件目(121件中) |
↑ ページトップ