symfonyプロジェクトのデプロイツールCapifonyを紹介します。
はじめの手順はちょっとメンドウだし、仰々しいかもしれませんが、後がラクということで試してみます。
Capistranoとは
- Rubyで書かれたデプロイツール。もともとはRailsアプリのデプロイ向け?
- デプロイ対象サーバーにsshログインして、任意のコマンドを実行することができる。
- 複数のサーバーへも並行して処理を実行できる。
Capifonyとは
- Capistranoを PHPフレームワーク symfonyで使えるようにしたもの。
- symfony用のコマンドが実行できるようになっている。
準備
デプロイを実行する環境に下記が必要。- Ruby
- 各自準備
- Capistrano
sudo gem install capistrano
- Capifony
sudo gem install capifony
デプロイスクリプトの準備
- symfonyプロジェクトディレクトリで下記実行
$ capifony . [add] writing './Capfile' [add] writing './config/deploy.rb' [done] Symfony1 project capifonied!
- 生成されたconfig/deploy.rbを編集
set :user, "ssh_user" #sshログインするユーザーアカウントssh_options[:keys] = %w(~/.ssh/account-ssh-key)
set :application, "application_name"set :deploy_to, "/home/application/src/"set :scm, :subversion
set :scm_username, "deployer" #デプロイユーザーを準備しましたset :scm_password, "********"role :web do[
"ec2-176-34-40-71.ap-northeast-1.compute.amazonaws.com", #デプロイ対象webサーバーを列挙します"ec2-175-41-221-104.ap-northeast-1.compute.amazonaws.com",]
end
set :use_sudo, falseset :keep_releases, 3
初回デプロイ
- 各サーバーにディレクトリを準備
cap deploy:setup
- 共有ディレクトリを作成
cap shell < 'mkdir -p src/shared/config; exit' - データベース接続設定ファイルをコピー
cap shared:databases:to_remote
2回目以降のデプロイ(チェックアウトとシンボリックリンク切り替えを別に実行)
- 指定リポジトリをチェックアウト
cap deploy:update_code -S repository='http://svn.example.co.jp/svn/application/tags/RELEASE-0.0.1'
- シンボリック切り替え
cap deploy:create_symlink
- 直前のチェックアウトに切り戻す(直前のチェックアウトにシンボリックリンク切り替え)
cap deploy:rollback
- 不要なチェックアウトを削除
cap deploy:cleanup
2回目以降のデプロイ(チェックアウトとシンボリックリンク切り替えを一気に実行する場合)
チェックアウト後、すぐに切り替えて良い場合は下記でOKです。
cap deploy -S repository='http://svn.example.co.jp/svn/application/tags/RELEASE-0.0.1'