capistrano-mb 0.23.1 → 0.24.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: 89cce0c20944d7bf15c5acb463f30771cbbedac8
4
- data.tar.gz: c383f55d6b822f858552c295d3cb8cf32e00744d
3
+ metadata.gz: 63f7e5e2b8eb0f126c2ac90f753353dd425eb801
4
+ data.tar.gz: 69627248b8d4db581a8b4d2b74c2cba08bae5b88
5
5
  SHA512:
6
- metadata.gz: 4fb4c33da818549e8cca4e49af3e8cadf37c910067fe0242a3ab326200b6aaae3767541b969e27ff5c1eb521715113dfa10711849b111bd6fa430a788cc961f5
7
- data.tar.gz: 0e406ca4e7d33480eaeebc8ad669390e6a7f5e5c5c6a4819474f404e85432a8f470b39b59d051f04bd2715329931cfe0fa4711deb7bd7163720b1b4b7f91534f
6
+ metadata.gz: f5c706979093b9ab26c91659362647d13cdeff63aa2674e5bad8b543dffe5b17f5762a52348cb621f5dbcdd8adb5518d160d5f8f980c6cb9053e7beabfed0660
7
+ data.tar.gz: 2e8d185754f3d922e7abf7810ab3221a4489c82ccda59e46f2001e086201c42d84a4f931c355caf43d27ea848b962e60264333c0e42135415c54291b86fe8fa3
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  * Your contribution here!
4
4
 
5
+ ## [0.24.0][] (2015-09-11)
6
+
7
+ * Improve README with step-by-step installation instructions.
8
+ * Expand the list of cipher suites used in the nginx SSL configuration. ([#7](https://github.com/mattbrictson/capistrano-mb/pull/7))
9
+
5
10
  ## [0.23.1][] (2015-08-08)
6
11
 
7
12
  * Ensure gzip is enable for all assets, not just fingerprinted ones.
@@ -137,7 +142,8 @@ Flush console output after each line is printed. This allows deployment progress
137
142
 
138
143
  Initial Rubygems release!
139
144
 
140
- [Unreleased]: https://github.com/mattbrictson/capistrano-mb/compare/v0.23.1...HEAD
145
+ [Unreleased]: https://github.com/mattbrictson/capistrano-mb/compare/v0.24.0...HEAD
146
+ [0.24.0]: https://github.com/mattbrictson/capistrano-mb/compare/v0.23.1...v0.24.0
141
147
  [0.23.1]: https://github.com/mattbrictson/capistrano-mb/compare/v0.23.0...v0.23.1
142
148
  [0.23.0]: https://github.com/mattbrictson/capistrano-mb/compare/v0.22.2...v0.23.0
143
149
  [0.22.2]: https://github.com/mattbrictson/capistrano-mb/compare/v0.22.1...v0.22.2
data/README.md CHANGED
@@ -19,7 +19,7 @@ The capistrano-mb gem adds a `cap <stage> provision` task to Capistrano that tak
19
19
 
20
20
  The gem is named "capistrano-mb" because it is prescribes my ([@mattbrictson](https://github.com/mattbrictson)) personal preferences for automating deployments of Rails projects. I'm a freelance developer juggling lots of Rails codebases, so its important for me to have a good, consistent server configuration. You'll notice that capistrano-mb is opinionated and strictly uses the following stack:
21
21
 
22
- * Ubuntu 12.04 LTS or 14.04 LTS
22
+ * Ubuntu 14.04 LTS
23
23
  * PostgreSQL
24
24
  * Unicorn
25
25
  * Nginx
@@ -31,124 +31,160 @@ In addition, capistrano-mb changes many of Capistrano's defaults, including the
31
31
  Not quite to your liking? Consider forking the project to meet your needs.
32
32
 
33
33
 
34
- ## Installation
34
+ ## Quick start
35
35
 
36
- Please note that this project requires **Capistrano 3.x**, which is a complete
37
- rewrite of Capistrano 2.x. The two major versions are not compatible.
36
+ Please note that this project requires **Capistrano 3.x**, which is a complete rewrite of Capistrano 2.x. The two major versions are not compatible.
38
37
 
39
- ### 1. Gemfile
38
+ ### 1. Purchase an Ubuntu 14.04 VPS
40
39
 
41
- Add these gems to the development group of your Rails application's Gemfile:
40
+ To use capistrano-mb, you'll need a clean Ubuntu server to deploy to. The only special requirement is that your public SSH key must be installed on the server for the `root` user.
42
41
 
43
- group :development do
44
- gem 'capistrano-bundler', :require => false
45
- gem 'capistrano-rails', :require => false
46
- gem 'capistrano', '~> 3.4.0', :require => false
47
- gem 'capistrano-mb' :require => false
48
- end
42
+ Test that you can SSH to the server as `root` without being prompted for a password. If that works, capistrano-mb can take care of the rest. You're ready to proceed!
43
+
44
+ ### 2. .ruby-version
45
+
46
+ capistrano-mb needs to know the version of Ruby that your app requires, so that it can install Ruby during the provisioning process. Place a `.ruby-version` file in the root of your project containing the desired version, like this:
47
+
48
+ ```
49
+ 2.2.3
50
+ ```
51
+
52
+ *If you are using `rbenv`, just run `rbenv local 2.2.3` and it will create this file for you.*
53
+
54
+ ### 3. Gemfile
55
+
56
+ capistrano-mb makes certain assumptions about your Rails app, namely that it uses [dotenv][] to manage Rails secrets via environment variables, and that it runs on top of PostgreSQL and [unicorn][]. Make sure they are specified in the Gemfile:
57
+
58
+ ```ruby
59
+ gem "dotenv-rails", ">= 2.0.0"
60
+ gem "pg", "~> 0.18"
61
+ gem "unicorn"
62
+ ```
63
+
64
+ Then for the capistrano-mb tools themselves, add these gems to the development group:
65
+
66
+ ```ruby
67
+ group :development do
68
+ gem "capistrano-bundler", :require => false
69
+ gem "capistrano-rails", :require => false
70
+ gem "capistrano", "~> 3.4.0", :require => false
71
+ gem "capistrano-mb", :require => false
72
+ end
73
+ ```
49
74
 
50
75
  And then execute:
51
76
 
52
- $ bundle
77
+ ```
78
+ $ bundle
79
+ ```
53
80
 
81
+ ### 4. cap install
54
82
 
55
- ### 2. cap install
83
+ If your project doesn't yet have a `Capfile`, run `cap install` with the list of desired stages (environments). For simplicity, this installation guide will assume a single production stage:
56
84
 
57
- If your project doesn't yet have a `Capfile`, run `cap install` with the list
58
- of desired stages (environments):
85
+ ```
86
+ cap install STAGES=production
87
+ ```
59
88
 
60
- cap install STAGES=staging,production
89
+ ### 5. Capfile
61
90
 
91
+ Add these lines to the **bottom** of your app's `Capfile` (order is important!):
62
92
 
63
- ### 3. Capfile
93
+ ```ruby
94
+ require "capistrano/bundler"
95
+ require "capistrano/rails"
96
+ require "capistrano/mb"
97
+ ```
64
98
 
65
- Add these lines to the **bottom** of your app's `Capfile`
66
- (order is important!):
99
+ ### 6. deploy.rb
67
100
 
68
- require 'capistrano/bundler'
69
- require 'capistrano/rails'
70
- require 'capistrano/mb'
101
+ Modify `config/deploy.rb` to set the specifics of your Rails app. At the minimum, you'll need to set these two options:
71
102
 
103
+ ```ruby
104
+ set :application, "my_app_name"
105
+ set :repo_url, "git@github.com:username/repository.git"
106
+ ```
72
107
 
73
- ### 4. Choose which recipes to auto-run
108
+ ### 7. production.rb
74
109
 
75
- Most of the capistrano-mb recipes are designed to run automatically as part of `cap <stage> provision`, for installing and setting up various bits of the Rails infrastructure, like nginx, unicorn, and postgres. Some recipes also contribute to the `cap <stage> deploy` process.
110
+ Modify `config/deploy/production.rb` to specify the IP address of your production server. In this example, I have a single 1GB VPS (e.g. at DigitalOcean) that plays all the roles:
76
111
 
77
- *This auto-run behavior is fully under your control.* In your `deploy.rb`,
78
- set `:mb_recipes` to an array of the desired recipes.
79
- If you don't want a recipe to execute as part of `deploy`/`provision`, simply omit it from
80
- the list.
112
+ ```ruby
113
+ server "my.production.ip",
114
+ :user => "deployer",
115
+ :roles => %w(app backup cron db web)
116
+ ```
81
117
 
82
- The following list will suffice for most out-of-the-box Rails apps. The order of the list is not important.
118
+ *Note that you must include the `backup` and `cron` roles if you want to make use of capistrano-mb's database backups and crontab features.*
83
119
 
84
- set :mb_recipes, %w(
85
- aptitude
86
- crontab
87
- dotenv
88
- logrotate
89
- migrate
90
- nginx
91
- postgresql
92
- rbenv
93
- seed
94
- ssl
95
- ufw
96
- unicorn
97
- user
98
- version
99
- )
100
-
101
- Even if you don't include a recipe in the auto-run list, you can still invoke
102
- the tasks of those recipes manually at your discretion.
103
-
104
-
105
- ### 5. Configuration
120
+ ### 8. secrets.yml
106
121
 
107
- Many of the recipes have default settings that can be overridden. Use your
108
- `deploy.rb` file to specify these overrides. Or, you can override per stage.
109
- Here is an example override:
122
+ By default, Rails 4.2 apps have a `config/secrets.yml` file that specifies the Rails secret key. capistrano-mb configures dotenv to provide this secret in a `RAILS_SECRET_KEY_BASE` environment variable. You'll therefore need to modify `secrets.yml` as follows:
110
123
 
111
- set :mb_unicorn_workers, 8
124
+ ```ruby
125
+ production:
126
+ secret_key_base: <%= ENV["RAILS_SECRET_KEY_BASE"] %>
127
+ ```
112
128
 
113
- For the full list of settings and their default values, refer to
114
- [defaults.rake][].
129
+ ### 9. Provision and deploy!
115
130
 
131
+ Run capistrano-mb's `provision:14_04` task (named for Ubuntu 14.04). This will ask you a few questions, install Ruby, PostgreSQL, Nginx, etc., and set everything up. The entire process takes about 10 minutes (mostly due to compiling Ruby from source).
116
132
 
117
- ### A working example
133
+ ```
134
+ bundle exec cap production provision:14_04
135
+ ```
118
136
 
119
- Check out our [rails-starter][] project for a sample Capfile and deploy.rb.
137
+ Once that's done, your app is now ready to deploy!
120
138
 
121
- ## Usage
139
+ ```
140
+ bundle exec cap production deploy
141
+ ```
122
142
 
123
- The power of the capistrano-mb recipes is that they take care of the
124
- entire setup of a bare Ubuntu 12.04 or 14.04 server, all the way to a fully configured
125
- and running Rails app on top up Unicorn, Nginx, rbenv, and PostgreSQL.
143
+ ## Advanced usage
126
144
 
127
- ### Deploying to a new server from scratch
145
+ ### Choosing which recipes to auto-run
128
146
 
129
- These steps assume you have loaded the full set of capistrano-mb
130
- recipes in your Capfile.
147
+ Most of the capistrano-mb recipes are designed to run automatically as part of `cap <stage> provision`, for installing and setting up various bits of the Rails infrastructure, like nginx, unicorn, and postgres. Some recipes also contribute to the `cap <stage> deploy` process.
148
+
149
+ *This auto-run behavior is fully under your control.* In your `deploy.rb`, set `:mb_recipes` to an array of the desired recipes. If you don't want a recipe to execute as part of `deploy`/`provision`, simply omit it from the list.
131
150
 
132
- 1. Provision an Ubuntu 12.04 or 14.04 VPS at your hosting provider of choice.
133
- 2. Install your public SSH key for the root user. Some providers (e.g. DigitalOcean) can do this for you automatically when you provision a new VPS.
134
- 3. Repeat steps 1-2 for all the servers in your cluster, if you are using
135
- a multi-server setup (e.g. separate web, app, and database servers).
136
- 4. Let capistrano-mb take it from here:
151
+ The following list will suffice for most out-of-the-box Rails apps. The order of the list is not important.
137
152
 
138
- cap staging provision # for 12.04 LTS
139
- cap staging provision:14_04 # for 14.04 LTS
140
- cap staging deploy
153
+ ```ruby
154
+ set :mb_recipes, %w(
155
+ aptitude
156
+ crontab
157
+ dotenv
158
+ logrotate
159
+ migrate
160
+ nginx
161
+ postgresql
162
+ rbenv
163
+ seed
164
+ ssl
165
+ ufw
166
+ unicorn
167
+ user
168
+ version
169
+ )
170
+ ```
171
+
172
+ Even if you don't include a recipe in the auto-run list, you can still invoke the tasks of those recipes manually at your discretion. Run `bundle exec cap -T` to see the full list of tasks.
173
+
174
+ ### Configuration
141
175
 
142
- ### Running individual tasks
176
+ Many of the recipes have default settings that can be overridden. Use your
177
+ `deploy.rb` file to specify these overrides. Or, you can override per stage.
178
+ Here is an example override:
179
+
180
+ set :mb_unicorn_workers, 8
143
181
 
144
- For a full description of all available tasks, run:
182
+ For the full list of settings and their default values, refer to [defaults.rake][].
145
183
 
146
- cap -T
147
184
 
148
- All tasks from capistrano-mb will be prefixed with `mb:`. You
149
- can run these tasks just like any other capistrano task, like so:
185
+ ## Further reading
150
186
 
151
- cap staging mb:seed
187
+ Check out my [rails-template][] project, which generates Rails applications with capistrano-mb pre-configured and ready to go.
152
188
 
153
189
 
154
190
  ## History
@@ -170,4 +206,6 @@ If you are upgrading from `capistrano-fiftyfive`, refer to the [CHANGELOG entry
170
206
  [cast337]:http://railscasts.com/episodes/337-capistrano-recipes
171
207
  [cast373]:http://railscasts.com/episodes/373-zero-downtime-deployment
172
208
  [defaults.rake]:lib/capistrano/tasks/defaults.rake
173
- [rails-starter]:https://github.com/mattbrictson/rails-starter/tree/master/config
209
+ [rails-template]:https://github.com/mattbrictson/rails-template/
210
+ [dotenv]:https://github.com/bkeepers/dotenv
211
+ [unicorn]:http://unicorn.bogomips.org/
@@ -47,7 +47,7 @@ upstream unicorn_<%= application_basename %> {
47
47
 
48
48
  <% if port == 443 %>
49
49
  ssl on;
50
- ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:RSA+3DES:!ADH:!AECDH:!MD5;
50
+ ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
51
51
  ssl_prefer_server_ciphers on;
52
52
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
53
53
  ssl_dhparam /etc/ssl/dhparams.pem;
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module MB
3
- VERSION = "0.23.1"
3
+ VERSION = "0.24.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-mb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.1
4
+ version: 0.24.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Brictson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-08 00:00:00.000000000 Z
11
+ date: 2015-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano