Laravel4アプリをCapistranoでデプロイする
Laravel4を、Capistranoを使ってステージングや本番環境に簡単にデプロイする例です。 この記事では下記のようなケースで作成してます。
・デプロイ先を複数設定する(develop、production) ・ソースコードはBitbucketに入ってる ・デプロイ先はAmazonEC2 ・デプロイ時はローカル端末に一旦ファイルをチェックアウトして、まるごとアップロードする
Capistranoインストールからデプロイ実行までの一連の流れを簡単に記載すると、 1. Capistranoをインストール 2. デプロイ定義ファイルを作成 3. デプロイ先の環境設定ファイルを準備 4. デプロイの手順ファイルを定義 5. デプロイの実行 となるのですが、これらの手順に関してはRyuzeeさんの下記のページに詳しく記載されているので、まずこちらを確認してみてください(えー)
CakePHP2アプリケーションをCapistranoでデプロイする(Ryuzee.com)
で、私の方でLaravel向けにサンプルとして作成した設定ファイルは下記の通りです。
デプロイ先環境別の設定ファイル(config/deploy/develop.rb) [ruby]# develop role :web, *%w[ dev.sample.com ] set :user, "deployuser" ssh_options[:keys] = %w(/Users/sample/keys/ec2-key.pem)[/ruby] 上記でWebサーバの接続先と接続ユーザー名(デプロイ専用のユーザー)を指定しています。接続は鍵認証によるSSH接続を行うようにしているため、キーファイルの場所もここで指定しています。パスワードによる接続を行う場合はファイル内に記載してもいいですし、毎回入力を懇請するようにもできます。他の環境設定ファイルも同様の記載方法です。
デプロイ手順の定義ファイル(config/deploy.rb) [ruby]require "capistrano/ext/multistage" require "capistrano_colors" require "railsless-deploy" require "rubygems" set :application, "laravel_sample"
set :scm, :git set :repository, "git@bitbucket.org:kurikazu/laravel_sample" set :branch, "master"
set :deploy_to, "/sites/laravel_sample/app" set :deploy_via, :copy set :use_sudo, false
namespace :deploy do task :finalize_update, :except => { :no_release => true } do #change permission for laravel storage directories. run "chmod -R 777 #{latest_release}/app/storage/" end end[/ruby] Laravelで使う際に必要なのが16〜19行目のところです。Laravelでは app/storage の下に書き込み権限を与える必要があるため、デプロイ後の処理として記載しています。 ちなみに finalize_update タスクは、デフォルトではRuby用の設定を行うようになっていて、ここで処理を上書きすることでLaravelの挙動に必要の無いディレクトリ作成などの処理を止めています。
以上が、ひとまず簡易的にLaravelのデプロイを行うための設定です。
実際にデプロイを実行すると、デプロイ先環境の deploy_to で指定したディレクトリ内の releases というディレクトリの下に、デプロイ時間でディレクトリが作成され、そこにデプロイしたファイル群が格納されます。そして最新ディレクトリは、同じく deploy_to のディレクトリ内の current からシンボリックリンクが張られます。 そのためDocumentRootは、上記の current/public に対して設定すれば良いということになります。
データベースのmigrationに関しては別の機会に。