gpt4 book ai didi

ruby-on-rails - Unicorn + Capistrano 零停机部署 -- 不切换到新版本

转载 作者:行者123 更新时间:2023-12-04 03:53:25 32 4
gpt4 key购买 nike

如果我想容忍部署后手动停止和启动 unicorn 造成的停机时间,应用程序部署得很好。但是,我想使用零停机 unicorn 设置,但它不起作用,因为启动的新 unicorn 进程正在查看旧的部署发布路径。在 deploy.rb 中没有什么特别的,简单的 cap 重启:

desc "Zero-downtime restart of Unicorn"
task :restart, :except => { :no_release => true } do
run "cd #{current_path}; #{try_sudo} kill -s USR2 `cat /var/www/appname/shared/pids/unicorn.pid`"
end

我知道它正在寻找错误的目录,因为如果 View 没有改变,并且如果我将 keep_releases 设置为 1 或 2,unicorn 日志将显示错误,因为它正在尝试的目录启动时间已删除:

/var/www/appname/shared/bundle/ruby/1.9.1/gems/unicorn-4.4.0/lib/unicorn/http_server.rb:425:in `chdir': No such file or directory - /var/www/appname/releases/20130330104246 (Errno::ENOENT)

几周来我一直在尝试断断续续地调试它。非常感谢任何帮助使这项工作正常进行!

最佳答案

启动unicorn时设置这个环境变量

BUNDLE_GEMFILE=$APP_PATH/current/Gemfile

否则它将指向特定的发布目录,这将导致您描述的行为。

例如。

cd $APP_PATH/current && BUNDLE_GEMFILE=$APP_PATH/current/Gemfile bundle exec unicorn_rails -c $APP_PATH/current/config/unicorn.rb -E $RAILS_ENV -D

关于ruby-on-rails - Unicorn + Capistrano 零停机部署 -- 不切换到新版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15717867/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com