capistrano-simple-unicorn 0.0.4 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2e5d3ec155bd77350ca05ec615dcfd0fec209d8c
4
- data.tar.gz: d88228d8dceca476a34d89a353518e6db9f64689
3
+ metadata.gz: f64084737f469cb0dcf81ff40b7c3c1130a0a450
4
+ data.tar.gz: af00481fadf86312dcb2d9c5b5fda7048151f96a
5
5
  SHA512:
6
- metadata.gz: 201bdd40579355c5282e63f9b4f0366e9dac270ec21a88724fc67a732c20c40ff7506f98e5133fc0228183563de15a978821c0c0911ee49140134c906ffd3372
7
- data.tar.gz: fc3d1d5fedb225f8a6f33a1d2b7dd5ed700e5e94c47af261ce8bf97d83788b3741e2a9186a4289920e29ebc6705d2c4a62baf4fdc9072e30e831e26820dafd0d
6
+ metadata.gz: ad68e3d32476967894822e35cd88b2dff20f75286635594d97d6cc3c65a07737091145160a5caa6561c97afad716cb1a1d477ddc6fd7986ac769d52148e00e6a
7
+ data.tar.gz: 6ad7e35e6e67762392178e557743c7e458ad18944b36c0c370b354ef47e1fa63569e3ce0fc3c53a749c22a7d7c3610b89828d27e30ba7a9fd5417c05a41cc86a
data/README.md CHANGED
@@ -1,3 +1,6 @@
1
+ # Capistrano::SimpleNginx
2
+ Support for Capistrano 3.x
3
+
1
4
  Capistrano task for automatic and unicorn configuration
2
5
 
3
6
  This gem customize from [capistrano-unicorn-nginx](https://github.com/capistrano-plugins/capistrano-unicorn-nginx), and support for Ubuntu server, CentOs server, EC2 server...
@@ -62,3 +65,36 @@ $ cap production unicorn:start
62
65
  $ cap production unicorn:stop
63
66
  $ cap production unicorn:restart
64
67
  ```
68
+
69
+ # Config nginx
70
+
71
+ * Generate file config nginx, run:
72
+ ```
73
+ $ cap production nginx:setup
74
+ ```
75
+
76
+ * start|stop|restart nginx, run:
77
+ ```
78
+ $ cap production nginx:start
79
+ $ cap production nginx:stop
80
+ $ cap production nginx:restart
81
+ ```
82
+
83
+ You need add directory to sock file of app. Example using unicorn for app:
84
+ ```
85
+ # in config/deploy.rb
86
+ set :nginx_upstream_file, "/tmp/unicorn.sock"
87
+ ```
88
+
89
+ ## Default config
90
+
91
+ ```
92
+ set :nginx_listen_port, 80 #listen_port
93
+ set :nginx_server_name, "_" #server_name
94
+ set :nginx_upstream_name, -> { "#{fetch(:application)}" } # upstream name
95
+ set :nginx_config_name, -> { "#{fetch(:application)}_#{fetch(:stage)}" } #file name config
96
+ set :nginx_fail_timeout, 0
97
+ set :nginx_access_log_file, -> { "/var/log/nginx/#{fetch(:nginx_config_name)}.access.log" } # access log file
98
+ set :nginx_error_log_file, -> { "/var/log/nginx/#{fetch(:nginx_config_name)}.error.log" } # error log file
99
+ set :nginx_upstream_file, -> { "#{fetch(:unicorn_sock_file)}" } # .sock file path
100
+ ```
@@ -1 +1,2 @@
1
1
  load File.expand_path("../tasks/unicorn.rake", __FILE__)
2
+ load File.expand_path("../tasks/nginx.rake", __FILE__)
@@ -8,7 +8,7 @@ module Capistrano
8
8
  end
9
9
 
10
10
  def template_to_s template_name
11
- config_file = File.join(File.dirname(__FILE__), "../../generators/templates/#{template_name}")
11
+ config_file = File.join(File.dirname(__FILE__), "../../generators/capistrano/simple_unicorn/templates/#{template_name}")
12
12
  ERB.new(File.read(config_file), nil, '-').result(binding)
13
13
  end
14
14
 
@@ -32,6 +32,14 @@ module Capistrano
32
32
  capture(:cat, "/etc/*-release").include? "ubuntu"
33
33
  end
34
34
 
35
+ def nginx_config_file
36
+ if os_is_ubuntu?
37
+ "/etc/nginx/sites-available/#{fetch(:nginx_config_name)}.conf"
38
+ else
39
+ "/etc/nginx/conf.d/#{fetch(:nginx_config_name)}.conf"
40
+ end
41
+ end
42
+
35
43
  def unicorn_initd_file
36
44
  "/etc/init.d/#{fetch(:unicorn_service)}"
37
45
  end
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module SimpleUnicorn
3
- VERSION = '0.0.4'.freeze
3
+ VERSION = '1.0.0'.freeze
4
4
  end
5
5
  end
@@ -0,0 +1,35 @@
1
+ require 'capistrano/simple_unicorn/helpers'
2
+ include Capistrano::SimpleUnicorn::Helpers
3
+
4
+ namespace :load do
5
+ task :defaults do
6
+ set :nginx_listen_port, 80
7
+ set :nginx_server_name, "_"
8
+ set :nginx_upstream_name, -> { "#{fetch(:application)}" }
9
+ set :nginx_config_name, -> { "#{fetch(:application)}_#{fetch(:stage)}" }
10
+ set :nginx_fail_timeout, 0
11
+ set :nginx_access_log_file, -> { "/var/log/nginx/#{fetch(:nginx_config_name)}.access.log" }
12
+ set :nginx_error_log_file, -> { "/var/log/nginx/#{fetch(:nginx_config_name)}.error.log" }
13
+ set :nginx_upstream_file, -> { "#{fetch(:unicorn_sock_file)}" }
14
+ end
15
+ end
16
+
17
+ namespace :nginx do
18
+ desc 'Setup nginx configuration'
19
+ task :setup do
20
+ on roles :web do
21
+ unless file_exists?(nginx_config_file)
22
+ sudo_upload! template('nginx_conf.erb'), nginx_config_file
23
+ end
24
+ end
25
+ end
26
+
27
+ %w[stop start restart reload].each do |action|
28
+ desc "#{action} nginx"
29
+ task action do
30
+ on roles :web do
31
+ sudo :service, "nginx", action
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,57 @@
1
+ upstream <%= fetch(:nginx_upstream_name) %> {
2
+ server unix:<%= fetch(:nginx_upstream_file) %> fail_timeout=<%= fetch(:nginx_fail_timeout) %>;
3
+ }
4
+
5
+ server {
6
+ server_tokens off;
7
+ add_header X-Content-Type-Options nosniff;
8
+ client_max_body_size 4G;
9
+ keepalive_timeout 10;
10
+
11
+ error_page 500 502 504 /500.html;
12
+ error_page 503 @503;
13
+
14
+ server_name <%= fetch(:nginx_server_name) %>;
15
+ root <%= current_path %>/public;
16
+ try_files $uri/index.html $uri @<%= fetch(:nginx_upstream_name) %>;
17
+
18
+ location @<%= fetch(:nginx_upstream_name) %> {
19
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
20
+ proxy_set_header Host $http_host;
21
+ proxy_redirect off;
22
+ proxy_pass http://<%= fetch(:nginx_upstream_name) %>;
23
+
24
+ access_log <%= fetch(:nginx_access_log_file) %>;
25
+ error_log <%= fetch(:nginx_error_log_file) %>;
26
+ }
27
+
28
+ location ^~ /assets/ {
29
+ gzip_static on;
30
+ expires max;
31
+ add_header Cache-Control public;
32
+ }
33
+
34
+ location = /50x.html {
35
+ root html;
36
+ }
37
+
38
+ location = /404.html {
39
+ root html;
40
+ }
41
+
42
+ location @503 {
43
+ error_page 405 = /system/maintenance.html;
44
+ if (-f $document_root/system/maintenance.html) {
45
+ rewrite ^(.*)$ /system/maintenance.html break;
46
+ }
47
+ rewrite ^(.*)$ /503.html break;
48
+ }
49
+
50
+ if ($request_method !~ ^(GET|HEAD|PUT|PATCH|POST|DELETE|OPTIONS)$ ){
51
+ return 405;
52
+ }
53
+
54
+ if (-f $document_root/system/maintenance.html) {
55
+ return 503;
56
+ }
57
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-simple-unicorn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - truongkma
@@ -71,9 +71,11 @@ files:
71
71
  - lib/capistrano/simple_unicorn.rb
72
72
  - lib/capistrano/simple_unicorn/helpers.rb
73
73
  - lib/capistrano/simple_unicorn/version.rb
74
+ - lib/capistrano/tasks/nginx.rake
74
75
  - lib/capistrano/tasks/unicorn.rake
75
- - lib/generators/templates/unicorn.rb.erb
76
- - lib/generators/templates/unicorn_init.erb
76
+ - lib/generators/capistrano/simple_unicorn/templates/nginx_conf.erb
77
+ - lib/generators/capistrano/simple_unicorn/templates/unicorn.rb.erb
78
+ - lib/generators/capistrano/simple_unicorn/templates/unicorn_init.erb
77
79
  homepage: https://github.com/truongkma/capistrano-simple-unicorn
78
80
  licenses:
79
81
  - MIT