web-dev-qa-db-ja.com

Capistrano:リンクされたファイルdatabase.ymlがmy.server.ipアドレスに存在しません

capistranoを介してアプリをサーバーにデプロイしようとすると、次のエラーメッセージが表示されます。

DEBUG [605f198a] Finished in 0.084 seconds with exit status 1 (failed).
ERROR linked file /home/deploy/myrailsapp/shared/config/database.yml does not exist on xx.xxx.xx.xxx
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: exit

SystemExit: exit

Tasks: TOP => deploy:check:linked_files
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as [email protected]: exit

私のdeploy.rbは次のとおりです。

set :deploy_to, '/home/deploy/myrailsapp'
set :linked_files, %w{config/database.yml}
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
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end
  after :publishing, 'deploy:restart'
  after :finishing, 'deploy:cleanup'
end


namespace :deploy do
  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

私はこのツタンカーメンを試しました https://www.gorails.com/deploy/ubuntu/14.04 、これはcapistranoでの私の最初の試みです。

15
juicy

/home/deploy/myrailsapp/shared/config/database.ymlファイルを手動で作成して調整するだけです。

Capistranoは、すぐに構成ファイルを作成(または管理)しません。したがって、手動で行うか、独自のCapistranoスクリプト、PuppetChefAnsibleツールを使用して自動化する必要があります。

32
Maxim Dobryakov

ファイルをデプロイメントサーバーの中央に配置したいので、このタスクを使用して、構成ファイルを構成ディレクトリからアプリサーバー上のリンクファイルディレクトリに展開します。

Capistrano-rsyncを使用してデプロイするため、これはrsyncを使用します。

namespace :deploy do

  task :copy_config do
    on release_roles :app do |role|
      fetch(:linked_files).each do |linked_file|
        user = role.user + "@" if role.user
        hostname = role.hostname
        linked_files(shared_path).each do |file|
          run_locally do
            execute :rsync, "config/#{file.to_s.gsub(/.*\/(.*)$/,"\\1")}", "#{user}#{hostname}:#{file.to_s.gsub(/(.*)\/[^\/]*$/, "\\1")}/"
          end
        end
      end
    end
  end

end
before "deploy:check:linked_files", "deploy:copy_config"
5
scones