capistrano_rails_recipes 0.1.22 → 0.1.23

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: 1c488d09d1f3388c6635d19bcfec34a4ca379555
4
- data.tar.gz: d43b124ff57b9edcc09fc8091a5224fd06fadc00
3
+ metadata.gz: d54893e78d434d2f87d88feba28111e57b238cc9
4
+ data.tar.gz: 83e61b16c862acd66051fc896f3da26cb2362831
5
5
  SHA512:
6
- metadata.gz: 39d73811df5c7d3f6ae1aeaa85a18c32c52fdbf79e65730f49e4efb8e058fefdf0eece6f53bef83973c8956046a477ac5f3cfb629e908f6d22011be029984122
7
- data.tar.gz: 3e3cd64e79af57fa950c30c46b9ece8dc187fbca68cacd9206407c3f30d25f2ff79dd724a7571d3288ad4958b9aa1ac206cf53ead7e24dd49943f791a36b2c04
6
+ metadata.gz: e542e51886d21d212af19b102f1de08b76be0db788d622499e8b7351f4616192adb082a93b9c828d06381fa82577e6c7ed4ff962d54e7cead5ca3cb058c4e14a
7
+ data.tar.gz: 096c4c626d574b6903305327c107305b804d2195e407027862846f586e999fa6a561a2549ab1f235c794704664ec902fd3130f995248319f4e7a958d3d015b46
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Evrone collection of Capistrano recipes
1
+ # Capistrano recipes for Rails
2
2
 
3
3
  We deploy a lot of Rails applications and our developers have to solve similar problems each time during the deployment: how to run workers, how to generate crontab, how to precompile assets faster and so on. This collection of recipes helps us to solve them.
4
4
 
@@ -6,20 +6,29 @@ Recipe use:
6
6
 
7
7
  * [`foreman`][foreman] + [`foreman_export_runitu`][runitu] to generate runit scripts with the Procfile
8
8
  * [`whenever`][whenever] to generate crontab
9
- * [`unicorn`][unicorn] to run the application
9
+ * [`nginx`][nginx] as proxy server
10
10
 
11
- It also consider that you use *system wide rbenv* on the server.
11
+ It also consider that you use *rbenv* on the server.
12
12
 
13
13
  ##Installation
14
14
 
15
- gem 'capistrano_evrone_recipes', :require => false
15
+ gem 'capistrano_rails_recipes', :require => false
16
16
 
17
17
  Capfile example:
18
18
 
19
- require "capistrano_evrone_recipes/capistrano"
19
+ require "capistrano_rails_recipes/capistrano"
20
20
 
21
21
  set :repository, "git@github.com:..."
22
- set :application, "my_cook_application"
22
+ set :application, "my_application"
23
+ set :user, 'deploy'
24
+ set :branch, 'master'
25
+ set :deploy_to, "/path/to/app"
26
+ set :use_sudo, false
27
+
28
+ server 'web.example.com', :web, :app, :worker, :crontab
29
+ role :db, 'web.example.com', primary: true
30
+
31
+ OR
23
32
 
24
33
  task :production do
25
34
  role :web, "web.example.com"
@@ -35,6 +44,14 @@ Capfile example:
35
44
 
36
45
  As you can see, we use use roles to bind the tasks, and there are some additions to roles and additional roles:
37
46
 
47
+ **deploy:setup** creates all necessary folders and symlinks to files:
48
+ config/nginx.conf -> /opt/nginx/conf/sites-enabled/my_application
49
+ creates deploy_to/shared/config folder
50
+ creates deploy_to/services folder
51
+ copies config/database.example.yml -> shared/config/database.yml
52
+
53
+ Run **deploy:setup** before your first deploy. See below how to configure services.
54
+
38
55
  **web** compiles assets if content of `app/assets` was changed since last deploy (add FORCE=1 to force the assets compilation)
39
56
 
40
57
  **app** all files from `shared/config` is being symlinked to `current/config` like:
@@ -48,7 +65,7 @@ As you can see, we use use roles to bind the tasks, and there are some additions
48
65
 
49
66
  **worker** Procfile exports runit configs to `deploy_to/application/services`
50
67
 
51
- On **deploy:restart** unicorn and runit workers is being restarted.
68
+ On **deploy:restart** runit workers is being restarted.
52
69
 
53
70
  You can use some extra `cap` tasks:
54
71
 
@@ -60,6 +77,63 @@ You can use some extra `cap` tasks:
60
77
 
61
78
  To run succesfully together with system wide rbenv, all you tasks in Procfile must be started with `rbenv exec`
62
79
 
80
+ ##Configuring services
81
+
82
+ To run services just create Procfile in root of your app.
83
+
84
+ Procfile example:
85
+
86
+ sidekiq: rbenv exec bundle exec sidekiq -L sidekiq.log
87
+ web: rbenv exec bundle exec unicorn -c config/unicorn.rb -E production
88
+
89
+ Also you need to configure runit to monitor deploy_to/services folder.
90
+
91
+ ##Nginx config file example for Unicorn
92
+
93
+ upstream unicorn_my_application {
94
+ server unix:/tmp/unicorn.my_application.sock fail_timeout=0;
95
+ }
96
+
97
+ server {
98
+ listen 80;
99
+ server_name web.example.com;
100
+ root deploy_to/current/public;
101
+
102
+ location ^~ /assets/ {
103
+ gzip_static on;
104
+ expires max;
105
+ add_header Cache-Control public;
106
+ }
107
+
108
+ try_files $uri/index.html $uri @unicorn;
109
+ location @unicorn {
110
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
111
+ proxy_set_header Host $http_host;
112
+ proxy_redirect off;
113
+ proxy_pass http://unicorn_my_application;
114
+ }
115
+
116
+ error_page 500 502 503 504 /500.html;
117
+ client_max_body_size 4G;
118
+ keepalive_timeout 10;
119
+ }
120
+
121
+ Change **deploy_to** and **my_application** to your actual values.
122
+
123
+ ##Unicorn config file example
124
+
125
+ root = "deploy_to/current"
126
+ working_directory root
127
+ pid "#{root}/tmp/pids/unicorn.pid"
128
+ stderr_path "#{root}/log/unicorn.log"
129
+ stdout_path "#{root}/log/unicorn.log"
130
+
131
+ listen "/tmp/unicorn.my_application.sock"
132
+ worker_processes 5
133
+ timeout 30
134
+
135
+ Change **deploy_to** and **my_application** to your actual values.
136
+
63
137
  ##Capistrano
64
138
 
65
139
  Default variables:
@@ -90,3 +164,4 @@ To enable silent mode, add `ENV['CAP_SILENT_MODE']` before the `require 'capistr
90
164
  [runitu]: https://github.com/evrone/foreman_export_runitu
91
165
  [whenever]: https://github.com/javan/whenever
92
166
  [unicorn]: http://unicorn.bogomips.org/
167
+ [nginx]: http://nginx.org/
@@ -3,7 +3,7 @@ module CapistranoRailsRecipes
3
3
 
4
4
  MAJOR = 0
5
5
  MINOR = 1
6
- PATCH = 22
6
+ PATCH = 23
7
7
 
8
8
  def self.to_s
9
9
  "#{MAJOR}.#{MINOR}.#{PATCH}"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano_rails_recipes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.22
4
+ version: 0.1.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Galinsky