diff --git a/Gemfile b/Gemfile index c9e6de7be0b048c75c713d975d6a9fb5efec6943..486a0e7b2f53f01af1bb7d1f01dff185f26dcf26 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,8 @@ gem 'bundler', '>= 1.0.0' gem 'foreman', '0.27.0' gem 'whenever' -gem 'thin', '~> 1.3.1', :require => false +gem 'thin', '~> 1.3.1', :require => false +gem 'unicorn', '~> 4.1.1', :require => false # authentication diff --git a/Gemfile.lock b/Gemfile.lock index ae73e84c140d867f0d9a9f59461a3a09d24031c4..05050f762861e41cd31b0fa97da5f9f44bf3ada2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -218,6 +218,7 @@ GEM multi_json jwt (0.1.4) json (>= 1.2.4) + kgio (2.7.0) launchy (2.0.3) linecache (0.46) rbx-require-relative (> 0.0.4) @@ -307,6 +308,7 @@ GEM rake (>= 0.8.7) rdoc (~> 3.4) thor (~> 0.14.4) + raindrops (0.8.0) rake (0.9.2.2) rbx-require-relative (0.0.5) rdoc (3.12) @@ -391,6 +393,10 @@ GEM typhoeus (0.3.3) mime-types tzinfo (0.3.31) + unicorn (4.1.1) + kgio (~> 2.4) + rack + raindrops (~> 0.6) vegas (0.1.8) rack (>= 1.0.0) warden (1.0.6) @@ -490,6 +496,7 @@ DEPENDENCIES timecop twitter (= 2.0.2) typhoeus + unicorn (~> 4.1.1) vanna! webmock whenever diff --git a/config/unicorn.rb b/config/unicorn.rb new file mode 100644 index 0000000000000000000000000000000000000000..1da12c27a128569221d80e876ffc2138d14e6cda --- /dev/null +++ b/config/unicorn.rb @@ -0,0 +1,45 @@ +rails_env = ENV['RAILS_ENV'] || 'development' + +# Enable and set these to run the worker as a different user/group +#user = 'diaspora' +#group = 'diaspora' + +worker_processes 3 + +## Load the app before spawning workers +#preload_app true + +# How long to wait before killing an unresponsive worker +timeout 30 + +#pid '/var/run/diaspora/diaspora.pid' +#listen '/var/run/diaspora/diaspora.sock', :backlog => 2048 + +# Ruby Enterprise Feature +if GC.respond_to?(:copy_on_write_friendly=) + GC.copy_on_write_friendly = true +end + + +before_fork do |server, worker| + # If using preload_app, enable this line + #ActiveRecord::Base.disconnect! + + old_pid = '/var/run/diaspora/diaspora.pid.oldbin' + if File.exists?(old_pid) && server.pid != old_pid + begin + Process.kill("QUIT", File.read(old_pid).to_i) + rescue Errno::ENOENT, Errno::ESRCH + # someone else did our job for us + end + end +end + + +after_fork do |server, worker| + # If using preload_app, enable this line + #ActiveRecord::Base.establish_connection + + # Enable this line to have the workers run as different user/group + #worker.user(user, group) +end