Развернуть Capistrano из одного локального каталога в другой - PullRequest
15 голосов
/ 29 ноября 2011

Я хочу развернуть приложение на моем локальном компьютере.Например, у меня есть приложение Rails: /home/thesis/dev/myapp, но я хочу от cap deploy:setup до /home/thesis/deploy/.Я пробовал это, но Capistrano пытается подключиться к localhost, но это не нужно вообще.Как я могу решить это?

Здесь идет мой deploy.rb

role :app, "localhost"
role :web, "localhost"
role :db,  "localhost", :primary => true

set(:deploy_to) { "/home/thesis/dev/myapp" }
set :bundle_without,  [:development, :test]
set :use_sudo, false

set :repository, "."
set :scm, :none
set :deploy_via, :copy

set :copy_dir, "/home/thesis/deploy/tmp"
set :copy_remote_dir, "/home/thesis/deploy/tmp"

Он падает с:

connection failed for: localhost (Errno::ECONNREFUSED: Connection refused - connect(2))

Ответы [ 4 ]

8 голосов
/ 29 ноября 2011

Проблема localhost заключается в том, что вы устанавливаете это в определениях role.Поскольку вы делаете все это локально, и поскольку Capistrano требуется роль, вы можете установить следующее:

role :app, ""

Я также думаю, что вы устанавливаете значения copy_dir и copy_remote_dir неправильно.Я бы порекомендовал удалить их и позволить Capistrano использовать его по умолчанию.

Вот полный конфиг, который должен работать для вас:

role :app, ""

set :use_sudo, false
set :application, 'thesis'     # you'll need to specify an app name
set :repository, "."
set :scm, :none
set :deploy_to, "/home/thesis/deploy/"   # the destination dir
set :deploy_via, :copy

# override deploy:restart since this isn't a Rails app
namespace :deploy do
  task :restart do
    # no-op
  end
end
2 голосов
/ 08 июня 2016

Возможно, вам не хватает SSH-сервера для подключения на вашем компьютере, потому что у вас установлен только клиент.

Проверка ssh 127.0.0.1, если по-прежнему возникает ошибка отказа в соединении, используйте:

sudo apt-get install openssh-server

Для установки сервера ssh.

1 голос
/ 16 января 2013

Я также получаю эту проблему, потому что я установил порт SSH на 13000, а не порт по умолчанию 22. И /etc/hosts.deny добавил

sshd:ALL

/ etc / hosts.allow добавлено

sshd:#some allowed IPs

Я обрабатываю:

1) добавить к deploy.rb

ssh_options[:port] = 13600

2) добавить localhost к hosts.allow

sshed:127.0.0.1 localhost # others allowed IPs
0 голосов
/ 08 июня 2016

Для работы локального развертывания необходимо установить сервер ssh, например openssh (sudo apt-get install openssh-server для установки)

конфиг / развернуть / staging.rb

set :stage, :staging

role :app, %w{127.0.0.1}
role :web, %w{127.0.0.1}
role :db,  %w{127.0.0.1}

server '127.0.0.1', user: 'your-username', roles: %w{web app}
set :branch, "staging"

конфиг / deploy.rb

set :deploy_to ,'/home/your/app/path/deploy'
# Path of tests to be run, use array with empty string to run all tests
set :tests, ['']

namespace :deploy do
  desc "Runs test before deploying, can't deploy unless they pass"
  task :run_tests do
    test_log = "log/capistrano.test.log"
    tests = fetch(:tests)
    tests.each do |test|
      puts "--> Running tests: '#{test}', please wait ..."
      unless system "bundle exec rspec #{test} > #{test_log} 2>&1"
        puts "--> Aborting deployment! One or more tests in '#{test}' failed. Results in: #{test_log}"
        exit;
      end
      puts "--> '#{test}' passed"
    end
    puts "--> All tests passed, continuing deployment"
    system "rm #{test_log}"
  end

  # Only allow a deploy with passing tests to be deployed
  before :deploy, "deploy:run_tests"
end

Запустите его с помощью

cap staging deploy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...