forked from bofh/fetsite
46 lines
1.2 KiB
Ruby
46 lines
1.2 KiB
Ruby
# config/unicorn.rb
|
|
|
|
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 5)
|
|
timeout 60
|
|
preload_app true
|
|
listen "/var/run/fetsite.sock"
|
|
stderr_path "/var/log/unicorn.log"
|
|
stdout_path "/var/log/unicorn.log"
|
|
|
|
before_fork do |server, worker|
|
|
Signal.trap 'TERM' do
|
|
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
|
|
Process.kill 'QUIT', Process.pid
|
|
end
|
|
|
|
defined?(ActiveRecord::Base) and
|
|
ActiveRecord::Base.connection.disconnect!
|
|
end
|
|
|
|
after_fork do |server, worker|
|
|
Signal.trap 'TERM' do
|
|
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
|
|
end
|
|
|
|
defined?(ActiveRecord::Base) and
|
|
ActiveRecord::Base.establish_connection
|
|
begin
|
|
uid, gid = Process.euid, Process.egid
|
|
user, group = 'fetsite', 'nogroup'
|
|
target_uid = Etc.getpwnam(user).uid
|
|
target_gid = Etc.getgrnam(group).gid
|
|
worker.tmp.chown(target_uid, target_gid)
|
|
if uid != target_uid || gid != target_gid
|
|
Process.initgroups(user, target_gid)
|
|
Process::GID.change_privilege(target_gid)
|
|
Process::UID.change_privilege(target_uid)
|
|
end
|
|
rescue => e
|
|
if RAILS_ENV == 'development'
|
|
STDERR.puts "couldn't change user, oh well"
|
|
else
|
|
raise e
|
|
end
|
|
end
|
|
end
|