capistrano-devops 0.0.11 → 0.0.12
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 +4 -4
- data/.gitignore +2 -1
- data/lib/capistrano/devops.rb +1 -0
- data/lib/capistrano/devops/templates/nginx_unicorn.erb +67 -0
- data/lib/capistrano/devops/templates/unicorn.erb +8 -0
- data/lib/capistrano/devops/templates/unicorn_init.erb +75 -0
- data/lib/capistrano/devops/unicorn.rb +1 -0
- data/lib/capistrano/devops/version.rb +1 -1
- data/lib/capistrano/tasks/unicorn.rake +35 -0
- metadata +15 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfc29117069157ffb1037420ffca03faf6a9c2be
|
4
|
+
data.tar.gz: c3bf2166efb877a9effe7f85a4161bfd8c138796
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5ceec8875da0cf59e3a904e4a21c2bf1927ec28a5607a21d574dac5372c5560f8401c482884066561a8c1338e252c38e34cc0473884d20f7d84cb95d64b8e81
|
7
|
+
data.tar.gz: fc6dfb5812cc3960a7ee64c4df8a681cb463801e1e683706f8dc7d9c136cb4735290b2521d8b0d4a6c87d64005f2688feee425b0e8982ebe4b351d38ffcf8833
|
data/.gitignore
CHANGED
data/lib/capistrano/devops.rb
CHANGED
@@ -4,6 +4,7 @@ require 'capistrano/devops/papertrail'
|
|
4
4
|
require 'capistrano/devops/nginx'
|
5
5
|
require 'capistrano/devops/redis'
|
6
6
|
require 'capistrano/devops/rainbows'
|
7
|
+
require 'capistrano/devops/unicorn'
|
7
8
|
require 'capistrano/devops/postgresql'
|
8
9
|
require 'capistrano/devops/ssh'
|
9
10
|
require 'capistrano/devops/utilities'
|
@@ -0,0 +1,67 @@
|
|
1
|
+
upstream backend_<%= fetch(:application) %> {
|
2
|
+
server unix:/tmp/unicorn.<%= fetch(:application) %>.sock fail_timeout=0;
|
3
|
+
}
|
4
|
+
|
5
|
+
server {
|
6
|
+
server_name <%= fetch(:server_name) %>;
|
7
|
+
listen 80 default deferred;
|
8
|
+
|
9
|
+
if (<%= fetch(:unicorn_force_ssl) %> = "true") {
|
10
|
+
if ($http_x_forwarded_proto = "http") {
|
11
|
+
return 301 https://$host$request_uri;
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
root <%= current_path %>/public;
|
16
|
+
|
17
|
+
location ^~ /assets/ {
|
18
|
+
gzip_static on;
|
19
|
+
expires max;
|
20
|
+
add_header Cache-Control public;
|
21
|
+
}
|
22
|
+
|
23
|
+
try_files $uri/index.html $uri @backend_<%= fetch(:application) %>;
|
24
|
+
location @backend_<%= fetch(:application) %> {
|
25
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
26
|
+
proxy_set_header Host $http_host;
|
27
|
+
proxy_set_header X-Real-IP $remote_addr;
|
28
|
+
proxy_redirect off;
|
29
|
+
proxy_pass http://backend_<%= fetch(:application) %>;
|
30
|
+
}
|
31
|
+
|
32
|
+
error_page 500 502 503 504 /500.html;
|
33
|
+
client_max_body_size 4G;
|
34
|
+
keepalive_timeout 10;
|
35
|
+
}
|
36
|
+
|
37
|
+
if (<%= fetch(:unicorn_force_ssl) %> = "true") {
|
38
|
+
server {
|
39
|
+
server_name <%= fetch(:server_name) %>;
|
40
|
+
listen 443;
|
41
|
+
|
42
|
+
ssl on;
|
43
|
+
ssl_certificate /etc/ssl/certs/<%= fetch(:server_name) %>.crt;
|
44
|
+
ssl_certificate_key /etc/ssl/private/server.key;
|
45
|
+
|
46
|
+
root <%= current_path %>/public;
|
47
|
+
|
48
|
+
location ^~ /assets/ {
|
49
|
+
gzip_static on;
|
50
|
+
expires max;
|
51
|
+
add_header Cache-Control public;
|
52
|
+
}
|
53
|
+
|
54
|
+
try_files $uri/index.html $uri @unicorn;
|
55
|
+
location @backend_<%= fetch(:application) %> {
|
56
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
57
|
+
proxy_set_header Host $http_host;
|
58
|
+
proxy_set_header X-Real-IP $remote_addr;
|
59
|
+
proxy_redirect off;
|
60
|
+
proxy_pass http://backend_<%= fetch(:application) %>;
|
61
|
+
}
|
62
|
+
|
63
|
+
error_page 500 502 503 504 /500.html;
|
64
|
+
client_max_body_size 4G;
|
65
|
+
keepalive_timeout 10;
|
66
|
+
}
|
67
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
working_directory "<%= current_path %>"
|
2
|
+
pid "<%= fetch(:unicorn_pid) %>"
|
3
|
+
stderr_path "<%= fetch(:unicorn_log) %>"
|
4
|
+
stdout_path "<%= fetch(:unicorn_log) %>"
|
5
|
+
|
6
|
+
listen "/tmp/unicorn.<%= fetch(:application) %>.sock"
|
7
|
+
worker_processes <%= fetch(:unicorn_workers) %>
|
8
|
+
timeout <%= fetch(:unicorn_timeout) %>
|
@@ -0,0 +1,75 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
set -e
|
3
|
+
|
4
|
+
# Feel free to change any of the following variables for your app:
|
5
|
+
TIMEOUT=${TIMEOUT-60}
|
6
|
+
APP_ROOT=<%= current_path %>
|
7
|
+
PID=<%= fetch(:unicorn_pid) %>
|
8
|
+
CMD="cd <%= current_path %>; bundle exec unicorn -D -c <%= fetch(:unicorn_config) -E <%= fetch(:rails_env, 'production') %>"
|
9
|
+
AS_USER=<%= fetch(:unicorn_user) %>
|
10
|
+
set -u
|
11
|
+
|
12
|
+
OLD_PIN="$PID.oldbin"
|
13
|
+
|
14
|
+
sig () {
|
15
|
+
test -s "$PID" && kill -$1 `cat $PID`
|
16
|
+
}
|
17
|
+
|
18
|
+
oldsig () {
|
19
|
+
test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
|
20
|
+
}
|
21
|
+
|
22
|
+
run () {
|
23
|
+
if [ "$(id -un)" = "$AS_USER" ]; then
|
24
|
+
eval $1
|
25
|
+
else
|
26
|
+
su -c "$1" - $AS_USER
|
27
|
+
fi
|
28
|
+
}
|
29
|
+
|
30
|
+
case "$1" in
|
31
|
+
start)
|
32
|
+
sig 0 && echo >&2 "Already running" && exit 0
|
33
|
+
run "$CMD"
|
34
|
+
;;
|
35
|
+
stop)
|
36
|
+
sig QUIT && exit 0
|
37
|
+
echo >&2 "Not running"
|
38
|
+
;;
|
39
|
+
force-stop)
|
40
|
+
sig TERM && exit 0
|
41
|
+
echo >&2 "Not running"
|
42
|
+
;;
|
43
|
+
restart|reload)
|
44
|
+
sig HUP && echo reloaded OK && exit 0
|
45
|
+
echo >&2 "Couldn't reload, starting '$CMD' instead"
|
46
|
+
run "$CMD"
|
47
|
+
;;
|
48
|
+
upgrade)
|
49
|
+
if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
|
50
|
+
then
|
51
|
+
n=$TIMEOUT
|
52
|
+
while test -s $OLD_PIN && test $n -ge 0
|
53
|
+
do
|
54
|
+
printf '.' && sleep 1 && n=$(( $n - 1 ))
|
55
|
+
done
|
56
|
+
echo
|
57
|
+
|
58
|
+
if test $n -lt 0 && test -s $OLD_PIN
|
59
|
+
then
|
60
|
+
echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
|
61
|
+
exit 1
|
62
|
+
fi
|
63
|
+
exit 0
|
64
|
+
fi
|
65
|
+
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
|
66
|
+
run "$CMD"
|
67
|
+
;;
|
68
|
+
reopen-logs)
|
69
|
+
sig USR1
|
70
|
+
;;
|
71
|
+
*)
|
72
|
+
echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
|
73
|
+
exit 1
|
74
|
+
;;
|
75
|
+
esac
|
@@ -0,0 +1 @@
|
|
1
|
+
load File.expand_path("../../tasks/unicorn.rake", __FILE__)
|
@@ -0,0 +1,35 @@
|
|
1
|
+
set :unicorn_user, ->{ fetch(:user) }
|
2
|
+
set :unicorn_pid, ->{ "#{current_path}/tmp/pids/unicorn.pid" }
|
3
|
+
set :unicorn_config, ->{ "#{shared_path}/config/unicorn.rb" }
|
4
|
+
set :unicorn_log, ->{ "#{shared_path}/log/unicorn.log" }
|
5
|
+
set :unicorn_workers, 8
|
6
|
+
set :unicorn_timeout, 30
|
7
|
+
set :unicorn_force_ssl, false
|
8
|
+
|
9
|
+
namespace :unicorn do
|
10
|
+
desc "Setup unicorn initializer and app configuration"
|
11
|
+
task :setup do
|
12
|
+
on roles :app do
|
13
|
+
execute :mkdir, "-p #{shared_path}/config"
|
14
|
+
|
15
|
+
template "unicorn_init.erb", "/tmp/unicorn_init"
|
16
|
+
template 'unicorn.erb', "#{fetch(:unicorn_config)}"
|
17
|
+
|
18
|
+
execute :chmod, "+x /tmp/unicorn_init"
|
19
|
+
as(:root) do
|
20
|
+
execute :mv, "/tmp/unicorn_init /etc/init.d/unicorn_#{fetch(:application)}"
|
21
|
+
execute :'update-rc.d', "-f unicorn_#{fetch(:application)} defaults"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
%w[start stop restart].each do |command|
|
27
|
+
desc "#{command} unicorn"
|
28
|
+
task command do
|
29
|
+
on roles(:app), in: :sequence, wait: 5 do
|
30
|
+
command_string = "unicorn_#{fetch(:application)} #{command}"
|
31
|
+
execute :service, command_string
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-devops
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tristan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: capistrano-bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
description: yay
|
@@ -45,7 +45,7 @@ executables: []
|
|
45
45
|
extensions: []
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
|
-
- .gitignore
|
48
|
+
- ".gitignore"
|
49
49
|
- Gemfile
|
50
50
|
- LICENSE.txt
|
51
51
|
- README.md
|
@@ -61,8 +61,12 @@ files:
|
|
61
61
|
- lib/capistrano/devops/redis.rb
|
62
62
|
- lib/capistrano/devops/ssh.rb
|
63
63
|
- lib/capistrano/devops/templates/nginx_rainbows.erb
|
64
|
+
- lib/capistrano/devops/templates/nginx_unicorn.erb
|
64
65
|
- lib/capistrano/devops/templates/rainbows.erb
|
65
66
|
- lib/capistrano/devops/templates/rainbows_init.erb
|
67
|
+
- lib/capistrano/devops/templates/unicorn.erb
|
68
|
+
- lib/capistrano/devops/templates/unicorn_init.erb
|
69
|
+
- lib/capistrano/devops/unicorn.rb
|
66
70
|
- lib/capistrano/devops/utilities.rb
|
67
71
|
- lib/capistrano/devops/version.rb
|
68
72
|
- lib/capistrano/tasks/nginx.rake
|
@@ -72,6 +76,7 @@ files:
|
|
72
76
|
- lib/capistrano/tasks/redis.rake
|
73
77
|
- lib/capistrano/tasks/set_rails_env.rake
|
74
78
|
- lib/capistrano/tasks/ssh.rake
|
79
|
+
- lib/capistrano/tasks/unicorn.rake
|
75
80
|
- lib/capistrano/tasks/utilities.rake
|
76
81
|
- sample_app/.gitignore
|
77
82
|
- sample_app/Capfile
|
@@ -140,17 +145,17 @@ require_paths:
|
|
140
145
|
- lib
|
141
146
|
required_ruby_version: !ruby/object:Gem::Requirement
|
142
147
|
requirements:
|
143
|
-
- -
|
148
|
+
- - ">="
|
144
149
|
- !ruby/object:Gem::Version
|
145
150
|
version: '0'
|
146
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
152
|
requirements:
|
148
|
-
- -
|
153
|
+
- - ">="
|
149
154
|
- !ruby/object:Gem::Version
|
150
155
|
version: '0'
|
151
156
|
requirements: []
|
152
157
|
rubyforge_project:
|
153
|
-
rubygems_version: 2.
|
158
|
+
rubygems_version: 2.2.2
|
154
159
|
signing_key:
|
155
160
|
specification_version: 4
|
156
161
|
summary: yay
|