gpt4 book ai didi

ruby - 使用 Capistrano 3.x 启动或重启 Unicorn

转载 作者:数据小太阳 更新时间:2023-10-29 06:40:51 25 4
gpt4 key购买 nike

当我执行 cap production deploy 时,我正在尝试启动或重新启动 Unicorn使用 Capistrano 3.0.1。我有一些使用 Capistrano 2.x 的例子:

namespace :unicorn do
desc "Start unicorn for this application"
task :start do
run "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/myapp.conf.rb -D"
end
end

但是当我尝试使用 run 时在deploy.rb对于 Capistrano 3.x,我得到一个未定义的方法错误。

以下是我尝试过的一些事情:

# within the :deploy I created a task that I called after :finished
namespace :deploy do
...

task :unicorn do
run "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/myapp.conf.rb -D"
end

after :finished, 'deploy:unicorn'

end

我也试过将运行放在 :restart 任务中

namespace :deploy do
desc 'Restart application'
task :restart do

on roles(:app), in: :sequence, wait: 5 do
# Your restart mechanism here, for example:
# execute :touch, release_path.join('tmp/restart.txt')
execute :run, "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/deployrails.conf.rb -D"
end
end

如果我只使用 run "cd ... " then I'll get a本地 shell 中的参数数量错误(1 代表 0)。

我可以用 unicorn -c /etc/unicorn/deployrails.conf.rb -D 启动 unicorn 进程从我的 ssh'd VM shell。

我可以使用 kill USR2 从 VM shell 中终止主 Unicorn 进程,但即使该进程被终止,我也会收到错误消息。然后我可以使用 unicorn -c ... 再次启动该过程

$ kill USR2 58798
bash: kill: USR2: arguments must be process or job IDs

总体而言,我对 Ruby、Rails 和部署还很​​陌生。我有一个带有 Ubuntu、Nginx、RVM 和 Unicorn 的 VirtualBox 设置,到目前为止我非常兴奋,但是这个真的让我很困惑,欢迎任何建议或见解。

最佳答案

我正在使用以下代码:

namespace :unicorn do
desc 'Stop Unicorn'
task :stop do
on roles(:app) do
if test("[ -f #{fetch(:unicorn_pid)} ]")
execute :kill, capture(:cat, fetch(:unicorn_pid))
end
end
end

desc 'Start Unicorn'
task :start do
on roles(:app) do
within current_path do
with rails_env: fetch(:rails_env) do
execute :bundle, "exec unicorn -c #{fetch(:unicorn_config)} -D"
end
end
end
end

desc 'Reload Unicorn without killing master process'
task :reload do
on roles(:app) do
if test("[ -f #{fetch(:unicorn_pid)} ]")
execute :kill, '-s USR2', capture(:cat, fetch(:unicorn_pid))
else
error 'Unicorn process not running'
end
end
end

desc 'Restart Unicorn'
task :restart
before :restart, :stop
before :restart, :start
end

关于ruby - 使用 Capistrano 3.x 启动或重启 Unicorn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19896800/

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