ger*_*rky 10 capistrano ruby-on-rails passenger nginx ruby-on-rails-3
我正在使用Capistrano来部署我的Rails应用程序.每当我部署时,更改都不会反映在浏览器上,我仍然需要重新启动nginx来更新站点(运行sudo /etc/init.d/nginx restart).我不确定为什么但重启申请后不应该更新?(使用touch /app/tmp/restart.txt)
这是我的deploy.rb
require "rvm/capistrano"
set :rvm_ruby_string, 'ruby-1.9.3-p194@app_name'
set :rvm_type, :user
require "bundler/capistrano"
set :application, "app_name"
set :user, "me"
set :deploy_to, "/home/#{user}/#{application}"
set :deploy_via, :copy
set :use_sudo, false
set :scm, :git
set :repository, "~/Sites/#{application}/.git"
set :branch, "master"
role :web, '1.2.3.4'
role :app, '1.2.3.4'
role :db, '1.2.3.4', :primary => true
role :db, '1.2.3.4'
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
Run Code Online (Sandbox Code Playgroud)
您不必重新启动或重新加载nginx.只需触摸tmp/restart.txt即可告诉乘客重新加载应用程序.
如果您使用的是最新版本的capistrano,您甚至可以删除整个'namespace:deploy'部分.成功部署后,Capistrano已触及tmp/restart.txt.
小智 3
当我遵循本教程时(大约一年前),我安装了稍微新版本的 nginx 和乘客。据我所知,我认为这些新版本促使我在运行任何类型的 init.d 命令时使用 nginx 作为服务。(乌班图10.04)
无论如何我会切换掉代码
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
Run Code Online (Sandbox Code Playgroud)
到
run "#{sudo} service nginx #{command}"
Run Code Online (Sandbox Code Playgroud)
看看是否有效。
| 归档时间: |
|
| 查看次数: |
10893 次 |
| 最近记录: |