greenonline_capistrano_recipes 0.0.16 → 0.0.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 434edc795057d242b372a35d090b29df5f080751
4
- data.tar.gz: 01f99b233b87bffb0485f825c7f8f238159bc7b9
3
+ metadata.gz: fc06dc50871c7fa243d970197926fa3d5ac8037d
4
+ data.tar.gz: 9def24afcf5b8393f9df18cbb34df0a7e32aa546
5
5
  SHA512:
6
- metadata.gz: bb40c37ff00534647f919b5ebbc78588be87fefaa804b511176469bbc53dfa77d73eb47ea1617769ec97ec02741dc8939f72a8b873ca7f7a7bb944f6db27896b
7
- data.tar.gz: cf51f6e80ed3228e06a410c04d8f4590c0f1a841ef9179402376500dde49d36cced86f983c8dc06179fa6b7b084e72a4c0e19810e41315b4a55bee72351c0a17
6
+ metadata.gz: 2864957e512235f7a62d08fd112d52ca724e46b92e20d0196c1aa0a77122724038be3a7923bea6090814c9b67e532f60e692e383c3c995e672ebac7627fb008e
7
+ data.tar.gz: 353c46b12cea3741c15df53dcea7af8bb0a58862cf1732517a756a369d113c6f0d5e31a912fef2303e341e6a11c47c43483f0b57adfcae3bb3085f15aeaf4108
@@ -1,5 +1,5 @@
1
1
  module Greenonline
2
2
  module CapistranoRecipes
3
- VERSION = "0.0.16"
3
+ VERSION = "0.0.17"
4
4
  end
5
5
  end
@@ -1,6 +1,10 @@
1
1
  module Capistrano
2
2
  Configuration.instance(true).load do
3
3
  set_default(:nginx_server_name, nil)
4
+ set_default(:nginx_ssl_enabled, false)
5
+ set_default(:nginx_ssl_path, '/etc/ssl/')
6
+ set_default(:nginx_ssl_key, nil)
7
+ set_default(:nginx_ssl_certificate, nil)
4
8
 
5
9
  namespace :nginx do
6
10
  desc "update latest nginx configuration"
@@ -50,4 +50,57 @@ server {
50
50
  error_page 500 502 503 504 /500.html;
51
51
  client_max_body_size 4G;
52
52
  keepalive_timeout 10;
53
- }
53
+ }
54
+
55
+ <% if nginx_ssl_enabled %>
56
+ server {
57
+ listen 443;
58
+
59
+ ssl on;
60
+ ssl_certificate <%= nginx_ssl_path %><%= nginx_ssl_certificate %>;
61
+ ssl_certificate_key <%= nginx_ssl_path %><%= nginx_ssl_key %>;
62
+
63
+ <% if nginx_server_name %>
64
+ server_name <%= nginx_server_name %>;
65
+ <% end %>
66
+ root <%= current_path %>/public;
67
+
68
+ location ^~ /assets/ {
69
+ gzip_static on;
70
+ expires max;
71
+ add_header Cache-Control public;
72
+ }
73
+
74
+ if (-f $document_root/maintenance.html) {
75
+ rewrite ^(.*)$ /maintenance.html last;
76
+ break;
77
+ }
78
+
79
+ try_files $uri/index.html $uri @unicorn;
80
+
81
+ location @unicorn {
82
+ proxy_set_header X-Forwarded-Proto https;
83
+ # an HTTP header important enough to have its own Wikipedia entry:
84
+ # http://en.wikipedia.org/wiki/X-Forwarded-For
85
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
86
+
87
+ # enable this if you forward HTTPS traffic to unicorn,
88
+ # this helps Rack set the proper URL scheme for doing redirects:
89
+ # proxy_set_header X-Forwarded-Proto $scheme;
90
+
91
+ # pass the Host: header from the client right along so redirects
92
+ # can be set properly within the Rack application
93
+ proxy_set_header Host $http_host;
94
+
95
+ # we don't want nginx trying to do something clever with
96
+ # redirects, we set the Host: header above already.
97
+ proxy_redirect off;
98
+
99
+ proxy_pass http://unicorn_<%= application.downcase %>_<%= stage %>;
100
+ }
101
+
102
+ error_page 500 502 503 504 /500.html;
103
+ client_max_body_size 4G;
104
+ keepalive_timeout 10;
105
+ }
106
+ <% end %>
@@ -29,8 +29,8 @@ before_fork do |server, worker|
29
29
  # we send it a QUIT.
30
30
  #
31
31
  # Using this method we get 0 downtime deploys.
32
-
33
- old_pid = File.join RAILS_ROOT, '<%= unicorn_pid %>.oldbin'
32
+
33
+ old_pid = '<%= unicorn_pid %>.oldbin'
34
34
  if File.exists?(old_pid) && server.pid != old_pid
35
35
  begin
36
36
  Process.kill("QUIT", File.read(old_pid).to_i)
@@ -20,14 +20,16 @@ CMD="<%= current_path %>/bin/unicorn -D -c <%= unicorn_config %> -E <%= stage %>
20
20
  AS_USER=<%= unicorn_user %>
21
21
  set -u
22
22
 
23
- OLD_PIN="$PID.oldbin"
23
+ OLD_PID="$PID.oldbin"
24
+
25
+ cd $APP_ROOT || exit 1
24
26
 
25
27
  sig () {
26
28
  test -s "$PID" && kill -$1 `cat $PID`
27
29
  }
28
30
 
29
31
  oldsig () {
30
- test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
32
+ test -s $OLD_PID && kill -$1 `cat $OLD_PID`
31
33
  }
32
34
 
33
35
  run () {
@@ -38,44 +40,89 @@ run () {
38
40
  fi
39
41
  }
40
42
 
43
+ workersig () {
44
+ workerpid="<%= current_path %>/tmp/pids/unicorn.worker.$2.pid"
45
+ test -s "$workerpid" && kill -$1 `cat $workerpid`
46
+ }
47
+
41
48
  case "$1" in
42
49
  start)
43
- sig 0 && echo >&2 "Already running" && exit 0
50
+ sig 0 && echo >&2 "Start failed: Unicorn already running! Exiting!" && exit 0
51
+ echo "Starting: "
44
52
  run "$CMD"
45
53
  ;;
46
54
  stop)
47
55
  sig QUIT && exit 0
48
- echo >&2 "Not running"
56
+ echo >&2 "Stop failed: Unicorn isn't running."
49
57
  ;;
50
58
  force-stop)
51
59
  sig TERM && exit 0
52
- echo >&2 "Not running"
60
+ echo >&2 "Force-stop failed: Unicorn isn't running"
53
61
  ;;
54
62
  restart|reload)
55
63
  sig HUP && echo reloaded OK && exit 0
56
- echo >&2 "Couldn't reload, starting '$CMD' instead"
64
+ echo >&2 "Reload failed: executing '$CMD' "
57
65
  run "$CMD"
58
66
  ;;
59
67
  upgrade)
60
- if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
68
+ if test -s $PID; then ORIG_PID=`cat $PID`; else ORIG_PID=0; fi
69
+
70
+ echo 'Original PID: ' $ORIG_PID
71
+
72
+ if sig USR2
61
73
  then
74
+ echo 'USR2 sent; Waiting for .oldbin'
62
75
  n=$TIMEOUT
63
- while test -s $OLD_PIN && test $n -ge 0
76
+
77
+ #wait for .oldpid to be written
78
+ while (!(test -s $OLD_PID) && test $n -ge 0)
79
+ do
80
+ printf '.' && sleep 1 && n=$(( $n - 1 ))
81
+ done
82
+
83
+ echo 'Waiting for new pid file'
84
+ #when this loop finishes, should have new pid file
85
+ while (!(test -s $PID ) || test -s $OLD_PID) && test $n -ge 0
64
86
  do
65
87
  printf '.' && sleep 1 && n=$(( $n - 1 ))
66
88
  done
67
- echo
68
89
 
69
- if test $n -lt 0 && test -s $OLD_PIN
90
+ if test -s $PID
70
91
  then
71
- echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
92
+ NEW_PID=`cat $PID`
93
+ else
94
+ echo 'New master failed to start; see error log'
72
95
  exit 1
73
96
  fi
97
+
98
+ #timeout has elapsed, verify new pid file exists
99
+ if [ $ORIG_PID -eq $NEW_PID ]
100
+ then
101
+ echo
102
+ echo >&2 'New master failed to start; see error log'
103
+ exit 1
104
+ fi
105
+
106
+ echo 'New PID: ' $NEW_PID
107
+
108
+ #verify old master QUIT
109
+ echo
110
+ if test -s $OLD_PID
111
+ then
112
+ echo >&2 "$OLD_PID still exists after $TIMEOUT seconds"
113
+ exit 1
114
+ fi
115
+
116
+ printf 'Unicorn successfully upgraded'
74
117
  exit 0
75
118
  fi
76
- echo >&2 "Couldn't upgrade, starting '$CMD' instead"
119
+ echo >&2 "Upgrade failed: executing '$CMD' "
77
120
  run "$CMD"
78
121
  ;;
122
+ kill_worker)
123
+ workersig QUIT $2 && exit 0
124
+ echo >&2 "Kill Worker failed: worker not running"
125
+ ;;
79
126
  reopen-logs)
80
127
  sig USR1
81
128
  ;;
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: greenonline_capistrano_recipes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pieter Visser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-14 00:00:00.000000000 Z
11
+ date: 2013-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler