capistrano-pumaio 3.0.3 → 3.1.1

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: 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