カピストラーノのマルチステージ機能を使った方が使いやすいと思います。本番環境とステージング環境のセットアップは次のとおりです。
config/deploy.rb
require 'capistrano/ext/multistage'
require 'bundler/capistrano'
set :application, "yourappname"
set :repository, "git@yourhost.com:yourrepo.git"
set :stages, %w(production staging)
set :default_stage, "staging" # running "cap deploy" deploys to staging, "cap production deploy" deploys to production
set :user, "deploy" # the ssh user which does the deployment on the server
set :use_sudo, false
set :scm, :git
set :default_environment, {
'PATH' => "/usr/local/rbenv/shims:/usr/local/rbenv/bin:/usr/local/rbenv/versions/1.9.3-p327/bin:$PATH"
}
after "deploy:update_code", "deploy:migrate"
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
end
展開に追加のset :default_environment
パスを含める必要がある場合に必要です (カピストラーノがサーバーにログインするときに通常の.bashrc
orが含まれていないため).bash_profile
構成/デプロイ/production.rb
set :rails_env, "production"
set :deploy_to, "/var/www/your_production_folder"
role :web, "example.com" # Your HTTP server, Apache/etc
role :app, "example.com" # This may be the same as your `Web` server
role :db, "example.com", :primary => true # This is where Rails migrations will run
構成/デプロイ/staging.rb
set :rails_env, "staging"
set :deploy_to, "/var/www/your_staging_folder"
role :web, "example.com" # Your HTTP server, Apache/etc
role :app, "example.com" # This may be the same as your `Web` server
role :db, "example.com", :primary => true # This is where Rails migrations will run
VirtualHost 構成に RailsEnv 変数を必ず含めてください。Apache を使用している場合、これは次のようになります。
<VirtualHost *:80>
ServerName staging.example.com
ServerAlias www.staging.example.com
# !!! Be sure to point DocumentRoot to 'public'!
DocumentRoot /var/www/your_staging_folder/current/public
<Directory /var/www/your_staging_folder/current/public>
# This relaxes Apache security settings.
AllowOverride all
# MultiViews must be turned off.
Options -MultiViews
#AuthName "Staging Server"
#AuthType Basic
#AuthUserFile /var/staging.htpasswd
#require valid-user
</Directory>
RailsEnv staging
</VirtualHost>
ステージング環境をパスワードで保護する場合は、コメント解除されたAuthName
,AuthType
を使用します。このような構成が完了したら、展開を でテストしますcap deploy:setup
。これにより、フォルダー構造が設定されます。Acap deploy:cold
は、アプリケーションのすべてのファイルをディレクトリにコピーします。Acap deploy:migrate
はデータベースを移行します。ただし、実行できるのはcap deploy
.
もう 1 つは、Rails アプリでステージング環境をセットアップする必要があることです。config/environments/production.rb
これを行うには、 (またはお好みで development.rb) をコピーしてstaging.rb
、必要に応じて構成を調整します。
何も忘れていないことを願っています ;) さらに問題がありましたらお知らせください。