123456789101112131415161718192021222324252627 |
- worker_processes 4
- timeout 30
- stderr_path 'log/unicorn_error.log'
- stdout_path 'log/unicorn_access.log'
- pid 'tmp/pids/unicorn.pid'
- before_fork do |server, _worker|
- ##
- # When sent a USR2, Unicorn will suffix its pidfile with .oldbin and
- # immediately start loading up a new version of itself (loaded with a new
- # version of our app). When this new Unicorn is completely loaded
- # it will begin spawning workers. The first worker spawned will check to
- # see if an .oldbin pidfile exists. If so, this means we've just booted up
- # a new Unicorn and need to tell the old one that it can now die. To do so
- # we send it a QUIT.
- #
- # Using this method we get 0 downtime deploys.
- old_pid = 'tmp/pids/unicorn.pid.oldbin'
- if File.exist?(old_pid) && server.pid != old_pid
- begin
- Process.kill('QUIT', File.read(old_pid).to_i)
- rescue Errno::ENOENT, Errno::ESRCH
- logger.info 'Unicorn master already killed. Someone else did our job for us.'
- end
- end
- end
|