Шаг 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