Commit 71dfbd93f4f1bc4ae443c66bb10fe85a36781367

Authored by Georg Hopp
1 parent 1295021e

Bundle unicorn for production deployments.

... ... @@ -30,7 +30,7 @@ gem 'sdoc', '~> 0.4.0', group: :doc
30 30 # gem 'bcrypt', '~> 3.1.7'
31 31
32 32 # Use Unicorn as the app server
33   -# gem 'unicorn'
  33 +gem 'unicorn'
34 34
35 35 # Use Capistrano for deployment
36 36 # gem 'capistrano-rails', group: :development
... ...
... ... @@ -60,6 +60,7 @@ GEM
60 60 railties (>= 4.2.0)
61 61 thor (>= 0.14, < 2.0)
62 62 json (1.8.3)
  63 + kgio (2.10.0)
63 64 loofah (2.0.3)
64 65 nokogiri (>= 1.5.9)
65 66 mail (2.6.4)
... ... @@ -97,6 +98,7 @@ GEM
97 98 activesupport (= 4.2.6)
98 99 rake (>= 0.8.7)
99 100 thor (>= 0.18.1, < 2.0)
  101 + raindrops (0.16.0)
100 102 rake (11.1.2)
101 103 rdoc (4.2.2)
102 104 json (~> 1.4)
... ... @@ -123,6 +125,10 @@ GEM
123 125 thread_safe (~> 0.1)
124 126 uglifier (3.0.0)
125 127 execjs (>= 0.3.0, < 3)
  128 + unicorn (5.0.1)
  129 + kgio (~> 2.6)
  130 + rack
  131 + raindrops (~> 0.7)
126 132 web-console (2.3.0)
127 133 activemodel (>= 4.0)
128 134 binding_of_caller (>= 0.7.2)
... ... @@ -147,6 +153,7 @@ DEPENDENCIES
147 153 tilt (~> 2.0)
148 154 turbolinks
149 155 uglifier (>= 1.3.0)
  156 + unicorn
150 157 web-console (~> 2.0)
151 158
152 159 BUNDLED WITH
... ...
  1 +# config/unicorn.rb
  2 +worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
  3 +timeout 15
  4 +preload_app true
  5 +
  6 +before_fork do |server, worker|
  7 + Signal.trap 'TERM' do
  8 + puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
  9 + Process.kill 'QUIT', Process.pid
  10 + end
  11 +
  12 + defined?(ActiveRecord::Base) and
  13 + ActiveRecord::Base.connection.disconnect!
  14 +end
  15 +
  16 +after_fork do |server, worker|
  17 + Signal.trap 'TERM' do
  18 + puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
  19 + end
  20 +
  21 + defined?(ActiveRecord::Base) and
  22 + ActiveRecord::Base.establish_connection
  23 +end
  24 +# vim: set ts=2 sw=2:
... ...
  1 +# Some notes about unicorn
  2 +
  3 +First off, it only servers the rails application, not the static assets.
  4 +You need to have another webserver for this.
  5 +
  6 +## SECRET_KEY
  7 +
  8 +By default rails reads the secret key from the environment variable
  9 +`SECRET_KEY_BASE`. It is possible to create a key with `rake secret`
  10 +
  11 +## Start unicorn
  12 +
  13 + SECRET_KEY_BASE="fa27f9d1cdfeb8590377366cb89c973b6084a20b60a4e60b551563cb1119156a0f172212f54fc096e182bf5310b6ca8cb050814c5908c8523cb191d1a054ca29" bundle exec unicorn -c config/unicorn.rb -E production
  14 +
  15 +## Precompile assets
  16 +
  17 + RAILS_ENV=production bundle exec rake assets:precompile
  18 +
  19 +## Urls
  20 +
  21 + * [heroku:Deploying Rails Applications with Unicorn](https://devcenter.heroku.com/articles/rails-unicorn)
  22 + * [DigitalOcean:How To Deploy a Rails App with Unicorn and Nginx on Ubuntu 14.04](https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-unicorn-and-nginx-on-ubuntu-14-04)
  23 +
... ...
Please register or login to post a comment