capistrano-pumaio 3.0.3 → 3.1.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: 6eba443a7557705de098dc57c7ddc04cff4d1fee
4
- data.tar.gz: 769107845b57cda95938bf49e35633be0daee2fe
3
+ metadata.gz: a76626d7c63be2c1cc1c3ed05768b81db37fedb9
4
+ data.tar.gz: 6900bdcdf0015d351c7490aa442deebc3bfeb8c2
5
5
  SHA512:
6
- metadata.gz: 5398079d4eb19c45fac8dfa43619c2a6c2ced936ab4fa036b33688fd8d94dd7bafcb45773393fbe7bec48f00228fc871eba9cf7ac1133741371e20778f4183cb
7
- data.tar.gz: e5df0905abd18cb1aceeedce28821fe9871afbec9978afe7be2e28a0b70d4d6b49ecab871c7877ee55ae606e75a2a232734b8d4426109b1a8a8175a072ed05e9
6
+ metadata.gz: 504c3b284df8023af5a8c2b3aa57ff7730773b18d76a59d1e3b2407fd575b5c6fd114c7dd8e43664039775830f582505f552fca85112568608a39c66b63970e8
7
+ data.tar.gz: c5c1756365e7f38b02fc1f54a5dce6591ada8a38c5a709cbf9708899cedb4cf496ea9f769fcd05d5334f3afb240132e635bf7532298a3bed6387152fa67d4822
data/Gemfile CHANGED
@@ -1,10 +1,10 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'capistrano', '~> 3.4'
4
- gem 'activesupport', '>= 3.0'
5
- gem 'capistrano-monit_runit', '~> 3.0.2'
6
-
7
- group :development do
8
- gem 'bundler', '~> 1.7'
9
- gem 'jeweler', '~> 2.0'
10
- end
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'capistrano', '~> 3.4'
4
+ gem 'activesupport', '>= 4.0'
5
+ gem 'capistrano-monit_runit', '~> 3.1.0'
6
+
7
+ group :development do
8
+ gem 'bundler', '~> 1.7'
9
+ gem 'juwelier'
10
+ end
@@ -1,39 +1,38 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- activesupport (4.2.0)
4
+ activesupport (4.2.6)
5
5
  i18n (~> 0.7)
6
6
  json (~> 1.7, >= 1.7.7)
7
7
  minitest (~> 5.1)
8
8
  thread_safe (~> 0.3, >= 0.3.4)
9
9
  tzinfo (~> 1.1)
10
- addressable (2.3.7)
10
+ addressable (2.4.0)
11
11
  builder (3.2.2)
12
12
  capistrano (3.4.0)
13
13
  i18n
14
14
  rake (>= 10.0.0)
15
15
  sshkit (~> 1.3)
16
- capistrano-monit_runit (3.0.2)
17
- activesupport (>= 3.0)
16
+ capistrano-monit_runit (3.1.0)
17
+ activesupport (>= 4.0)
18
18
  capistrano (~> 3.4)
19
- colorize (0.7.5)
20
19
  descendants_tracker (0.0.4)
21
20
  thread_safe (~> 0.3, >= 0.3.1)
22
- faraday (0.9.1)
21
+ faraday (0.9.2)
23
22
  multipart-post (>= 1.2, < 3)
24
- git (1.2.9.1)
25
- github_api (0.12.3)
26
- addressable (~> 2.3)
23
+ git (1.3.0)
24
+ github_api (0.13.1)
25
+ addressable (~> 2.4.0)
27
26
  descendants_tracker (~> 0.0.4)
28
27
  faraday (~> 0.8, < 0.10)
29
- hashie (>= 3.3)
28
+ hashie (>= 3.4)
30
29
  multi_json (>= 1.7.5, < 2.0)
31
- nokogiri (~> 1.6.3)
32
30
  oauth2
33
- hashie (3.4.0)
34
- highline (1.7.1)
31
+ hashie (3.4.3)
32
+ highline (1.7.8)
35
33
  i18n (0.7.0)
36
- jeweler (2.0.1)
34
+ json (1.8.3)
35
+ juwelier (2.1.0)
37
36
  builder
38
37
  bundler (>= 1.0)
39
38
  git (>= 1.2.5)
@@ -42,29 +41,28 @@ GEM
42
41
  nokogiri (>= 1.5.10)
43
42
  rake
44
43
  rdoc
45
- json (1.8.2)
46
- jwt (1.4.1)
47
- mini_portile (0.6.2)
48
- minitest (5.5.1)
49
- multi_json (1.11.0)
44
+ jwt (1.5.1)
45
+ mini_portile2 (2.0.0)
46
+ minitest (5.8.4)
47
+ multi_json (1.11.2)
50
48
  multi_xml (0.5.5)
51
49
  multipart-post (2.0.0)
52
50
  net-scp (1.2.1)
53
51
  net-ssh (>= 2.6.5)
54
- net-ssh (2.9.2)
55
- nokogiri (1.6.6.2)
56
- mini_portile (~> 0.6.0)
57
- oauth2 (1.0.0)
52
+ net-ssh (3.0.2)
53
+ nokogiri (1.6.7.2)
54
+ mini_portile2 (~> 2.0.0.rc2)
55
+ oauth2 (1.1.0)
58
56
  faraday (>= 0.8, < 0.10)
59
- jwt (~> 1.0)
57
+ jwt (~> 1.0, < 1.5.2)
60
58
  multi_json (~> 1.3)
61
59
  multi_xml (~> 0.5)
62
- rack (~> 1.2)
63
- rack (1.6.0)
64
- rake (10.4.2)
65
- rdoc (4.2.0)
66
- sshkit (1.7.1)
67
- colorize (>= 0.7.0)
60
+ rack (>= 1.2, < 3)
61
+ rack (1.6.4)
62
+ rake (11.1.1)
63
+ rdoc (4.2.2)
64
+ json (~> 1.4)
65
+ sshkit (1.9.0)
68
66
  net-scp (>= 1.1.2)
69
67
  net-ssh (>= 2.8.0)
70
68
  thread_safe (0.3.5)
@@ -75,8 +73,11 @@ PLATFORMS
75
73
  ruby
76
74
 
77
75
  DEPENDENCIES
78
- activesupport (>= 3.0)
76
+ activesupport (>= 4.0)
79
77
  bundler (~> 1.7)
80
78
  capistrano (~> 3.4)
81
- capistrano-monit_runit (~> 3.0.2)
82
- jeweler (~> 2.0)
79
+ capistrano-monit_runit (~> 3.1.0)
80
+ juwelier
81
+
82
+ BUNDLED WITH
83
+ 1.11.2
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Capistrano Recipes for Puma
2
2
 
3
- This gem provides recipes for [Puma](http://puma.io) to setup [runit](http://smarden.org/runit/), [monit](http://mmonit.com/monit) and [nginx](http://nginx.org) for both running and monitoring puma and a nginx site connected to a puma socket
3
+ This gem provides recipes for [Puma](http://puma.io) to setup [runit](http://smarden.org/runit/) and [monit](http://mmonit.com/monit) for both running and monitoring puma
4
4
 
5
5
  ## Versioning
6
6
 
@@ -25,14 +25,6 @@ Add this to your Capfile:
25
25
  require 'capistrano/puma'
26
26
  ```
27
27
 
28
- Create a new file in in /etc/sudoers.d/ and add the output of the following commands:
29
-
30
- ```
31
- cap production runit:sudoers
32
- cap production monit:sudoers
33
- cap production puma:nginx:sudoers
34
- ```
35
-
36
28
  ### Monit
37
29
 
38
30
  ```ruby
@@ -98,40 +90,9 @@ before "monit:monitor", "puma:runit:restart"
98
90
 
99
91
  ### nginx
100
92
 
101
- #### Specific to puma and nginx for the application:
102
-
103
- ```ruby
104
- cap puma:nginx:disable # Disable nginx site for the application
105
- cap puma:nginx:enable # Enable nginx site for the application
106
- cap puma:nginx:purge # Purge nginx site config for the application
107
- cap puma:nginx:setup # Parses and uploads nginx configuration for this app.
108
- ```
109
-
110
- #### Global nginx commands
111
-
112
- ```ruby
113
- cap nginx:restart # Restart nginx
114
- cap nginx:start # Start nginx
115
- cap nginx:status # Show nginx status
116
- cap nginx:stop # Stop nginx
117
- ```
118
-
119
- #### Configuration for nginx
120
-
121
- See nginx.rb for configuration options.
122
-
123
- #### Notes when using nginx
124
-
125
-
126
- You have to run ``` cap production puma:nginx:setup ``` to automatically setup nginx.
127
-
128
- If you do not enable the site during setup, be sure to run the following two commands when you want to enable your site:
129
-
130
- ```ruby
131
- cap puma:nginx:enable
132
- cap nginx:restart
133
- ```
93
+ This has been removed, because it is better practice to setup nginx should as part of your infrastructure.
134
94
 
95
+ Most likely you have one or more load balancer and several app servers.
135
96
 
136
97
  ## Configuration of Monit/Runit
137
98
 
data/Rakefile CHANGED
@@ -11,14 +11,14 @@ rescue Bundler::BundlerError => e
11
11
  end
12
12
  require 'rake'
13
13
 
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
14
+ require 'juwelier'
15
+ Juwelier::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
17
  gem.name = 'capistrano-pumaio'
18
18
  gem.homepage = 'https://github.com/leifcr/capistrano-puma'
19
19
  gem.license = 'MIT'
20
20
  gem.summary = 'Capistrano recipes for puma using runit and monit'
21
- gem.description = 'Capistrano recipes for puma using runit and monit. Includes nginx recipes for the app server.'
21
+ gem.description = 'Capistrano recipes for puma using runit and monit.'
22
22
  gem.email = 'leifcr@gmail.com'
23
23
  gem.authors = ['Leif Ringstad']
24
24
  gem.files.exclude '.ruby-*'
@@ -26,7 +26,7 @@ Jeweler::Tasks.new do |gem|
26
26
  gem.files.exclude '.rubocop.yml'
27
27
  # dependencies defined in Gemfile
28
28
  end
29
- Jeweler::RubygemsDotOrgTasks.new
29
+ Juwelier::RubygemsDotOrgTasks.new
30
30
 
31
31
  # require 'rdoc/task'
32
32
  # Rake::RDocTask.new do |rdoc|
@@ -36,4 +36,4 @@ Jeweler::RubygemsDotOrgTasks.new
36
36
  # rdoc.title = 'capistrano-empty #{version}'
37
37
  # rdoc.rdoc_files.include('README*')
38
38
  # rdoc.rdoc_files.include('lib/**/*.rb')
39
- # end
39
+ # end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.3
1
+ 3.1.1
@@ -1,18 +1,18 @@
1
- # Generated by jeweler
1
+ # Generated by juwelier
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
3
+ # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: capistrano-pumaio 3.0.3 ruby lib
5
+ # stub: capistrano-pumaio 3.1.1 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "capistrano-pumaio"
9
- s.version = "3.0.3"
9
+ s.version = "3.1.1"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib"]
13
13
  s.authors = ["Leif Ringstad"]
14
- s.date = "2015-10-28"
15
- s.description = "Capistrano recipes for puma using runit and monit. Includes nginx recipes for the app server."
14
+ s.date = "2016-03-18"
15
+ s.description = "Capistrano recipes for puma using runit and monit."
16
16
  s.email = "leifcr@gmail.com"
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
@@ -27,17 +27,12 @@ Gem::Specification.new do |s|
27
27
  "VERSION",
28
28
  "capistrano-pumaio.gemspec",
29
29
  "lib/capistrano/helpers/puma/monit.rb",
30
- "lib/capistrano/helpers/puma/nginx.rb",
31
30
  "lib/capistrano/helpers/puma/template_paths.rb",
32
31
  "lib/capistrano/puma.rb",
33
32
  "lib/capistrano/tasks/config.rake",
34
33
  "lib/capistrano/tasks/monit.rake",
35
- "lib/capistrano/tasks/nginx.rake",
36
- "lib/capistrano/tasks/nginx_config.rake",
37
34
  "lib/capistrano/tasks/runit.rake",
38
35
  "templates/monit/puma.conf.erb",
39
- "templates/nginx/application.conf.erb",
40
- "templates/nginx/htpasswd.erb",
41
36
  "templates/puma-config.rb.erb",
42
37
  "templates/runit/control/q.erb",
43
38
  "templates/runit/finish.erb",
@@ -46,7 +41,7 @@ Gem::Specification.new do |s|
46
41
  ]
47
42
  s.homepage = "https://github.com/leifcr/capistrano-puma"
48
43
  s.licenses = ["MIT"]
49
- s.rubygems_version = "2.4.6"
44
+ s.rubygems_version = "2.5.1"
50
45
  s.summary = "Capistrano recipes for puma using runit and monit"
51
46
 
52
47
  if s.respond_to? :specification_version then
@@ -54,23 +49,23 @@ Gem::Specification.new do |s|
54
49
 
55
50
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
56
51
  s.add_runtime_dependency(%q<capistrano>, ["~> 3.4"])
57
- s.add_runtime_dependency(%q<activesupport>, [">= 3.0"])
58
- s.add_runtime_dependency(%q<capistrano-monit_runit>, ["~> 3.0.2"])
52
+ s.add_runtime_dependency(%q<activesupport>, [">= 4.0"])
53
+ s.add_runtime_dependency(%q<capistrano-monit_runit>, ["~> 3.1.0"])
59
54
  s.add_development_dependency(%q<bundler>, ["~> 1.7"])
60
- s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
55
+ s.add_development_dependency(%q<juwelier>, [">= 0"])
61
56
  else
62
57
  s.add_dependency(%q<capistrano>, ["~> 3.4"])
63
- s.add_dependency(%q<activesupport>, [">= 3.0"])
64
- s.add_dependency(%q<capistrano-monit_runit>, ["~> 3.0.2"])
58
+ s.add_dependency(%q<activesupport>, [">= 4.0"])
59
+ s.add_dependency(%q<capistrano-monit_runit>, ["~> 3.1.0"])
65
60
  s.add_dependency(%q<bundler>, ["~> 1.7"])
66
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
61
+ s.add_dependency(%q<juwelier>, [">= 0"])
67
62
  end
68
63
  else
69
64
  s.add_dependency(%q<capistrano>, ["~> 3.4"])
70
- s.add_dependency(%q<activesupport>, [">= 3.0"])
71
- s.add_dependency(%q<capistrano-monit_runit>, ["~> 3.0.2"])
65
+ s.add_dependency(%q<activesupport>, [">= 4.0"])
66
+ s.add_dependency(%q<capistrano-monit_runit>, ["~> 3.1.0"])
72
67
  s.add_dependency(%q<bundler>, ["~> 1.7"])
73
- s.add_dependency(%q<jeweler>, ["~> 2.0"])
68
+ s.add_dependency(%q<juwelier>, [">= 0"])
74
69
  end
75
70
  end
76
71
 
@@ -6,16 +6,8 @@ def try_require(library)
6
6
  end
7
7
  end
8
8
 
9
- # try_require 'tasks/config.rake'
10
- # try_require 'tasks/monit.rake'
11
- # try_require 'tasks/runit.rake'
12
- # try_require 'tasks/nginx_config.rake'
13
- # try_require 'tasks/nginx.rake'
14
- # try_require 'tasks/.rake'
15
9
  try_require 'capistrano/monit'
16
10
  try_require 'capistrano/runit'
17
11
  load File.expand_path('../tasks/config.rake', __FILE__)
18
12
  load File.expand_path('../tasks/monit.rake', __FILE__)
19
13
  load File.expand_path('../tasks/runit.rake', __FILE__)
20
- load File.expand_path('../tasks/nginx_config.rake', __FILE__)
21
- load File.expand_path('../tasks/nginx.rake', __FILE__)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-pumaio
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.3
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leif Ringstad
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-28 00:00:00.000000000 Z
11
+ date: 2016-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '3.0'
33
+ version: '4.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
- version: '3.0'
40
+ version: '4.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: capistrano-monit_runit
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 3.0.2
47
+ version: 3.1.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 3.0.2
54
+ version: 3.1.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -67,21 +67,20 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.7'
69
69
  - !ruby/object:Gem::Dependency
70
- name: jeweler
70
+ name: juwelier
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: '2.0'
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '2.0'
83
- description: Capistrano recipes for puma using runit and monit. Includes nginx recipes
84
- for the app server.
82
+ version: '0'
83
+ description: Capistrano recipes for puma using runit and monit.
85
84
  email: leifcr@gmail.com
86
85
  executables: []
87
86
  extensions: []
@@ -97,17 +96,12 @@ files:
97
96
  - VERSION
98
97
  - capistrano-pumaio.gemspec
99
98
  - lib/capistrano/helpers/puma/monit.rb
100
- - lib/capistrano/helpers/puma/nginx.rb
101
99
  - lib/capistrano/helpers/puma/template_paths.rb
102
100
  - lib/capistrano/puma.rb
103
101
  - lib/capistrano/tasks/config.rake
104
102
  - lib/capistrano/tasks/monit.rake
105
- - lib/capistrano/tasks/nginx.rake
106
- - lib/capistrano/tasks/nginx_config.rake
107
103
  - lib/capistrano/tasks/runit.rake
108
104
  - templates/monit/puma.conf.erb
109
- - templates/nginx/application.conf.erb
110
- - templates/nginx/htpasswd.erb
111
105
  - templates/puma-config.rb.erb
112
106
  - templates/runit/control/q.erb
113
107
  - templates/runit/finish.erb
@@ -133,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
127
  version: '0'
134
128
  requirements: []
135
129
  rubyforge_project:
136
- rubygems_version: 2.4.6
130
+ rubygems_version: 2.5.1
137
131
  signing_key:
138
132
  specification_version: 4
139
133
  summary: Capistrano recipes for puma using runit and monit
@@ -1,18 +0,0 @@
1
- module Capistrano
2
- module Helpers
3
- module Puma
4
- ##
5
- # Module Nginx provides helper functions for nginx configuration
6
- ##
7
- module Nginx
8
- module_function
9
-
10
- def default_pw_generator
11
- pw = SecureRandom.random_number(36**10).to_s(36).rjust(10, '0')
12
- info "Random password generated: #{pw}"
13
- pw
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,119 +0,0 @@
1
- require 'capistrano/dsl/base_paths'
2
- require 'capistrano/helpers/base'
3
- require 'capistrano/helpers/puma/nginx'
4
- include Capistrano::DSL::BasePaths
5
- include Capistrano::Helpers::Base
6
- include Capistrano::Helpers::Puma::Nginx
7
-
8
- namespace :puma do
9
- namespace :nginx do
10
- desc 'Get the config needed to add to sudoers for nginx commands'
11
- task :sudoers do
12
- run_locally do
13
- puts '#---------------ENTRIES FOR SUDOERS (Nginx)---------------------'
14
- puts "#{fetch(:user)} ALL=NOPASSWD: /bin/mkdir -p #{fetch(:nginx_log_path)}"
15
- puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chown -R #{fetch(:user)}\\:root #{fetch(:nginx_log_path)}"
16
- puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chmod 6775 #{fetch(:nginx_log_path)}"
17
- puts "#{fetch(:user)} ALL=NOPASSWD: /bin/chown #{fetch(:user)}\\:root #{fetch(:nginx_sites_enabled_path)}"
18
- puts "#{fetch(:user)} ALL=NOPASSWD: /usr/sbin/service nginx *"
19
- puts '#---------------------------------------------------------------'
20
- end
21
- # info "#{fetch(:user)} ALL=NOPASSWD: /bin/chown deploy:root #{monit_monitrc_file}"
22
- end
23
-
24
- desc 'Generates and uploads nginx configuration for this app to the App server(s)'
25
- # task :setup, :roles => :app , :except => { :no_release => true } do
26
- task :setup do
27
- # Will setup nginx on the application server, as single-host app/web server is used behind load balancer
28
- # Nginx is used for talking over socket to puma instead of opening puma to the 'world'
29
- on roles(:app) do |host|
30
- info "NGINX: Setting up for puma for #{fetch(:application)} on #{host}"
31
- upload! template_to_s_io(fetch(:nginx_config_template)), fetch(:nginx_remote_config)
32
- if (fetch(:nginx_use_simple_auth)) || fetch(:nginx_ssl_use_simple_auth)
33
- set :pw, ask('', '')
34
- set :create_httpwd, ask('Create .httpasswd configuration file [Yn]', 'Y')
35
- # if auth is enabled, upload htpasswd file
36
- # Since passwords are stored in plaintext in the deployment file, you should use simple auth with care.
37
- # It is generally better to implement a full authorization stack like oauth, use devise on rails,
38
- # or other login/auth system
39
- if fetch(:create_httpwd)
40
- set :nginx_simple_auth_password, default_pw_generator if fetch(:nginx_simple_auth_password).nil?
41
- upload! template_to_s_io(fetch(:nginx_htpasswd_template)), fetch(:nginx_remote_htpasswd)
42
- else
43
- set :nginx_use_simple_auth, false
44
- set :nginx_ssl_use_simple_auth, false
45
- end
46
- end
47
- # create log path
48
- # /var/log/nginx must be writable by 'deploy' user, usually this can be acomplished by adding the deploy user to
49
- # the www-data group
50
- execute :sudo, :mkdir, "-p #{fetch(:nginx_log_path)}"
51
- execute :sudo, :chown, "-R #{fetch(:user)}:root #{fetch(:nginx_log_path)}"
52
- execute :sudo, :chmod, "6775 #{fetch(:nginx_log_path)}"
53
- execute :mkdir, "-p #{fetch(:nginx_app_log_path)}"
54
- end
55
- end
56
-
57
- desc 'Enable nginx site for the application'
58
- task :enable do
59
- on roles(:app) do |host|
60
- if test("[ ! -h #{fetch(:nginx_sites_enabled_symlink)} ]")
61
- info "NGINX: Enabling application #{fetch(:application)} on #{host}"
62
- # Make sure deploy user can symlink site
63
- execute :sudo, :chown, "#{fetch(:user)}:root #{fetch(:nginx_sites_enabled_path)}"
64
- execute :ln, "-sf #{fetch(:nginx_remote_config)} #{fetch(:nginx_sites_enabled_symlink)}"
65
- else
66
- info "NGINX: Already enabled application #{fetch(:application)} on #{host}"
67
- end
68
- end
69
- end
70
-
71
- desc 'Disable nginx site for the application'
72
- task :disable do
73
- on roles(:app) do |host|
74
- if test("[ -h #{fetch(:nginx_sites_enabled_symlink)} ]")
75
- info "NGINX: Disabling application #{fetch(:application)} on #{host}"
76
- # Make sure deploy user can unsymlink site
77
- execute :sudo, :chown, "#{fetch(:user)}:root #{fetch(:nginx_sites_enabled_path)}"
78
- execute :rm, "-f #{fetch(:nginx_sites_enabled_symlink)}"
79
- else
80
- info "NGINX: Already disabled application #{fetch(:application)} on #{host}"
81
- end
82
- end
83
- end
84
-
85
- desc 'Purge nginx site config for the application'
86
- task :purge do
87
- on roles(:app) do |host|
88
- info "NGINX: Purging configuration for #{fetch(:application)} on #{host}"
89
- execute :rm, "-f #{fetch(:nginx_sites_enabled_symlink)}" if test("[ -h #{fetch(:nginx_sites_enabled_symlink)} ]")
90
- execute :rm, "-f #{fetch(:nginx_remote_htpasswd)}"
91
- execute :rm, "-f #{fetch(:nginx_remote_config)}"
92
- # must restart nginx to make sure site is disabled when config is purge
93
- execute :sudo, :service, 'nginx restart'
94
- end
95
- end
96
- end
97
- end
98
-
99
- namespace :nginx do
100
- %w(start stop restart status).each do |nginx_cmd|
101
- desc "Nginx/Puma: #{nginx_cmd.capitalize}"
102
- task nginx_cmd.to_sym do
103
- on roles(:app) do |host|
104
- info "NGINX: Performing #{nginx_cmd} for #{fetch(:application)} on #{host}"
105
- execute :sudo, :service, "nginx #{nginx_cmd}"
106
- end
107
- end
108
- end
109
- end
110
-
111
- # after 'deploy:setup' do
112
- # puma.nginx.setup if Capistrano::CLI.ui.agree("Create nginx configuration file? [Yn]")
113
- # if Capistrano::CLI.ui.agree("Enable site in nginx? [Yn]")
114
- # puma.nginx.enable
115
- # nginx.restart # must restart after enable for nginx to pickup new site
116
- # end
117
- # end
118
-
119
- after 'sudoers', 'puma:nginx:sudoers'
@@ -1,63 +0,0 @@
1
- require 'active_support'
2
- require 'active_support/core_ext/string/filters'
3
- require 'capistrano/helpers/puma/template_paths'
4
- require 'capistrano/helpers/base'
5
- include Capistrano::Helpers::Base
6
-
7
- namespace :load do
8
- task :defaults do
9
- # Where your nginx lives. Usually /opt/nginx or /usr/local/nginx for source compiled.
10
- set :nginx_sites_enabled_path, '/etc/nginx/sites-enabled'
11
-
12
- # simple authorization in nginx recipe
13
- # Remember NOT to share your deployment file in case you have sensitive passwords stored in it...
14
- # This is added to make it easier to deploy staging sites with a simple htpasswd.
15
-
16
- set :nginx_use_simple_auth, false
17
- set :nginx_simple_auth_message, 'Restricted site'
18
- set :nginx_simple_auth_user, 'user'
19
- set :nginx_simple_auth_password, nil # if set to nil, it will automatically be generated
20
- set :nginx_simple_auth_salt, (0...8).map { ('a'..'z').to_a[rand(26)] }.join
21
-
22
- # Server names. Defaults to application name.
23
- set :server_names, proc { app_env_underscore }
24
-
25
- # Path to the nginx erb template to be parsed before uploading to remote
26
- set :nginx_config_template, File.join(Capistrano::Helpers::Puma::TemplatePaths.template_base_path, 'nginx', 'application.conf.erb') # rubocop:disable Metrics/LineLength
27
-
28
- # Path to where your remote config will reside (I use a directory sites inside conf)
29
- set :nginx_remote_config, proc { shared_path.join('config', "nginx_#{app_env_underscore}.conf") }
30
-
31
- # Path to local htpasswd template file
32
- set :nginx_htpasswd_template, File.join(Capistrano::Helpers::Puma::TemplatePaths.template_base_path, 'nginx', 'htpasswd.erb')
33
-
34
- # Path to remote htpasswd file
35
- set :nginx_remote_htpasswd, proc { shared_path.join('config', '.htpasswd') }
36
-
37
- set :nginx_sites_enabled_symlink, proc { File.join(fetch(:nginx_sites_enabled_path), app_env_underscore) }
38
-
39
- set :nginx_uses_http, true
40
- set :nginx_uses_ssl, false
41
- set :nginx_port, 80
42
-
43
- set :nginx_log_path, proc { File.join('/var', 'log', 'nginx') }
44
-
45
- set :nginx_app_log_path, proc { File.join(fetch(:nginx_log_path), fetch(:application).squish.downcase.gsub(/[\s|-]/, '_')) }
46
-
47
- set :nginx_client_max_body_size, '10M'
48
-
49
- set :nginx_ssl_port, 443
50
- set :nginx_ssl_use_simple_auth, false
51
- set :nginx_ssl_client_max_body_size, '10M'
52
- set :nginx_ssl_public_crt, File.join('/etc', 'certs', 'server.crt')
53
- set :nginx_ssl_private_key, File.join('/etc', 'certs', 'server.key')
54
-
55
- set :nginx_puma_server_url, proc { "unix:#{fetch(:puma_socket_file)}" }
56
- set :nginx_puma_server_timeout, proc { 'fail_timeout=0' }
57
-
58
- # Supply a block of text to add to the nginx config file before hitting puma server (rewrites etc)
59
- set :nginx_extra_rules, nil
60
- # Same as above but for ssl
61
- set :nginx_extra_rules_ssl, nil
62
- end
63
- end
@@ -1,184 +0,0 @@
1
- # Nginx configuration
2
- # <%= "#{fetch(:application)} running as #{fetch(:user)} in environment #{environment}" %>
3
- # <%
4
- upstream_name = "#{fetch(:application)}_#{environment}_app_server"
5
- upstream_name_ssl = "#{fetch(:application)}_#{environment}_app_server_ssl"
6
- %>
7
- #
8
-
9
- upstream <%= upstream_name %> {
10
- server <%= fetch(:nginx_puma_server_url) %> <%= fetch(:nginx_puma_server_timeout) %>;
11
- }
12
-
13
- <% if fetch(:nginx_uses_http) %>
14
- #
15
- # HTTP server configuration
16
- #
17
- server {
18
- listen <%= fetch(:nginx_port) %>;
19
- client_max_body_size <%= fetch(:nginx_client_max_body_size) %>;
20
- server_name <%= fetch(:server_names) %>;
21
-
22
- # ~2 seconds is often enough for most folks to parse HTML/CSS and
23
- # retrieve needed images/icons/frames, connections are cheap in
24
- # nginx so increasing this is generally safe...
25
- # 8 seconds might be needed for some mobile devs
26
- keepalive_timeout 8;
27
-
28
- # path for static files
29
- root <%= fetch(:deploy_to) %>/current/public;
30
- access_log <%= fetch(:nginx_app_log_path) %>/<%= environment %>.access.log;
31
- error_log <%= fetch(:nginx_app_log_path) %>/<%= environment %>.error.log info;
32
-
33
- # this rewrites all the requests to the maintenance.html
34
- # page if it exists in the doc root. This is for capistrano's
35
- # disable web task
36
- if (-f $document_root/system/maintenance.html) {
37
- rewrite ^(.*)$ /system/maintenance.html last;
38
- break;
39
- }
40
-
41
- location / {
42
- <% if fetch(:nginx_use_simple_auth) %>
43
- auth_basic "<%= fetch(:nginx_simple_auth_message) %>";
44
- auth_basic_user_file <%= fetch(:nginx_remote_htpasswd) %>;
45
- <% end %>
46
-
47
- # needed to forward user's IP address to rails
48
- proxy_set_header X-Real-IP $remote_addr;
49
-
50
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
51
- proxy_set_header Host $http_host;
52
-
53
- # if the request is for a static resource, nginx should serve it directly
54
- # and add a far future expires header to it, making the browser
55
- # cache the resource and navigate faster over the website.
56
- location ~ ^/(assets)/.+-([0-9a-zA-Z])+\. {
57
- gzip_static on;
58
- expires max;
59
- add_header Cache-Control public;
60
- }
61
-
62
- # Serve images outside the asset path
63
- # Now this supposedly should work as it gets the filenames with querystrings that Rails provides.
64
- # BUT there's a chance it could break the ajax calls.
65
- location ~* \.(ico|css|gif|jpe?g|png)(\?[0-9]+)?$ {
66
- expires max;
67
- }
68
-
69
- # Serve javascript outside the asset path
70
- location ~ ^/javascripts/.*\.js(\?[0-9]+)?$ {
71
- expires max;
72
- }
73
-
74
- # If the file exists as a static file serve it directly without
75
- # running all the other rewrite tests on it
76
- if (-f $request_filename) {
77
- break;
78
- }
79
-
80
- <%= fetch(:nginx_extra_rules) unless fetch(:nginx_extra_rules).nil? %>
81
-
82
- if (!-f $request_filename) {
83
- proxy_pass http://<%= upstream_name %>;
84
- break;
85
- }
86
- }
87
-
88
- # Rails error pages
89
- error_page 500 502 503 504 /500.html;
90
- location = /500.html {
91
- root <%= fetch(:deploy_to) %>/current/public;
92
- }
93
- }
94
- <% end %>
95
-
96
- <% if fetch(:nginx_uses_ssl) %>
97
- #
98
- # HTTPs server configuration
99
- #
100
- upstream <%= upstream_name_ssl %> {
101
- server <%= fetch(:nginx_puma_server_url) %> <%= fetch(:nginx_puma_server_timeout) %>;
102
- }
103
-
104
- # This server is setup for ssl. Uncomment if
105
- # you are using ssl as well as port 80.
106
- server {
107
- listen <%= fetch(:nginx_ssl_port) %>;
108
- server_name <%= fetch(:server_names) %>;
109
- ssl on;
110
- ssl_certificate <%= fetch(:nginx_ssl_public_crt) %>;
111
- ssl_certificate_key <%= fetch(:nginx_ssl_private_key) %>;
112
- ssl_session_timeout 5m;
113
- client_max_body_size <%= fetch(:nginx_ssl_client_max_body_size) %>;
114
-
115
- root <%= fetch(:deploy_to) %>/current/public;
116
- access_log <%= fetch(:nginx_app_log_path) %>/<%= environment %>_ssl.access.log;
117
- error_log <%= fetch(:nginx_app_log_path) %>/<%= environment %>_ssl.error.log info;
118
-
119
- # this rewrites all the requests to the maintenance.html
120
- # page if it exists in the doc root. This is for capistrano's
121
- # disable web task
122
- if (-f $document_root/system/maintenance.html) {
123
- rewrite ^(.*)$ /system/maintenance.html last;
124
- break;
125
- }
126
-
127
- location / {
128
- <% if fetch(:nginx_ssl_use_simple_auth) %>
129
- auth_basic "<%= fetch(:nginx_simple_auth_message) %>";
130
- auth_basic_user_file <%= fetch(:nginx_remote_htpasswd) %>;
131
- <% end %>
132
-
133
- # needed to forward user's IP address to rails
134
- proxy_set_header X-Real-IP $remote_addr;
135
-
136
- # needed for HTTPS
137
- proxy_set_header X_FORWARDED_PROTO https;
138
-
139
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
140
- proxy_set_header Host $http_host;
141
- proxy_redirect off;
142
- proxy_max_temp_file_size 0;
143
-
144
- # if the request is for a static resource, nginx should serve it directly
145
- # and add a far future expires header to it, making the browser
146
- # cache the resource and navigate faster over the website.
147
- location ~ ^/(assets)/.+-([0-9a-zA-Z])+\. {
148
- gzip_static on;
149
- expires max;
150
- add_header Cache-Control public;
151
- }
152
-
153
- # Serve images outside the asset path
154
- # Now this supposedly should work as it gets the filenames with querystrings that Rails provides.
155
- # BUT there's a chance it could break the ajax calls.
156
- location ~* \.(ico|css|gif|jpe?g|png)(\?[0-9]+)?$ {
157
- expires max;
158
- }
159
-
160
- # Serve javascript outside the asset path
161
- location ~ ^/javascripts/.*\.js(\?[0-9]+)?$ {
162
- expires max;
163
- }
164
-
165
- # If the file exists as a static file serve it directly without
166
- # running all the other rewite tests on it
167
- if (-f $request_filename) {
168
- break;
169
- }
170
-
171
- <%= fetch(:nginx_extra_rules_ssl) unless fetch(:nginx_extra_rules_ssl).nil? %>
172
-
173
- if (!-f $request_filename) {
174
- proxy_pass http://<%= upstream_name_ssl %>;
175
- break;
176
- }
177
- }
178
-
179
- error_page 500 502 503 504 /500.html;
180
- location = /500.html {
181
- root <%= fetch(:deploy_to) %>/current/public;
182
- }
183
- }
184
- <% end %>
@@ -1,6 +0,0 @@
1
- # Capistrano deployed htpasswd file
2
- #
3
- # Remember NOT to share your deployment file in case you have sensitive passwords stored in it.
4
- # You probably shouldn't use this in production in case your deploy.rb is visible on public sites.
5
-
6
- <%= fetch(:nginx_simple_auth_user) %>:<%= fetch(:nginx_simple_auth_password).crypt(fetch(:nginx_simple_auth_salt)) %>:Autogenerated user from capistrano deployment