capistrano3-nginx 1.0.0
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 +7 -0
- data/Gemfile +4 -0
- data/LICENSE +20 -0
- data/LICENSE.txt +22 -0
- data/README.md +104 -0
- data/Rakefile +1 -0
- data/capistrano3-nginx.gemspec +23 -0
- data/lib/capistrano/nginx.rb +1 -0
- data/lib/capistrano/tasks/nginx.rake +89 -0
- data/lib/capistrano3-nginx.rb +0 -0
- data/templates/nginx.conf.erb +68 -0
- metadata +82 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e858774c17cb8f1436362e15a348d7366e5bf4e4
|
4
|
+
data.tar.gz: a6e62a7b762d34b1ca9e87106e3d6fdfeb179b25
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: f4c5331b8f735a1ae182f4d626ff95bff6b184c04001e38eedceeb9e5da677ea17c7f5450745ef3d059200a9a064796b15e1d2ed40b9d0bcd72106f6667ca984
|
7
|
+
data.tar.gz: 39e28e58d0e906acbf81c2fcac00e054f5ad2d578751121d273c41a30c7a2d9579dbbfbb5a45cb8276092fe86980bf459bcffa0aebf694696e583155dfc0deb3
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2013 Capistrano, your one stop deployment shop.
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
7
|
+
the Software without restriction, including without limitation the rights to
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
+
subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 platanus
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
# Capistrano::Nginx [](http://badge.fury.io/rb/capistrano3-nginx)
|
2
|
+
|
3
|
+
Nginx support for Capistrano 3.x
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'capistrano3-nginx'
|
10
|
+
gem 'capistrano'
|
11
|
+
|
12
|
+
And then execute:
|
13
|
+
|
14
|
+
$ bundle
|
15
|
+
|
16
|
+
Or install it yourself as:
|
17
|
+
|
18
|
+
$ gem install capistrano-nginx
|
19
|
+
|
20
|
+
## Usage
|
21
|
+
|
22
|
+
Require in `Capfile` to use the default task:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
require 'capistrano/nginx'
|
26
|
+
```
|
27
|
+
|
28
|
+
You will get the following tasks
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
cap nginx:start # Start nginx service
|
32
|
+
cap nginx:stop # Stop nginx service
|
33
|
+
cap nginx:reload # Reload nginx service
|
34
|
+
cap nginx:restart # Restart nginx service
|
35
|
+
cap nginx:site:add # Creates the site configuration and upload it to the available folder
|
36
|
+
cap nginx:site:disable # Disables the site removing the symbolic link located in the enabled folder
|
37
|
+
cap nginx:site:enable # Enables the site creating a symbolic link into the enabled folder
|
38
|
+
cap nginx:site:remove # Removes the site removing the configuration file from the available folder
|
39
|
+
```
|
40
|
+
|
41
|
+
Configurable options, shown here with examples:
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
# Server name for nginx
|
45
|
+
# No default vaue
|
46
|
+
set :nginx_domains, "foo.bar.com"
|
47
|
+
|
48
|
+
# Roles the deploy nginx site on,
|
49
|
+
# default value: :web
|
50
|
+
set :nginx_roles, :web
|
51
|
+
|
52
|
+
# Path, where nginx log file will be stored
|
53
|
+
# default value: "#{shared_path}/log"
|
54
|
+
set :nginx_log_path, "#{shared_path}/log"
|
55
|
+
|
56
|
+
# Path where nginx is installed
|
57
|
+
# default value: "/etc/nginx"
|
58
|
+
set :nginx_root_path, "/etc/nginx"
|
59
|
+
|
60
|
+
# Path where nginx available site are stored
|
61
|
+
# default value: "sites-available"
|
62
|
+
set :nginx_sites_available, "sites-available"
|
63
|
+
|
64
|
+
# Path where nginx available site are stored
|
65
|
+
# default value: "sites-enabled"
|
66
|
+
set :nginx_sites_enabled, "sites-enabled"
|
67
|
+
|
68
|
+
# Path to look for custom config template
|
69
|
+
# default value: "config/deploy/#{stage}/nginx.conf.erb"
|
70
|
+
set :nginx_template, "config/deploy/#{stage}/nginx.conf.erb"
|
71
|
+
|
72
|
+
# Use ssl on port 443 to serve on https. Every request to por 80
|
73
|
+
# will be rewritten to 443
|
74
|
+
# default value: false
|
75
|
+
set :nginx_use_ssl, false
|
76
|
+
|
77
|
+
# Whether you want to server an application through a proxy pass
|
78
|
+
# default value: true
|
79
|
+
set :app_server, true
|
80
|
+
|
81
|
+
# Socket file that nginx will use as upstream to serve the application
|
82
|
+
# Note: Socket upstream has priority over host:port upstreams
|
83
|
+
# no default value
|
84
|
+
set :app_server_socket, "#{shared_path}/sockets/#{application}.sock"
|
85
|
+
|
86
|
+
# The host that nginx will use as upstream to server the application
|
87
|
+
# default value: 127.0.0.1
|
88
|
+
set :app_server_port,
|
89
|
+
|
90
|
+
# The port the application server is running on
|
91
|
+
# no default value
|
92
|
+
set :app_server_host,
|
93
|
+
```
|
94
|
+
|
95
|
+
## Thanks
|
96
|
+
Thansk for the inspiration on several nginx recipes out there
|
97
|
+
|
98
|
+
## Contributing
|
99
|
+
|
100
|
+
1. Fork it
|
101
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
102
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
103
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
104
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'capistrano3-nginx'
|
7
|
+
spec.version = '1.0.0'
|
8
|
+
spec.authors = ['Juan Ignacio Donoso']
|
9
|
+
spec.email = ['jidonoso@gmail.com']
|
10
|
+
spec.description = %q{Adds suuport to nginx for Capistrano 3.x}
|
11
|
+
spec.summary = %q{Adds suuport to nginx for Capistrano 3.x}
|
12
|
+
spec.homepage = 'https://github.com/platanus/capistrano3-nginx'
|
13
|
+
spec.license = 'MIT'
|
14
|
+
|
15
|
+
spec.files = `git ls-files`.split($/)
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ['lib']
|
19
|
+
|
20
|
+
spec.add_dependency 'capistrano', '>= 3.0.0'
|
21
|
+
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
load File.expand_path('../tasks/nginx.rake', __FILE__)
|
@@ -0,0 +1,89 @@
|
|
1
|
+
namespace :load do
|
2
|
+
task :defaults do
|
3
|
+
set :nginx_roles, -> { :web }
|
4
|
+
set :nginx_log_path, -> { "#{shared_path}/log" }
|
5
|
+
set :nginx_root_path, -> { "/etc/nginx" }
|
6
|
+
set :nginx_sites_enabled, -> { "sites-enabled" }
|
7
|
+
set :nginx_sites_available, -> { "sites-available" }
|
8
|
+
set :nginx_template, -> { "config/deploy/#{fetch(:stage)}/nginx.conf.erb" }
|
9
|
+
set :nginx_use_ssl, -> { false }
|
10
|
+
set :app_server, -> { true }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
namespace :nginx do
|
15
|
+
task :load_vars do
|
16
|
+
set :sites_available, -> { File.join(fetch(:nginx_root_path), fetch(:nginx_sites_available)) }
|
17
|
+
set :sites_enabled, -> { File.join(fetch(:nginx_root_path), fetch(:nginx_sites_enabled)) }
|
18
|
+
set :enabled_application, -> { File.join(fetch(:sites_enabled), fetch(:application)) }
|
19
|
+
set :available_application, -> { File.join(fetch(:sites_available), fetch(:application)) }
|
20
|
+
end
|
21
|
+
|
22
|
+
%w[start stop restart reload].each do |command|
|
23
|
+
desc "#{command.capitalize} nginx service"
|
24
|
+
task command do
|
25
|
+
on release_roles fetch(:nginx_roles) do
|
26
|
+
if command === 'stop' || (test "sudo nginx -t")
|
27
|
+
execute :sudo, "service nginx #{command}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
after 'deploy:check', nil do
|
34
|
+
on release_roles fetch(:nginx_roles) do
|
35
|
+
execute :mkdir, '-pv', fetch(:nginx_log_path)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
namespace :site do
|
40
|
+
desc 'Creates the site configuration and upload it to the available folder'
|
41
|
+
task :add => ['nginx:load_vars'] do
|
42
|
+
on release_roles fetch(:nginx_roles) do
|
43
|
+
within fetch(:sites_available) do
|
44
|
+
config_file = fetch(:nginx_template)
|
45
|
+
unless File.exists?(config_file)
|
46
|
+
config_file = File.expand_path('../../../../templates/nginx.conf.erb', __FILE__)
|
47
|
+
end
|
48
|
+
config = ERB.new(File.read(config_file)).result(binding)
|
49
|
+
upload! StringIO.new(config), '/tmp/nginx.conf'
|
50
|
+
|
51
|
+
execute :mv, '/tmp/nginx.conf', fetch(:application)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
desc 'Enables the site creating a symbolic link into the enabled folder'
|
57
|
+
task :enable => ['nginx:load_vars'] do
|
58
|
+
on release_roles fetch(:nginx_roles) do
|
59
|
+
if test "! [ -h #{fetch(:enabled_application)} ]"
|
60
|
+
within fetch(:sites_enabled) do
|
61
|
+
execute :ln, '-nfs', fetch(:available_application), fetch(:enabled_application)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
desc 'Disables the site removing the symbolic link located in the enabled folder'
|
68
|
+
task :disable => ['nginx:load_vars'] do
|
69
|
+
on release_roles fetch(:nginx_roles) do
|
70
|
+
if test "[ -f #{fetch(:enabled_application)} ]"
|
71
|
+
within fetch(:sites_enabled) do
|
72
|
+
execute :rm, '-f', fetch(:application)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
desc 'Removes the site removing the configuration file from the available folder'
|
79
|
+
task :remove => ['nginx:load_vars'] do
|
80
|
+
on release_roles fetch(:nginx_roles) do
|
81
|
+
if test "[ -f #{fetch(:available_application)} ]"
|
82
|
+
within fetch(:sites_available) do
|
83
|
+
execute :rm, fetch(:application)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
File without changes
|
@@ -0,0 +1,68 @@
|
|
1
|
+
<% if fetch(:app_server) && (fetch(:app_server_socket) || fetch(:app_server_port))%>
|
2
|
+
# Define App Server Upstream
|
3
|
+
upstream <%= fetch(:application) %>-app-server {
|
4
|
+
<% if fetch(:app_server_socket) %>
|
5
|
+
server unix:<%= fetch(:app_server_socket) %> fail_timeout=0;
|
6
|
+
<% elsif fetch(:app_server_port) %>
|
7
|
+
server <%= fetch(:app_server_host, '127.0.0.1') %>:<%= fetch(:app_server_port) %> fail_timeout=0;
|
8
|
+
<% end %>
|
9
|
+
}
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
# HTTP Server
|
13
|
+
|
14
|
+
<% if fetch(:nginx_use_ssl) %>
|
15
|
+
server {
|
16
|
+
listen 80;
|
17
|
+
rewrite ^(.*) https://$host$1 permanent;
|
18
|
+
}
|
19
|
+
<% end %>
|
20
|
+
|
21
|
+
server {
|
22
|
+
|
23
|
+
<% if fetch(:nginx_use_ssl) %>
|
24
|
+
listen 443;
|
25
|
+
ssl on;
|
26
|
+
ssl_certificate /etc/ssl/certs/<%= nginx_ssl_certificate %>;
|
27
|
+
ssl_certificate_key /etc/ssl/private/<%= nginx_ssl_certificate_key %>;
|
28
|
+
<% else %>
|
29
|
+
listen 80;
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
server_name <%= fetch(:nginx_domains) %>;
|
33
|
+
root <%= fetch(:deploy_to) %>/current/<%= fetch(:static_dir) %>;
|
34
|
+
|
35
|
+
access_log <%= fetch(:nginx_log_path) %>/nginx-access.log;
|
36
|
+
error_log <%= fetch(:nginx_log_path) %>/nginx-error.log;
|
37
|
+
|
38
|
+
error_page 404 /404.html;
|
39
|
+
location /404.html { root <%= fetch(:deploy_to) %>/current/<%= fetch(:static_dir) %>; }
|
40
|
+
|
41
|
+
error_page 500 /500.html;
|
42
|
+
location /500.html { root <%= fetch (:deploy_to) %>/current/<%= fetch(:static_dir) %>; }
|
43
|
+
|
44
|
+
client_max_body_size 4G;
|
45
|
+
keepalive_timeout 10;
|
46
|
+
|
47
|
+
<% if fetch(:app_server) && (fetch(:app_server_socket) || fetch(:app_server_port))%>
|
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 @<%= fetch(:application) %>-app-server;
|
55
|
+
|
56
|
+
location @<%= fetch(:application) %>-app-server {
|
57
|
+
proxy_set_header X-Real-IP $remote_addr;
|
58
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
59
|
+
proxy_set_header X-FORWARDED_PROTO http;
|
60
|
+
proxy_set_header Host $http_host;
|
61
|
+
<% if fetch(:nginx_use_ssl) %>
|
62
|
+
proxy_set_header X-Forwarded-Proto https;
|
63
|
+
<% end %>
|
64
|
+
proxy_redirect off;
|
65
|
+
proxy_pass http://<%= fetch(:application) %>-app-server;
|
66
|
+
}
|
67
|
+
<% end %>
|
68
|
+
}
|
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: capistrano3-nginx
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Juan Ignacio Donoso
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: capistrano
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 3.0.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 3.0.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Adds suuport to nginx for Capistrano 3.x
|
42
|
+
email:
|
43
|
+
- jidonoso@gmail.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- Gemfile
|
49
|
+
- LICENSE
|
50
|
+
- LICENSE.txt
|
51
|
+
- README.md
|
52
|
+
- Rakefile
|
53
|
+
- capistrano3-nginx.gemspec
|
54
|
+
- lib/capistrano/nginx.rb
|
55
|
+
- lib/capistrano/tasks/nginx.rake
|
56
|
+
- lib/capistrano3-nginx.rb
|
57
|
+
- templates/nginx.conf.erb
|
58
|
+
homepage: https://github.com/platanus/capistrano3-nginx
|
59
|
+
licenses:
|
60
|
+
- MIT
|
61
|
+
metadata: {}
|
62
|
+
post_install_message:
|
63
|
+
rdoc_options: []
|
64
|
+
require_paths:
|
65
|
+
- lib
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
requirements: []
|
77
|
+
rubyforge_project:
|
78
|
+
rubygems_version: 2.0.14
|
79
|
+
signing_key:
|
80
|
+
specification_version: 4
|
81
|
+
summary: Adds suuport to nginx for Capistrano 3.x
|
82
|
+
test_files: []
|