2008年08月29日
PassengerとcapistranoでのデプロイTips
デプロイの流れ(インストールは省略)
cd RAILS_ROOT capify . # deploy.rbを下記のものに変更 cap deploy:setup # :deploy_toにcapistranoに必要なフォルダを作る cap deploy:cold # SVNから取得+migration+Passenger再起動(RAILS_ROOT/tmp/restart.txtが作成される) cap deploy # SVNから取得+Passenger再起動 cap deploy:restart # Passenger再起動
deploy.rb
<追記> http://www.slideshare.net/moro/capistrano-in-practice-webcareer-presentation?src=embed を参考に更新しました
############################################################# # Application ############################################################# set :application, '<app_name>' set :deploy_to, "/var/www/#{application}" ############################################################# # Deploy user ############################################################# set :runner, '<run_user>' set :use_sudo, true set :user do Capistrano::CLI.ui.ask('SSH User: ') end set :password do Capistrano::CLI.password_prompt('SSH Password: ') end #ssh_options[:verbose] = :debug ############################################################# # Servers ############################################################# role :app, '<deployed server>' role :web, '<deployed server>' role :db, '<deployed server>', :primary => true ############################################################# # Subversion ############################################################# set :scm_user do Capistrano::CLI.ui.ask('SVN User: ') end set :scm_password do Capistrano::CLI.password_prompt('SVN Password: ') end set :repository_uri, '<repo_uri>' set :repository do "--username #{scm_user} --password #{scm_password} --no-auth-cache #{repository_uri}" end ############################################################# # after deploy:setup hooks ############################################################# after 'deploy:setup' do try_sudo "chown -Rf #{runner}:#{runner} #{deploy_to}" end ############################################################# # Override existing recipes ############################################################# namespace :mod_rails do desc <<-DESC Restart the application altering tmp/restart.txt for mod_rails. DESC task :restart, :roles => :app do run "touch #{File.join(deploy_to, current_dir)}/tmp/restart.txt" end end namespace :deploy do %w(start restart).each { |name| task name, :roles => :app do mod_rails.restart end } end
な感じでかいておく。参考と違うのは、
cap deploy:start cap deploy:restart
も使えるようにした点。
最低限必要なもの
サーバ
- Apache2
- Ruby
- Passenger
- svnクライアント
- sshサーバ
- svn取得先にアクセスできる事
クライント(デプロイ作業に使うマシン)
- Ruby
- Capistrano
- サーバにSSHで接続できること(SSHクライアントはgemのを使うためいらない)
- svnクライント
- svn取得先にアクセスできる事
クライントに、svnが必要な理由はサーバにデプロイ指示するときに、最新のrev番号を渡しているからです。最新のrevを取得する為にsvn infoを使っているというわけです。
注意点
- PassengerはRAILS_ROOT/tmp/restart.txtがある時に、アクセスされると再起動されます
- 再起動の方法しかとれないので、OS起動時にApacheを起動しておく必要があります
- http://redmine.jp/tech_note/apache-passenger/から引用
パーミッションの問題
Railsアプリケーションのディレクトリ($RAILS_ROOT)および$RAILS_ROOT以下のファイル・ディレクトリのオーナーは、root以外としてください。
Passengerでは、root権限でRailsアプリケーションを動かすことはできません。Railsアプリケーションが動作するユーザーは$RAILS_ROOT/config/environment.rbのオーナーとなりますが、environment.rbがrootの場合はnobodyユーザーで動作します。このとき、オーナーがrootである$RAILS_ROOT/logディレクトリや$RAILS_ROOT/tmpディレクトリに書き込みができず、アプリケーションが動作しないことがあります。
トラックバック - http://d.hatena.ne.jp/DianthuDia/20080829/1219969683
リンク元
- 55 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CCQQFjAA&url=http://d.hatena.ne.jp/DianthuDia/20080829/1219969683&ei=bs01T9jTF4bkmAX1hrCTAg&usg=AFQjCNH2DIbUMUg_DaBY_RjjI3LBDi6j3A&sig2=-PWpXH0pHth_H-HRkvssyg
- 26 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDAQFjAB&url=http://d.hatena.ne.jp/DianthuDia/20080829/1219969683&ei=lSk7T_TJOOjgmAWZ6eCWCw&usg=AFQjCNH2DIbUMUg_DaBY_RjjI3LBDi6j3A&sig2=wxvbaOlJJfT-b7EMttkxNQ
- 24 http://www.google.co.jp/search?sourceid=chrome&ie=UTF-8&q=capistrano+rmagick
- 22 http://www.google.co.jp/search?q=capistrano+passenger&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja-JP-mac:official&hl=ja&client=firefox-a
- 19 http://d.hatena.ne.jp/R-H/20120102/1325502635
- 18 http://www.pistolfly.jp/weblog/2009/04/capistrano.html
- 17 http://www.google.co.jp/search?hl=ja&lr=lang_ja&tbs=lr:lang_1ja&q=capistrano+try_sudo&aq=f&aqi=g9g-r1&aql=&oq=&gs_rfai=
- 16 http://www.google.co.jp/url?sa=t&rct=j&q=capistrano passenger&source=web&cd=1&ved=0CB8QFjAA&url=http://d.hatena.ne.jp/DianthuDia/20080829/1219969683&ei=t9aiTpzPOI_UmAXK2OGbCQ&usg=AFQjCNH2DIbUMUg_DaBY_RjjI3LBDi6j3A&sig2=VwzXhlXiHDQn9jdN8e5qcg
- 14 http://www.google.co.jp/url?sa=t&source=web&cd=1&ved=0CBwQFjAA&url=http://d.hatena.ne.jp/DianthuDia/20080829/1219969683&rct=j&q=passenger capistrano&ei=KbrHTYTkLo7CvgO72cyaAQ&usg=AFQjCNH2DIbUMUg_DaBY_RjjI3LBDi6j3A
- 13 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cts=1331634131185&ved=0CDcQFjAC&url=http://d.hatena.ne.jp/DianthuDia/20080829/1219969683&ei=yh9fT9PeHbCziQfz1P3eBw&usg=AFQjCNH2DIbUMUg_DaBY_RjjI3LBDi6j3A


