Capistrano развертывать из одного локального каталога в другой
Я хочу развернуть приложение на своей локальной машине. Например, у меня есть Rails APP в:
/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))
Ответы
Ответ 1
Проблема 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
Я также получаю эту проблему, поскольку я установил SSH-порт на 13000, а не на порт по умолчанию 22.
И добавил /etc/hosts.deny
sshd:ALL
/etc/hosts.allow добавлен
sshd:#some allowed IPs
Обработка I:
1) добавить в deploy.rb
ssh_options[:port] = 13600
2) добавить localhost в hosts.allow
sshed:127.0.0.1 localhost # others allowed IPs
Ответ 3
Возможно, вам не хватает SSH-сервера для подключения на вашем компьютере, потому что у вас установлен только клиент.
Тест ssh 127.0.0.1
, если вы все еще получаете ошибку отказа подключения, используйте:
sudo apt-get install openssh-server
Для установки ssh-сервера.
Ответ 4
Для работы локального развертывания должен быть установлен 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