Commit dcb17ead95cf83660fd7f88e9c5cc4b6441b07df

Authored by Dmitriy Zaporozhets
2 parents 98c73133 fa529c78

Merge pull request #1471 from PragTob/renameUnicorn.rb

Rename: unicorn.rb.orig --> unicorn.rb.example
config/unicorn.rb.example 0 → 100644
@@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
  1 +app_dir = "/home/gitlab/gitlab/"
  2 +worker_processes 2
  3 +working_directory app_dir
  4 +
  5 +# Load app into the master before forking workers for super-fast
  6 +# worker spawn times
  7 +preload_app true
  8 +
  9 +# nuke workers after 60 seconds (the default)
  10 +timeout 30
  11 +
  12 +# listen on a Unix domain socket and/or a TCP port,
  13 +
  14 +#listen 8080 # listen to port 8080 on all TCP interfaces
  15 +#listen "127.0.0.1:8080" # listen to port 8080 on the loopback interface
  16 +listen "#{app_dir}/tmp/sockets/gitlab.socket"
  17 +
  18 +pid "#{app_dir}/tmp/pids/unicorn.pid"
  19 +stderr_path "#{app_dir}/log/unicorn.stderr.log"
  20 +stdout_path "#{app_dir}/log/unicorn.stdout.log"
  21 +
  22 +# http://www.rubyenterpriseedition.com/faq.html#adapt_apps_for_cow
  23 +if GC.respond_to?(:copy_on_write_friendly=)
  24 + GC.copy_on_write_friendly = true
  25 +end
  26 +
  27 +
  28 +before_fork do |server, worker|
  29 + # the following is highly recomended for Rails + "preload_app true"
  30 + # as there's no need for the master process to hold a connection
  31 + defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
  32 +
  33 + ##
  34 + # When sent a USR2, Unicorn will suffix its pidfile with .oldbin and
  35 + # immediately start loading up a new version of itself (loaded with a new
  36 + # version of our app). When this new Unicorn is completely loaded
  37 + # it will begin spawning workers. The first worker spawned will check to
  38 + # see if an .oldbin pidfile exists. If so, this means we've just booted up
  39 + # a new Unicorn and need to tell the old one that it can now die. To do so
  40 + # we send it a QUIT.
  41 + #
  42 + # Using this method we get 0 downtime deploys.
  43 +
  44 + old_pid = "#{server.config[:pid]}.oldbin"
  45 +
  46 + if File.exists?(old_pid) && server.pid != old_pid
  47 + begin
  48 + sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
  49 + Process.kill(sig, File.read(old_pid).to_i)
  50 + rescue Errno::ENOENT, Errno::ESRCH
  51 + # someone else did our job for us
  52 + end
  53 + end
  54 +end
  55 +
  56 +after_fork do |server, worker|
  57 + # Unicorn master loads the app then forks off workers - because of the way
  58 + # Unix forking works, we need to make sure we aren't using any of the parent's
  59 + # sockets, e.g. db connection
  60 +
  61 + defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
  62 + # Redis and Memcached would go here but their connections are established
  63 + # on demand, so the master never opens a socket
  64 +end
config/unicorn.rb.orig
@@ -1,64 +0,0 @@ @@ -1,64 +0,0 @@
1 -app_dir = "/home/gitlab/gitlab/"  
2 -worker_processes 2  
3 -working_directory app_dir  
4 -  
5 -# Load app into the master before forking workers for super-fast  
6 -# worker spawn times  
7 -preload_app true  
8 -  
9 -# nuke workers after 60 seconds (the default)  
10 -timeout 30  
11 -  
12 -# listen on a Unix domain socket and/or a TCP port,  
13 -  
14 -#listen 8080 # listen to port 8080 on all TCP interfaces  
15 -#listen "127.0.0.1:8080" # listen to port 8080 on the loopback interface  
16 -listen "#{app_dir}/tmp/sockets/gitlab.socket"  
17 -  
18 -pid "#{app_dir}/tmp/pids/unicorn.pid"  
19 -stderr_path "#{app_dir}/log/unicorn.stderr.log"  
20 -stdout_path "#{app_dir}/log/unicorn.stdout.log"  
21 -  
22 -# http://www.rubyenterpriseedition.com/faq.html#adapt_apps_for_cow  
23 -if GC.respond_to?(:copy_on_write_friendly=)  
24 - GC.copy_on_write_friendly = true  
25 -end  
26 -  
27 -  
28 -before_fork do |server, worker|  
29 - # the following is highly recomended for Rails + "preload_app true"  
30 - # as there's no need for the master process to hold a connection  
31 - defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!  
32 -  
33 - ##  
34 - # When sent a USR2, Unicorn will suffix its pidfile with .oldbin and  
35 - # immediately start loading up a new version of itself (loaded with a new  
36 - # version of our app). When this new Unicorn is completely loaded  
37 - # it will begin spawning workers. The first worker spawned will check to  
38 - # see if an .oldbin pidfile exists. If so, this means we've just booted up  
39 - # a new Unicorn and need to tell the old one that it can now die. To do so  
40 - # we send it a QUIT.  
41 - #  
42 - # Using this method we get 0 downtime deploys.  
43 -  
44 - old_pid = "#{server.config[:pid]}.oldbin"  
45 -  
46 - if File.exists?(old_pid) && server.pid != old_pid  
47 - begin  
48 - sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU  
49 - Process.kill(sig, File.read(old_pid).to_i)  
50 - rescue Errno::ENOENT, Errno::ESRCH  
51 - # someone else did our job for us  
52 - end  
53 - end  
54 -end  
55 -  
56 -after_fork do |server, worker|  
57 - # Unicorn master loads the app then forks off workers - because of the way  
58 - # Unix forking works, we need to make sure we aren't using any of the parent's  
59 - # sockets, e.g. db connection  
60 -  
61 - defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection  
62 - # Redis and Memcached would go here but their connections are established  
63 - # on demand, so the master never opens a socket  
64 -end  
doc/installation.md
@@ -252,7 +252,7 @@ You can login via web using admin generated with setup: @@ -252,7 +252,7 @@ You can login via web using admin generated with setup:
252 ## 1. Unicorn 252 ## 1. Unicorn
253 253
254 cd /home/gitlab/gitlab 254 cd /home/gitlab/gitlab
255 - sudo -u gitlab cp config/unicorn.rb.orig config/unicorn.rb 255 + sudo -u gitlab cp config/unicorn.rb.example config/unicorn.rb
256 sudo -u gitlab bundle exec unicorn_rails -c config/unicorn.rb -E production -D 256 sudo -u gitlab bundle exec unicorn_rails -c config/unicorn.rb -E production -D
257 257
258 ## 2. Nginx 258 ## 2. Nginx