2016-08-25 42 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! –