This commit is contained in:
Nicolas Bally 2015-05-24 13:40:43 +02:00
parent 6d85dd2f42
commit 9c1c216ba3
4 changed files with 146 additions and 72 deletions

View File

@ -29,8 +29,7 @@ gem 'jquery-rails'
# To use ActiveModel has_secure_password
gem 'bcrypt-ruby', '~> 3.0.0'
gem 'capistrano'
gem 'rvm-capistrano'
gem 'formtastic'
gem 'haml'

View File

@ -1,114 +1,125 @@
set :application, 'site_perso_app'
set :domain, 'new.nicolasbally.com'
set :domain, 'nicolasbally.com'
require "rvm/capistrano"
require "rvm/capistrano"
set :rvm_ruby_string, 'ruby-1.9.3-p0'
set :rvm_type, :user
set :rvm_ruby_string, 'ruby-1.9.3-p0'
set :rvm_type, :user
set :user, 'web'
set :user, 'web'
set :deploy_to, "/home/#{user}/#{application}/"
set :deploy_via, :remote_cache
set :deploy_to, "/home/#{user}/#{application}/"
set :deploy_via, :remote_cache
set :normalize_asset_timestamps, false
set :normalize_asset_timestamps, false
set :rails_env, "production"
set :rails_env, "production"
role :app, domain
role :web, domain
role :db, domain, :primary => true
role :app, domain
role :web, domain
role :db, domain, :primary => true
set :scm, :git
set :repository, "git@gitlab.bally.me:root/site-perso.git"
set :branch, "master"
set :scm, :git
set :repository, "git@git.nicolasbally.com:root/site_perso_app.git"
set :branch, "master"
default_run_options[:pty] = true
default_run_options[:pty] = true
before "deploy:symlink", "deploy:bundle_gems"
after "deploy:bundle_gems", "deploy:make_simlinks"
after "deploy:make_simlinks", "assets:precompile"
before "deploy:symlink", "deploy:bundle_gems"
after "deploy:bundle_gems", "deploy:make_simlinks"
after "deploy:make_simlinks", "assets:precompile"
# after "deploy", "deploy:restart"
after "deploy:restart", "deploy:cleanup"
# after "deploy", "deploy:restart"
after "deploy:restart", "deploy:cleanup"
#after "deploy", "deploy:bundle_gems"
#after "deploy:bundle_gems", "deploy:make_simlinks"
#after "deploy:make_simlinks", "assets:precompile"
#after "assets:precompile", "deploy:restart"
#after "deploy:restart", "deploy:cleanup"
#after "deploy", "deploy:bundle_gems"
#after "deploy:bundle_gems", "deploy:make_simlinks"
#after "deploy:make_simlinks", "assets:precompile"
#after "assets:precompile", "deploy:restart"
#after "deploy:restart", "deploy:cleanup"
namespace :assets do
task :precompile, :roles => :web do
run "rm -rf #{release_path}/public/assets"
run "ln -s #{deploy_to}shared/assets #{release_path}/public/assets"
namespace :assets do
task :precompile, :roles => :web do
run "rm -rf #{release_path}/public/assets"
run "ln -s #{deploy_to}shared/assets #{release_path}/public/assets"
run "cd #{release_path} && bundle exec rake assets:precompile --trace"
end
run "cd #{release_path} && bundle exec rake assets:precompile --trace"
end
task :cleanup, :roles => :web do
run "cd #{current_path} && RAILS_ENV=production bundle exec rake assets:clean"
end
end
task :cleanup, :roles => :web do
run "cd #{current_path} && RAILS_ENV=production bundle exec rake assets:clean"
end
end
namespace :deploy do
task :bundle_gems do
run "cd #{release_path} && bundle install"
end
namespace :deploy do
task :bundle_gems do
run "cd #{release_path} && bundle install"
end
task :make_simlinks do
run "rm -rf #{release_path}/private_medias"
run "ln -s #{deploy_to}shared/storage/private #{release_path}/private_medias"
run "rm -rf #{release_path}/public/public_medias"
run "ln -s #{deploy_to}shared/storage/public #{release_path}/public/public_medias"
task :make_simlinks do
run "rm -rf #{release_path}/private_medias"
run "ln -s #{deploy_to}shared/storage/private #{release_path}/private_medias"
run "rm -rf #{release_path}/public/public_medias"
run "ln -s #{deploy_to}shared/storage/public #{release_path}/public/public_medias"
run "rm -rf #{release_path}/db/production.sqlite3"
run "ln -s #{deploy_to}shared/production.sqlite3 #{release_path}/db/production.sqlite3"
end
run "rm -rf #{release_path}/db/production.sqlite3"
run "ln -s #{deploy_to}shared/production.sqlite3 #{release_path}/db/production.sqlite3"
sudo "cp #{release_path}/config/unicorn_init_d /etc/init.d/#{application}"
task :start do
sudo "service #{application} start"
end
task :stop do
run "service #{application} stop"
end
task :restart, :roles => :app, :except => { :no_release => true } do
sudo "service #{application} restart"
end
task :reload_nginx do
sudo "service nginx reload"
end
task :migrate do
run "cd #{deploy_to}current && rake db:migrate RAILS_ENV=#{rails_env}"
sudo "chmod +x /etc/init.d/#{application}"
sudo "update-rc.d #{application} defaults "
end
end
task :start do
sudo "service #{application} start"
end
task :stop do
run "service #{application} stop"
end
task :restart, :roles => :app, :except => { :no_release => true } do
sudo "service #{application} restart"
end
task :reload_nginx do
sudo "rm -rf /etc/nginx/sites-enabled/#{application}"
sudo "ln -s #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application} "
sudo "service nginx reload"
end
task :migrate do
run "cd #{deploy_to}current && rake db:migrate RAILS_ENV=#{rails_env}"
end
task :seeds do
run "cd #{deploy_to}current && rake db:seeds RAILS_ENV=#{rails_env}"
task :seeds do
run "cd #{deploy_to}current && rake db:seeds RAILS_ENV=#{rails_env}"
end
end
end
end

View File

@ -1,5 +1,5 @@
upstream site_perso_app_unicorn {
server unix:/home/web/site_perso_app/shared/tmp/unicorn.sock fail_timeout=0;
server unix:/home/web/site_perso_app/shared/unicorn.sock fail_timeout=0;
}
server {

64
config/unicorn_init_d Executable file
View File

@ -0,0 +1,64 @@
#!/bin/bash
set -u
set -e
# Change these to match your app:
APP_NAME=site_perso_app
APP_RUBY=1.9.3-p0
APP_ROOT="/home/web/site_perso_app/current"
PID="/home/web/site_perso_app/shared/unicorn.pid"
ENV=production
GEM_HOME="/home/web/.rvm/gems/ruby-$APP_RUBY"
UNICORN_OPTS="-D -E $ENV -c $APP_ROOT/config/unicorn.rb"
SET_PATH="cd $APP_ROOT; rvm 1.9.3-p0"
CMD="$SET_PATH; unicorn $UNICORN_OPTS"
old_pid="$PID.oldbin"
cd $APP_ROOT || exit 1
sig () {
test -s "$PID" && kill -$1 `cat $PID`
}
oldsig () {
test -s $old_pid && kill -$1 `cat $old_pid`
}
case ${1-help} in
start)
sig 0 && echo >&2 "Already running" && exit 0
su - web -c "$CMD"
;;
stop)
sig QUIT && exit 0
echo >&2 "Not running"
;;
force-stop)
sig TERM && exit 0
echo >&2 "Not running"
;;
restart|reload)
sig HUP && echo reloaded OK && exit 0
echo >&2 "Couldn't reload, starting '$CMD' instead"
su - web -c "$CMD"
;;
upgrade)
sig USR2 && exit 0
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
su - web -c "$CMD"
;;
rotate)
sig USR1 && echo rotated logs OK && exit 0
echo >&2 "Couldn't rotate logs" && exit 1
;;
*)
echo >&2 "Usage: $0 "
exit 1
;;
esac