capistrano-unicorn-nginx 3.3.0 → 3.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8ddad3cf564b9cfbcff371c0e13737733c5965c
4
- data.tar.gz: 79441091d32be807205469f230f08bc98f9cd27b
3
+ metadata.gz: 98fa7684b9edfa61257f2b2bb53b1459efe853b8
4
+ data.tar.gz: 28a21acc6aa76bb167246ddef2e7dbecc11bb38d
5
5
  SHA512:
6
- metadata.gz: f63dc9207ae9e2fade717e5105354d718cc88added1954ea7015e73ff529aaa511d92634c4a6db2ab526e4e47301aca9bbd885a8f61e4c52962520bb803c9274
7
- data.tar.gz: 50e42a13d0fdeed608e30d4d03eea961344ad05d1ec51522cbbf07352663902c57634541d6f53a91b89eff988d5e91efa4279279a31ae652fb11de038e110149
6
+ metadata.gz: e1ec2f6f9fd7cae579ebe7c87f078842f56d380ef3f899f336fe789b432a411eaeec2520f0ff41ba000115c624df3c9c092bd6c74af62d7dfca981f2285eff3b
7
+ data.tar.gz: a9e7f049219a0c771ddf04639841317f3ed188f38f9243302a9134d2b58e23f54df26ebfa4c4d6b59918a313e84c51ff70bd7ac24dff5060a8ef53884de99b30
data/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  ### master
4
4
 
5
+ ### v3.3.1, 2015-02-16
6
+ - made nginx fail_timeout configurable (@rhomeister)
7
+ - added logrotate configuration for nginx logs (@rhomeister)
8
+
5
9
  ### v3.3.0, 2015-02-09
6
10
  - added client SSL authentication (@rhomeister)
7
11
  - make unicorn timeout configurable (@vicentllongo)
@@ -14,14 +14,21 @@ module Capistrano
14
14
  shared_path.join('tmp/pids/unicorn.pid')
15
15
  end
16
16
 
17
+ def unicorn_log_dir
18
+ shared_path.join('log')
19
+ end
20
+
17
21
  def unicorn_log_file
18
- shared_path.join('log/unicorn.stdout.log')
22
+ log_dir.join('unicorn.stdout.log')
19
23
  end
20
24
 
21
25
  def unicorn_error_log_file
22
- shared_path.join('log/unicorn.stderr.log')
26
+ log_dir.join('unicorn.stderr.log')
23
27
  end
24
28
 
29
+ def unicorn_default_logrotate_config_file
30
+ "/etc/logrotate.d/#{fetch(:unicorn_service)}"
31
+ end
25
32
  end
26
33
  end
27
34
  end
@@ -21,6 +21,7 @@ namespace :load do
21
21
  set :nginx_upload_local_cert, true
22
22
  set :nginx_ssl_cert_local_path, -> { ask(:nginx_ssl_cert_local_path, 'Local path to ssl certificate: ') }
23
23
  set :nginx_ssl_cert_key_local_path, -> { ask(:nginx_ssl_cert_key_local_path, 'Local path to ssl certificate key: ') }
24
+ set :nginx_fail_timeout, 0 # see http://nginx.org/en/docs/http/ngx_http_upstream_module.html#fail_timeout
24
25
 
25
26
  set :linked_dirs, fetch(:linked_dirs, []).push('log')
26
27
  end
@@ -10,6 +10,7 @@ namespace :load do
10
10
  set :templates_path, 'config/deploy/templates'
11
11
  set :unicorn_pid, -> { unicorn_default_pid_file }
12
12
  set :unicorn_config, -> { unicorn_default_config_file }
13
+ set :unicorn_logrotate_config, -> { unicorn_default_logrotate_config_file }
13
14
  set :unicorn_workers, 2
14
15
  set :unicorn_worker_timeout, 30
15
16
  set :unicorn_tcp_listen_port, 8080
@@ -17,6 +18,8 @@ namespace :load do
17
18
  set :unicorn_app_env, -> { fetch(:rails_env) || fetch(:stage) }
18
19
  # set :unicorn_user # default set in `unicorn:defaults` task
19
20
 
21
+ set :unicorn_logrotate_enabled, false # by default, don't use logrotate to rotate unicorn logs
22
+
20
23
  set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids')
21
24
  end
22
25
  end
@@ -46,6 +49,15 @@ namespace :unicorn do
46
49
  end
47
50
  end
48
51
 
52
+ desc 'Setup logrotate configuration'
53
+ task :setup_logrotate do
54
+ on roles :app do
55
+ sudo :mkdir, '-pv', File.dirname(fetch(:unicorn_logrotate_config))
56
+ sudo_upload! template('unicorn-logrotate.rb.erb'), fetch(:unicorn_logrotate_config)
57
+ sudo 'chown', 'root:root', fetch(:unicorn_logrotate_config)
58
+ end
59
+ end
60
+
49
61
  %w[start stop restart].each do |command|
50
62
  desc "#{command} unicorn"
51
63
  task command do
@@ -56,6 +68,7 @@ namespace :unicorn do
56
68
  end
57
69
 
58
70
  before :setup_initializer, :defaults
71
+ before :setup_logrotate, :defaults
59
72
 
60
73
  end
61
74
 
@@ -67,4 +80,7 @@ desc 'Server setup tasks'
67
80
  task :setup do
68
81
  invoke 'unicorn:setup_initializer'
69
82
  invoke 'unicorn:setup_app_config'
83
+ if fetch(:unicorn_logrotate_enabled)
84
+ invoke 'unicorn:setup_logrotate'
85
+ end
70
86
  end
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module UnicornNginx
3
- VERSION = "3.3.0"
3
+ VERSION = "3.3.1"
4
4
  end
5
5
  end
@@ -1,10 +1,10 @@
1
1
  upstream unicorn_<%= fetch(:nginx_config_name) %> {
2
2
  <% if fetch(:unicorn_use_tcp) %>
3
3
  <% roles(:app).each do |role| %>
4
- server <%= role.hostname %>:<%= fetch(:unicorn_tcp_listen_port)%> fail_timeout=0;
4
+ server <%= role.hostname %>:<%= fetch(:unicorn_tcp_listen_port)%> fail_timeout=<%= fetch(:nginx_fail_timeout) %>;
5
5
  <% end %>
6
6
  <% else %>
7
- server unix:/tmp/unicorn.<%= fetch(:nginx_config_name) %>.sock fail_timeout=0;
7
+ server unix:/tmp/unicorn.<%= fetch(:nginx_config_name) %>.sock fail_timeout=<%= fetch(:nginx_fail_timeout) %>;
8
8
  <% end %>
9
9
  }
10
10
 
@@ -0,0 +1,25 @@
1
+ # logrotate.erb.conf
2
+ # Logrotate config for <%= fetch(:application) %> <%= fetch(:stage) %>
3
+ # Generated at <%= Time.now.strftime("%d.%m.%Y, %H:%M") %>
4
+
5
+ <%= unicorn_log_dir %>/*.log {
6
+ daily
7
+ missingok
8
+ rotate 180
9
+ compress
10
+ dateext
11
+ su <%= fetch(:unicorn_user) %> <%= fetch(:unicorn_user) %>
12
+
13
+ # this is important if using "compress" since we need to call
14
+ # the "lastaction" script below before compressing:
15
+ delaycompress
16
+
17
+ # note the lack of the evil "copytruncate" option in this
18
+ # config. Unicorn supports the USR1 signal and we send it
19
+ # as our "lastaction" action:
20
+ # USR1 - reopen all logs owned by the master and all workers
21
+ lastaction
22
+ pid=<%= fetch(:unicorn_pid) %>
23
+ test -s $pid && kill -USR1 "$(cat $pid)"
24
+ endscript
25
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-unicorn-nginx
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.0
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruben Stranders
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-09 00:00:00.000000000 Z
12
+ date: 2015-02-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
@@ -85,6 +85,7 @@ files:
85
85
  - lib/generators/capistrano/unicorn_nginx/config_generator.rb
86
86
  - lib/generators/capistrano/unicorn_nginx/templates/_default_server_directive.erb
87
87
  - lib/generators/capistrano/unicorn_nginx/templates/nginx_conf.erb
88
+ - lib/generators/capistrano/unicorn_nginx/templates/unicorn-logrotate.rb.erb
88
89
  - lib/generators/capistrano/unicorn_nginx/templates/unicorn.rb.erb
89
90
  - lib/generators/capistrano/unicorn_nginx/templates/unicorn_init.erb
90
91
  homepage: https://github.com/bruno-/capistrano-unicorn-nginx