Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
должен меняться в соответствии с конкретной задачей.wget что-то/ruby.tar.gz
tar -zxf ruby.tar.gz
./confidure && make && make installbefore_exec do |server|
ENV["BUNDLE_GEMFILE"] = "#{rails_root}/Gemfile"
end
cap deploy — она автоматически производит деплой, если возникает ошибка — откатывается к предыдущей версии. Вещь очень удобная — сильно снижает человеческий фактор ошибки.after_fork do |server, worker|
begin
worker.user('deployer', 'deployer') if Process.euid == 0
defined?(ActiveRecord::Base) and
ActiveRecord::Base.establish_connection
old_pid = "#{server.config[:pid]}.oldbin"
if File.exists?(old_pid) && server.pid != old_pid
begin
# after this all request will be processed by new workers
Process.kill("WINCH", File.read(old_pid).to_i)
sleep 0.1
# send stop for the old master
Process.kill("QUIT", File.read(old_pid).to_i)
rescue Errno::ENOENT, Errno::ESRCH
end
end
rescue => e
puts "[#{Process}]: #{e.message}\n"
puts "[#{Process}]: #{e.backtrace.join("\n")}"
end
end
sudo apt-get update. Да и надо самому следить, чтобы заголовочные файлы были нужных версий и т. д.namespace :deploy do
task :start do
run "sudo /usr/bin/sv up #{application}"
end
task :stop do
run "sudo /usr/bin/sv down #{application}"
end
task :restart do
run "sudo /usr/bin/sv hup #{application}"
end
end
namespace :deploy do
task :start do
sudo "/usr/bin/sv up #{application}"
end
task :stop do
sudo "/usr/bin/sv down #{application}"
end
task :restart do
sudo "/usr/bin/sv hup #{application}"
end
end
#!/bin/sh
exec 2>&1
# Settings
APP_ROOT=/srv/vchemodan
APP_USER=deployer
APP_GROUP=deployer
APP_RAILS_ENV='production'
UNICORN_CONFIG=$APP_ROOT/current/config/unicorn.rb
CMD="bundle exec unicorn -E $APP_RAILS_ENV -c $UNICORN_CONFIG -E $APP_RAILS_ENV"
cd $APP_ROOT/current
exec chpst -u $APP_USER:APP_GROUP $CMD
./run
exec unicorn ...
if environment == 'production'
every 1.minute do
command «if [! -f #{unicorn_pid} ] || [! -e /proc/$(cat #{unicorn_pid}) ]; then rvm #{ruby} && cd #{current} && bundle exec unicorn_rails -c #{unicorn_conf} -E #{rails_env} -D; fi»
end
end
/etc/nginx/sites-{available,enabled}, в RHEL/CentOS — /etc/nginx/conf.d, в ArchLinux это вообще на усмотрение админа, по умолчанию никаких директорий нет и include /etc/nginx/whatever/*.conf спокойно пишут руками, кому нужно. В подходе а-ля rhel отключать конфиги можно с помощью mv, всё равно потом SIGHUP кидать.
Связка rvm + Rails + Nginx + Unicorn или деплоим рельсы правильно