2016-08-25 43 views
2

这是我第一次部署 - 我根据GoRails教程的所有步骤:https://gorails.com/deploy/ubuntu/16.04Rails的5部署到VPS - Capistrano的错误“不知道如何建设任务‘部署:安装’”

后“瓶盖生产部署”命令,我收到错误消息:

MacBook-Pro:app admin$ cap production deploy --trace 
** Invoke production (first_time) 
** Execute production 
** Invoke load:defaults (first_time) 
** Execute load:defaults 
cap aborted! 
Don't know how to build task 'deploy:setup' (see --tasks) 

有什么不对?


结果 “瓶盖生产部署--trace”:

MacBook-Pro:app admin$ cap production deploy --trace 
** Invoke production (first_time) 
** Execute production 
** Invoke load:defaults (first_time) 
** Execute load:defaults 
cap aborted! 
Don't know how to build task 'deploy:setup' (see --tasks) 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task_manager.rb:71:in `[]' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:361:in `[]' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/lib/capistrano/dsl/task_enhancements.rb:7:in `before' 
config/deploy.rb:27:in `<top (required)>' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/lib/capistrano/setup.rb:27:in `load' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/lib/capistrano/setup.rb:27:in `block (3 levels) in <top (required)>' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/lib/capistrano/configuration/variables.rb:32:in `untrusted!' 
/Users/admin/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/delegate.rb:83:in `method_missing' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/lib/capistrano/setup.rb:26:in `block (2 levels) in <top (required)>' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:248:in `block in execute' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:243:in `each' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:243:in `execute' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:187:in `block in invoke_with_call_chain' 
/Users/admin/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:180:in `invoke_with_call_chain' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:173:in `invoke' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:152:in `invoke_task' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:108:in `block (2 levels) in top_level' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:108:in `each' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:108:in `block in top_level' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:117:in `run_with_threads' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:102:in `top_level' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:80:in `block in run' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:178:in `standard_exception_handling' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:77:in `run' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/lib/capistrano/application.rb:14:in `run' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/bin/cap:3:in `<top (required)>' 
/Users/admin/.rvm/gems/ruby-2.3.1/bin/cap:23:in `load' 
/Users/admin/.rvm/gems/ruby-2.3.1/bin/cap:23:in `<main>' 
/Users/admin/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `eval' 
/Users/admin/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `<main>' 
Tasks: TOP => production 

我已经试过 “帽部署:检查--trace”:

MacBook-Pro:app admin$ cap deploy:check --trace 
** Invoke ensure_stage (first_time) 
** Execute ensure_stage 
** Invoke deploy:check (first_time) 
** Execute deploy:check 
cap aborted! 
Don't know how to build task ':check' (see --tasks) 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task_manager.rb:71:in `[]' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:361:in `[]' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/lib/capistrano/dsl.rb:15:in `invoke' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/lib/capistrano/tasks/deploy.rake:56:in `block (2 levels) in <top (required)>' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:248:in `block in execute' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:243:in `each' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:243:in `execute' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:187:in `block in invoke_with_call_chain' 
/Users/admin/.rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/monitor.rb:214:in `mon_synchronize' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:180:in `invoke_with_call_chain' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/task.rb:173:in `invoke' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:152:in `invoke_task' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:108:in `block (2 levels) in top_level' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:108:in `each' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:108:in `block in top_level' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:117:in `run_with_threads' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:102:in `top_level' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:80:in `block in run' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:178:in `standard_exception_handling' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/rake-11.2.2/lib/rake/application.rb:77:in `run' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/lib/capistrano/application.rb:14:in `run' 
/Users/admin/.rvm/gems/ruby-2.3.1/gems/capistrano-3.6.1/bin/cap:3:in `<top (required)>' 
/Users/admin/.rvm/gems/ruby-2.3.1/bin/cap:23:in `load' 
/Users/admin/.rvm/gems/ruby-2.3.1/bin/cap:23:in `<main>' 
/Users/admin/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `eval' 
/Users/admin/.rvm/gems/ruby-2.3.1/bin/ruby_executable_hooks:15:in `<main>' 
Tasks: TOP => deploy:check 

配置/部署。 rb(update capistrano 3.1 - > 3.6.1):

# config valid only for Capistrano 3.1 
lock '3.6.1' 

set :application, 'app' 

set :rvm_type, :system 

set :deploy_to, "/var/www/app/production" 

set :deploy_via, :copy 
set :use_sudo, false 
set :repository, "/var/repos/app.git" 
set :local_repository, "ssh://[email protected]/var/repos/app.git" 
set :user, "deploy" 
set :rails_env, "production" 

before 'deploy:setup', 'rvm:install_rvm' 

set :scm, :git 

# Default value for :linked_files is [] 
set :linked_files, %w{config/database.yml} 

# Default value for linked_dirs is [] 
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} 



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') 
    end 
    end 

    after :publishing, :restart 

    after :restart, :clear_cache do 
    on roles(:web), in: :groups, limit: 3, wait: 10 do 
     # Here we can do anything such as: 
     # within release_path do 
     # execute :rake, 'cache:clear' 
     # end 
    end 
    end 

end 

con无花果/部署/ production.rb

role :app, %w{[email protected]} 
role :web, %w{[email protected]} 
role :db, %w{[email protected]} 

server '88.88.88.88', user: 'deploy', roles: %w{web app}, my_property: :my_value 

Capfile

# Load DSL and Setup Up Stages 
require 'capistrano/setup' 

set :stage, :production 

# Includes default deployment tasks 
require 'capistrano/deploy' 


# Loads custom tasks from `lib/capistrano/tasks' if you have any defined. 
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r } 

require 'capistrano/bundler' 
require 'capistrano/rails' 

# If you are using rbenv add these lines: 
# require 'capistrano/rbenv' 
# set :rbenv_type, :user  # or :system, depends on your rbenv setup 
# set :rbenv_ruby, '2.0.0-p451' 

# If you are using rvm add these lines: 
require 'capistrano/rvm' 

set :rvm_type, :user 
set :rvm_ruby_version, '2.3.1-p112' 

的Gemfile

... 
# CAPISTRANO gem 
gem 'capistrano' 
gem 'capistrano-bundler' 
gem 'capistrano-rails' 
# Add this if you're using rvm 
gem 'capistrano-rvm', github: "capistrano/rvm" 

回答

4

该教程是可怕的过时。以下是我要更改的内容(从Capistrano安装标题开始):

对于rbenv和rvm gemfile条目,请删除github: 'something'部分。发布的Gem版本已经很长时间保持稳定。

在Capfile中,它们是正确的,即require行在那里,但set行应该在config/deploy.rb中。

config/deploy.rb中,重新启动部分可完全替换为capistrano-passenger gem。宝石的自述文件有安装说明。通常,它将使用乘客命令来执行应用程序重新启动,但您也可以告诉它使用与重新启动部分所执行操作相同的touch方法。您也可以删除after :finishing, 'deploy:cleanup'行。您可以从set :stage, 'production'中删除config/deploy/production.rb。你只需要设置阶段,如果它不同于文件名。

此外,请确保您正在运行bundle update gemname运行所有相关gem的最新版本。

+2

谢谢你的时间!我做了改变,但仍然没有奏效。但是在阅读“Reliable Deploying Rails Applications(https://leanpub.com/deploying_rails_applications)”之后,我部署了第一个RoR-app! –