diff --git a/Gemfile b/Gemfile index 1c6639b..8e44465 100644 --- a/Gemfile +++ b/Gemfile @@ -58,7 +58,7 @@ gem "rvm-capistrano", group: :development # gem 'bcrypt-ruby', '~> 3.0.0' # Use unicorn as the app server -gem 'unicorn' +gem 'unicorn', "4.6.3" gem "nokogiri" diff --git a/Gemfile.lock b/Gemfile.lock index c31f95d..2083cad 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -192,7 +192,7 @@ GEM uglifier (2.5.0) execjs (>= 0.3.0) json (>= 1.8.0) - unicorn (4.8.2) + unicorn (4.6.3) kgio (~> 2.6) rack raindrops (~> 0.7) @@ -238,5 +238,5 @@ DEPENDENCIES turbolinks twitter-bootstrap-rails uglifier (>= 1.3.0) - unicorn + unicorn (= 4.6.3) zurb-foundation (>= 3.2) diff --git a/config/deploy.rb b/config/deploy.rb index ee30430..2a93bfa 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,116 +1,139 @@ # -*- encoding : utf-8 -*- + + + set :application, 'pic_vert_app' set :domain, 'lepicvert.org' +set :user, 'web' - require "rvm/capistrano" - set :rvm_ruby_string, 'ruby-1.9.3-p0' - set :rvm_type, :user +set :rvm_ruby_string, 'ruby-2.0.0-p195' +set :rvm_autolibs_flag, "read-only" - set :user, 'web' +set :bundle_cmd, "/home/#{user}/.rvm/gems/#{rvm_ruby_string}@global/bin/bundle" +set :bundle_dir, "/home/#{user}/.rvm/gems/#{rvm_ruby_string}" +set :use_sudo, false - set :deploy_to, "/home/#{user}/#{application}/" - set :deploy_via, :remote_cache - - set :normalize_asset_timestamps, false - set :rails_env, "production" +set :deploy_to, "/home/#{user}/#{application}/" +set :deploy_via, :remote_cache +set :normalize_asset_timestamps, false +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 :scm, :git set :repository, "git@box1.quartz-agence.com:#{application}.git" - set :branch, "master" - default_run_options[:pty] = true +set :branch, "master" + +default_run_options[:pty] = true - - 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: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" - - - 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 - - +require "rvm/capistrano" +require 'bundler/capistrano' - 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" - end +load 'deploy/assets' - 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 :migrate do - run "cd #{deploy_to}current && bundle exec rake db:migrate RAILS_ENV=#{rails_env}" - - end - task :migrate_redo do - run "cd #{deploy_to}current && bundle exec rake db:migrate:redo RAILS_ENV=#{rails_env}" - - end - - task :nginx do - sudo "service nginx reload" - end - - - task :seeds do - run "cd #{deploy_to}current && rake db:seed RAILS_ENV=#{rails_env}" - - end +namespace :deploy do + +# namespace :assets do +# task :precompile, :roles => :web, :except => { :no_release => true } do +# from = source.next_revision(current_revision) +# if releases.length <= 1 || capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0 +# run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile} +# else +# logger.info "Skipping asset pre-compilation because there were no asset changes" +# end +# end +# end + + + + desc "Symlink shared config files" + task :symlink_config_files do - end - + run "ln -s #{deploy_to}shared/storage/private #{current_path}/private_medias" + + run "ln -s #{deploy_to}shared/storage/public #{current_path}/public/public_medias" + + run "ln -s #{deploy_to}shared/production.sqlite3 #{current_path}/db/production.sqlite3" + + sudo "cp #{current_path}/config/unicorn_init_d /etc/init.d/#{application}" + + sudo "chmod +x /etc/init.d/#{application}" + sudo "update-rc.d #{application} defaults " + end + + + + task :start do + sudo "service #{application} start" + end + task :stop do + run "service #{application} stop" + end + task :restart 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 :seeds do + run "cd #{deploy_to}current && rake db:seed RAILS_ENV=#{rails_env}" + + end + + + task :create_files_folders do + + run "mkdir #{deploy_to}shared/storage" + run "mkdir #{deploy_to}shared/storage/private" + run "mkdir #{deploy_to}shared/storage/public" + end + + + +end + + +#before 'deploy:setup', 'rvm:install_rvm' # install RVM +#before 'deploy:setup', 'rvm:install_ruby' # install Ruby and create gemset, OR: +#before 'deploy:setup', 'rvm:create_gemset' # only create gemset + + + +after "deploy:setup", "deploy:create_files_folders" + +#after "deploy:restart", "deploy:cleanup" + + +before "deploy:restart", "deploy:symlink_config_files" + +after "deploy", "deploy:cleanup" + + + diff --git a/config/unicorn_init_d b/config/unicorn_init_d new file mode 100644 index 0000000..05f119a --- /dev/null +++ b/config/unicorn_init_d @@ -0,0 +1,64 @@ +#!/bin/bash + + +set -u +set -e + +# Change these to match your app: +APP_NAME=pic_vert_app +APP_RUBY=2.0.0-p195 +APP_ROOT="/home/web/pic_vert_app/current" +PID="/home/web/pic_vert_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 $APP_RUBY" +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 \ No newline at end of file