среда, 2 февраля 2011 г.

Заиливаем сайт на locum.ru с использованием Capistrano

1) заходим в папку проекта на локальном компьютере.

2) выполняем команду "capify ."

3) содержимое файла "проект/config/deploy.rb" меняем на, попутно не забыв поменять специфичные для проекта и аккаунта на locum.ru данные:


#========================================
#========================================

# _your_login_ - Поменять на ваш логин в панели управления
# _your_project_ - Поменять на имя вашего проекта
# _your_server_ - Поменять на имя вашего сервера (Указано на вкладке "FTP и SSH" вашей панели управления)
# set :repository - Установить расположение вашего репозитория
# У вас должна быть настроена авторизация ssh по сертификатам

set :application, "aaa"
set :repository,  "file:///home/trololo/megaproject"


set :deploy_via, :copy

dpath = "/home/hosting_your_login/projects/_your_project_"

set :user, "hosting_your_login"
set :use_sudo, false
set :deploy_to, dpath

set :scm, :git

role :web, "_your_server_.locum.ru"                          # Your HTTP server, Apache/etc
role :app, "_your_server_.locum.ru"                          # This may be the same as your `Web` server
role :db,  "_your_server_.locum.ru", :primary => true # This is where Rails migrations will run

after "deploy:update_code", :copy_database_config

task :copy_database_config, roles => :app do
  db_config = "#{shared_path}/database.yml"
  run "cp #{db_config} #{release_path}/config/database.yml"
end

set :unicorn_rails, "/var/lib/gems/1.8/bin/unicorn_rails"
set :unicorn_conf, "/etc/unicorn/_your_project_._your_login_.rb"
set :unicorn_pid, "/var/run/unicorn/_your_project_._your_login_.pid"

# - for unicorn - #
namespace :deploy do
  desc "Start application"
  task :start, :roles => :app do
    run "#{unicorn_rails} -Dc #{unicorn_conf}"
  end

  desc "Stop application"
  task :stop, :roles => :app do
    run "[ -f #{unicorn_pid} ] && kill -QUIT `cat #{unicorn_pid}`"
  end

  desc "Restart Application"
  task :restart, :roles => :app do
    run "[ -f #{unicorn_pid} ] && kill -USR2 `cat #{unicorn_pid}` || #{unicorn_rails} -Dc #{unicorn_conf}"
  end
end



#========================================
#========================================


4) выполняем команды:

git init
git add.
git commit -m "new app"

5) выполнить команду:

cap deploy:setup

данная команда только создаст на сервере необходимую структуру каталогов.

6) создать файл database.yml в папке "~/projects/megaproject/shared" на сервере и поменять на специфичную для сервера конфигурацию базы данных. Это файл будет использовать всякий раз, как вы будете обновлять свой код на сервере. Он будет автоматичеси затирать файл, используемый на вашем локальном компьютере.

7) выполняем команду:

cap deploy
или
cap deploy:update_code

данная команда зальет ваш проект на locum.ru и поменяет файл database.yml на файл, залитый на сервер на предыдущем шаге.

8) радуемся.

ЗЫ  данный файл deploy.rb отличается от файла с сайта locum.ru двумя строчками:

set :repository,  "file:///home/trololo/megaproject"
set :deploy_via, :copy

перая строчка - директория локального проекта, а не сервер.
вторая сторчка указывает стратегию обновления: проект архивируется, отправляется на сервер и обрабатывается на нем.