Конфигурация развертывания Capistrano

Помогите пожалуйста настроить capistrano для развертывания. У меня есть ssh:

  • пользователь: пользователь
  • хост: 8.8.8.8:6554
  • проход: 123

Затем у меня есть репозиторий битбакетов [email protected]:somerepo/code.git

Мне просто нужно развернуть код из ветки по умолчанию в [email protected]:8888:/public_html/test/ . На локальной машине у меня есть ключ ssh, который позволяет мне подключаться без пароля. Но капистрано не подключился.

Есть мой конфиг:

lock '3.3.5'
set :application, 'App'
set :scm, :git
set :repo_url, '[email protected]:somerepo/code.git'
set :scm_passphrase, ""
set :scm_user, "[email protected]"
set :user, 'User'
set :deploy_to, '/public_html/test'
set :app_dir, "/public_html/test"
set :ssh_options, {:forward_agent => true}
role :web, '8.8.8.8:6554'

namespace :deploy do
  after :restart, :clear_cache do
    on roles(:web), in: :groups, limit: 3, wait: 10 do
    end
  end
end

Ошибка:

соединение закрыто удаленным хостом ** Вызов развертывания: сбой (first_time) ** Выполнение развертывания: сбой


person Максим Владимирович    schedule 03.03.2015    source источник
comment
Пожалуйста, помогите кому-нибудь. Мне нужно развернуть это сегодня.   -  person Максим Владимирович    schedule 03.03.2015


Ответы (1)


Шаг 1: в Gemfile

gem 'capistrano'
gem 'capistrano-bundler'
gem 'capistrano-rails'

Шаг 2. пакет

Шаг 3: cap install ## будет сгенерирован набор файлов

Шаг 4: перейдите в Capfile и вставьте следующий код ## этот файл будет параллельным вашему приложению rails

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }

Шаг 5: Config/deploy.rb, который будет общим для обоих ENV.

Этот файл будет общим/общим для всей среды приложения

    set :application, 'your_app'  ## keep in mind that your app dir name will be your_app  
    set :repo_url, '[email protected]:somerepo/code.git'
    set :branch, 'master'
    set :use_sudo, true
    set :deploy_to, '/public_html/test'
    set :linked_files, fetch(:linked_files, []).push('config/database.yml')
    set :linked_dirs, fetch(:linked_dirs, []).push('bin', 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system')
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

Шаг 6. Давайте сейчас создадим специальный файл ENV для производственной среды.

config/deploy/production.rb ## этот файл будет сгенерирован командой cap install, которую вы сделали ранее, пока нет необходимости

прокомментируйте весь код, кроме этого

role :app, %w{8.8.8.8:6554}
set :ssh_options, {
                user: 'User'
            }

Шаг 6: теперь выполните ssh to your server ssh [email protected]:6554 теперь он запросит пароль... give password

Шаг 7: теперь по умолчанию ваше приложение будет иметь вид /var/www/app, и здесь вам нужно создать соответствующую папку. делал много раз

sudo mkdir -p /public_html
sudo mkdir -p /public_html/test
sudo chown User:User /public_html/test # `chown` will change the owner ship so that `User` user can `**Read/Write**` 
umask 0002
mkdir /public_html/test/releases ## these are convention 
mkdir /public_html/test/shared ## these are convention 
sudo chown User:User public_html/test/releases
sudo chown User:User public_html/test/shared
mkdir .ssh
chmod .ssh 007
ssh-keygen -t rsa
and follow the step  ## this will generate ssh key 
cat .ssh/id_rsa.pub

Теперь добавьте этот ключ в свой репозиторий, перейдите к => настройка => кнопка развертывания ключей => нажмите на нее и добавьте Key. Поместите ярлык любое имя и вставьте сюда ssh key.

Это со стороны сервера

Шаг 8: Теперь вам нужно добавить свой ключ ssh на сервер. Для этого сделайте cat ~/.ssh/id_rsa.pub, если у вас есть ключ rsa, иначе сгенерируйте ключ rsa, его очень легко создать.

Шаг 9. Войдите на свой сервер, используя ssh

`vi .ssh/authorized_keys` and paste your local machine rsa key 

Сохранить и выйти

Шаг 10: cap -T ## перечислите все задачи

Шаг 11: cap production deploy:check

Это выдаст ошибку, потому что файла database.yml нет

За это vi /public_html/test/shared/config/database.yml

    development:
  adapter: postgresql
  database: testdb_cap
  pool: 5
  timeout: 5000

сохранить и выйти

Сделайте еще раз cap production deploy:check

На этот раз не будет выдавать никаких ошибок

Шаг 12.

 cap production deploy

И это все

Проверьте это также ruby rake task after deploymewnt

person Gupta    schedule 03.03.2015
comment
Это не работает. SSHKit::Command::Failed: статус выхода git: 127 - person Максим Владимирович; 05.03.2015
comment
@МаксимВладимирович: Вы решили свою проблему? Потому что у меня есть проблема, но я не могу решить: P - person Gupta; 30.03.2016
comment
Нет, мне не помогает. - person Максим Владимирович; 01.04.2016
comment
Я думаю, лучше использовать ansible - person Максим Владимирович; 01.04.2016