Deploy Rails приложения на DigitalOcean Часть 2. Capistrano
Создано больше 5 лет назад
- Сначала нужно добавить в .gitignore файл /config/database.yml и удалить его из репозитория git rm config/database.yml
- Добавляем capistrano
group :development do
gem 'capistrano', require: false
gem 'capistrano-bundler', require: false
gem 'capistrano-rails', require: false
gem 'capistrano-rvm', require: false
end
- Устанавливаем capistrano cap install
- Добавляем в Capfile строки
require 'capistrano/rvm'
require 'capistrano/bundler'
require 'capistrano/rails'
- Добавляем в /config/deploy.rb строки вида
set :application, 'имя приложения'
set :repo_url, 'git@example.com:me/ваш_репозиторий.git'
set :deploy_to, "/home/deployer/имя приложения"
set :deploy_user, 'deployer'
append :linked_files, 'config/database.yml', 'config/secrets.yml'
append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'public/system'
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
# Your restart mechanism here, for example:
execute :touch, release_path.join('tmp/restart.txt')
#invoke 'unicorn:restart'
end
end
after :publishing, :restart
end
- Добавляем в /config/deploy/production.rb строки вида
server 'вашхост.ru', user: 'deployer', roles: %w{app db web}, primary: true
role :app, %w{deployer@вашхост.ru}
role :web, %w{deployer@вашхост.ru}
role :db, %w{deployer@вашхост.ru}
set :rails_env, :production
set :stage, :production
set :ssh_options, {
keys: %w(/home/вашпользователь/.ssh/id_rsa),
forward_agent: true,
auth_methods: %w(publickey password),
port: 4324
}
- Проверяем готовность к деплою capistrano: cap production deploy:check
- Заходим на сервер и переходим в папку shared: cd /имя проекта/shared/config
- Заходим на сервер и переходим в папку config: cd /имя проекта/shared/config
- Создаем database.yml: nano database.yml
- Заполняем database.yml:
production:
adapter: postgresql
encoding: unicode
database: имябазы_production
user: postgres
password: 'вашпароль'
pool: 20
- Устанавливаем 3 дополнительных гема:
gem 'dotenv'
gem 'dotenv-deployment', require: 'dotenv/deployment'
gem 'therubyracer'
- Добавляем .env в файл deploy.rb в строчку linked_files:
append :linked_files, 'config/database.yml', '.env'
- Создаем файл .env в папке shared на сервере:
cd shared
nano .env
- Создаем в проекте секрет кей:
rake secret
- Добавляем в файл .env строчку вида:
SECRET_KEY_BASE=вашсекреткей
- Добавляем в git только файлы Gemfile и Gemfile.lock и делаем git push:
- Заходим на сервер и открываем файл: sudo nano /etc/postgresql/9.5/main/pg_hba.conf . В открывшемся файле все записи peer изменяем на md5
- Перезапускаем postgresql sudo service postgresql restart
- Создаем базу данных:
sudo -u postgres psql
CREATE DATABASE имябазы_production;
- Запускаем деплойcap production deploy
- На сервере переходим в папку ~/имяприложения/current и загружаем seed информацию(если есть)RAILS_ENV=production bundle exec rake db:seed
- Если используется гем whenever добавляем в Capfile строки
require "whenever/capistrano"
И запускаем деплой еще раз.
Вот и все, если все прошло без ошибок приложение полностью загружено и готово к использованию. Код можно добавлять в репозиторий.
0 Комментариев
Добавить комментарий: