capistrano-exts 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -11,13 +11,13 @@ Installation
11
11
  Install the gem
12
12
 
13
13
  ```ruby
14
- gem install capistrano-ext
14
+ gem install capistrano-exts
15
15
  ```
16
16
 
17
17
  or add it to your Gemfile
18
18
 
19
19
  ```ruby
20
- gem 'capistrano-ext', '>=1.0.0'
20
+ gem 'capistrano-exts', '>=1.0.0'
21
21
  ```
22
22
 
23
23
  Setup
@@ -8,6 +8,12 @@ role :web, 'root@example_dev_web.com:22'
8
8
  role :app, 'root@example_dev_app.com:22'
9
9
  role :db, 'root@example_dev_db.com:22', primary: true
10
10
 
11
+ # Permissions and ownership
12
+ # Uncomment if necessary...
13
+ # set :app_owner, 'www-data'
14
+ # set :app_group, 'www-data'
15
+ # set :group_writable, true
16
+
11
17
  # The project's branch to use
12
18
  # Uncomment and edit this if you're using git, for other SCM's please refer
13
19
  # to capistrano's documentation
@@ -28,19 +34,45 @@ set :keep_releases, 5
28
34
  # Using RVM? Set this to the ruby version/gemset to use
29
35
  set :rvm_ruby_string, "1.9.2"
30
36
 
31
- # Mysql credentials
37
+ #############
38
+ # Mysql
39
+ #
40
+
41
+ # What is the database name for this project/stage ?
42
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
43
+
44
+ # What is the database user ?
45
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
46
+ set :mysql_db_user, -> { "#{fetch :application}" }
47
+
48
+ # Where the database credentials are stored on the server ?
32
49
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
50
+
51
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
33
52
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
34
53
  set :mysql_credentials_host_regex_match, 1
54
+
55
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
35
56
  set :mysql_credentials_user_regex, /username: (.*)$/o
36
57
  set :mysql_credentials_user_regex_match, 1
58
+
59
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
37
60
  set :mysql_credentials_pass_regex, /password: (.*)$/o
38
61
  set :mysql_credentials_pass_regex_match, 1
62
+
63
+ # Where can we find root credentials ?
64
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
39
65
  set :mysql_root_credentials_file, "/root/.mysql_password"
66
+
67
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
40
68
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
41
69
  set :mysql_root_credentials_host_regex_match, 1
70
+
71
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
42
72
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
43
73
  set :mysql_root_credentials_user_regex_match, 1
74
+
75
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
44
76
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
45
77
  set :mysql_root_credentials_pass_regex_match, 1
46
78
 
@@ -92,8 +124,8 @@ set :web_server_mod_rewrite, true
92
124
  # Valid options:
93
125
  #
94
126
  # For Nginx:
95
- # => :rails_reverse_proxy, :passenger, :php_fpm
96
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
127
+ # => :reverse_proxy, :passenger, :php_fpm
128
+ # => :reverse_proxy is used for unicorn (Rack apps)
97
129
  # => :passenger runs rails apps
98
130
  # => :php_fpm is used to deliver websites written using PHP
99
131
  #
@@ -8,6 +8,12 @@ role :web, 'root@example_prod_web.com:22'
8
8
  role :app, 'root@example_prod_app.com:22'
9
9
  role :db, 'root@example_prod_db.com:22', primary: true
10
10
 
11
+ # Permissions and ownership
12
+ # Uncomment if necessary...
13
+ # set :app_owner, 'www-data'
14
+ # set :app_group, 'www-data'
15
+ # set :group_writable, true
16
+
11
17
  # The project's branch to use
12
18
  # Uncomment and edit this if you're using git, for other SCM's please refer
13
19
  # to capistrano's documentation
@@ -28,19 +34,45 @@ set :keep_releases, 5
28
34
  # Using RVM? Set this to the ruby version/gemset to use
29
35
  set :rvm_ruby_string, "1.9.2"
30
36
 
31
- # Mysql credentials
37
+ #############
38
+ # Mysql
39
+ #
40
+
41
+ # What is the database name for this project/stage ?
42
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
43
+
44
+ # What is the database user ?
45
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
46
+ set :mysql_db_user, -> { "#{fetch :application}" }
47
+
48
+ # Where the database credentials are stored on the server ?
32
49
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
50
+
51
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
33
52
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
34
53
  set :mysql_credentials_host_regex_match, 1
54
+
55
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
35
56
  set :mysql_credentials_user_regex, /username: (.*)$/o
36
57
  set :mysql_credentials_user_regex_match, 1
58
+
59
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
37
60
  set :mysql_credentials_pass_regex, /password: (.*)$/o
38
61
  set :mysql_credentials_pass_regex_match, 1
62
+
63
+ # Where can we find root credentials ?
64
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
39
65
  set :mysql_root_credentials_file, "/root/.mysql_password"
66
+
67
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
40
68
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
41
69
  set :mysql_root_credentials_host_regex_match, 1
70
+
71
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
42
72
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
43
73
  set :mysql_root_credentials_user_regex_match, 1
74
+
75
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
44
76
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
45
77
  set :mysql_root_credentials_pass_regex_match, 1
46
78
 
@@ -92,8 +124,8 @@ set :web_server_mod_rewrite, true
92
124
  # Valid options:
93
125
  #
94
126
  # For Nginx:
95
- # => :rails_reverse_proxy, :passenger, :php_fpm
96
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
127
+ # => :reverse_proxy, :passenger, :php_fpm
128
+ # => :reverse_proxy is used for unicorn (Rack apps)
97
129
  # => :passenger runs rails apps
98
130
  # => :php_fpm is used to deliver websites written using PHP
99
131
  #
@@ -8,6 +8,12 @@ role :web, 'root@example_staging_web.com:22'
8
8
  role :app, 'root@example_staging_app.com:22'
9
9
  role :db, 'root@example_staging_db.com:22', primary: true
10
10
 
11
+ # Permissions and ownership
12
+ # Uncomment if necessary...
13
+ # set :app_owner, 'www-data'
14
+ # set :app_group, 'www-data'
15
+ # set :group_writable, true
16
+
11
17
  # The project's branch to use
12
18
  # Uncomment and edit this if you're using git, for other SCM's please refer
13
19
  # to capistrano's documentation
@@ -28,19 +34,45 @@ set :keep_releases, 5
28
34
  # Using RVM? Set this to the ruby version/gemset to use
29
35
  set :rvm_ruby_string, "1.9.2"
30
36
 
31
- # Mysql credentials
37
+ #############
38
+ # Mysql
39
+ #
40
+
41
+ # What is the database name for this project/stage ?
42
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
43
+
44
+ # What is the database user ?
45
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
46
+ set :mysql_db_user, -> { "#{fetch :application}" }
47
+
48
+ # Where the database credentials are stored on the server ?
32
49
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
50
+
51
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
33
52
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
34
53
  set :mysql_credentials_host_regex_match, 1
54
+
55
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
35
56
  set :mysql_credentials_user_regex, /username: (.*)$/o
36
57
  set :mysql_credentials_user_regex_match, 1
58
+
59
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
37
60
  set :mysql_credentials_pass_regex, /password: (.*)$/o
38
61
  set :mysql_credentials_pass_regex_match, 1
62
+
63
+ # Where can we find root credentials ?
64
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
39
65
  set :mysql_root_credentials_file, "/root/.mysql_password"
66
+
67
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
40
68
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
41
69
  set :mysql_root_credentials_host_regex_match, 1
70
+
71
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
42
72
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
43
73
  set :mysql_root_credentials_user_regex_match, 1
74
+
75
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
44
76
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
45
77
  set :mysql_root_credentials_pass_regex_match, 1
46
78
 
@@ -92,8 +124,8 @@ set :web_server_mod_rewrite, true
92
124
  # Valid options:
93
125
  #
94
126
  # For Nginx:
95
- # => :rails_reverse_proxy, :passenger, :php_fpm
96
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
127
+ # => :reverse_proxy, :passenger, :php_fpm
128
+ # => :reverse_proxy is used for unicorn (Rack apps)
97
129
  # => :passenger runs rails apps
98
130
  # => :php_fpm is used to deliver websites written using PHP
99
131
  #
@@ -8,6 +8,12 @@ role :web, 'root@example_dev_web.com:22'
8
8
  role :app, 'root@example_dev_app.com:22'
9
9
  role :db, 'root@example_dev_db.com:22', primary: true
10
10
 
11
+ # Permissions and ownership
12
+ # Uncomment if necessary...
13
+ # set :app_owner, 'www-data'
14
+ # set :app_group, 'www-data'
15
+ # set :group_writable, true
16
+
11
17
  # The project's branch to use
12
18
  # Uncomment and edit this if you're using git, for other SCM's please refer
13
19
  # to capistrano's documentation
@@ -28,19 +34,45 @@ set :keep_releases, 5
28
34
  # Using RVM? Set this to the ruby version/gemset to use
29
35
  set :rvm_ruby_string, "1.9.2"
30
36
 
31
- # Mysql credentials
37
+ #############
38
+ # Mysql
39
+ #
40
+
41
+ # What is the database name for this project/stage ?
42
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
43
+
44
+ # What is the database user ?
45
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
46
+ set :mysql_db_user, -> { "#{fetch :application}" }
47
+
48
+ # Where the database credentials are stored on the server ?
32
49
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
50
+
51
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
33
52
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
34
53
  set :mysql_credentials_host_regex_match, 1
54
+
55
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
35
56
  set :mysql_credentials_user_regex, /username: (.*)$/o
36
57
  set :mysql_credentials_user_regex_match, 1
58
+
59
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
37
60
  set :mysql_credentials_pass_regex, /password: (.*)$/o
38
61
  set :mysql_credentials_pass_regex_match, 1
62
+
63
+ # Where can we find root credentials ?
64
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
39
65
  set :mysql_root_credentials_file, "/root/.mysql_password"
66
+
67
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
40
68
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
41
69
  set :mysql_root_credentials_host_regex_match, 1
70
+
71
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
42
72
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
43
73
  set :mysql_root_credentials_user_regex_match, 1
74
+
75
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
44
76
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
45
77
  set :mysql_root_credentials_pass_regex_match, 1
46
78
 
@@ -92,8 +124,8 @@ set :web_server_mod_rewrite, true
92
124
  # Valid options:
93
125
  #
94
126
  # For Nginx:
95
- # => :rails_reverse_proxy, :passenger, :php_fpm
96
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
127
+ # => :reverse_proxy, :passenger, :php_fpm
128
+ # => :reverse_proxy is used for unicorn (Rack apps)
97
129
  # => :passenger runs rails apps
98
130
  # => :php_fpm is used to deliver websites written using PHP
99
131
  #
@@ -8,6 +8,12 @@ role :web, 'root@example_prod_web.com:22'
8
8
  role :app, 'root@example_prod_app.com:22'
9
9
  role :db, 'root@example_prod_db.com:22', primary: true
10
10
 
11
+ # Permissions and ownership
12
+ # Uncomment if necessary...
13
+ # set :app_owner, 'www-data'
14
+ # set :app_group, 'www-data'
15
+ # set :group_writable, true
16
+
11
17
  # The project's branch to use
12
18
  # Uncomment and edit this if you're using git, for other SCM's please refer
13
19
  # to capistrano's documentation
@@ -28,19 +34,45 @@ set :keep_releases, 5
28
34
  # Using RVM? Set this to the ruby version/gemset to use
29
35
  set :rvm_ruby_string, "1.9.2"
30
36
 
31
- # Mysql credentials
37
+ #############
38
+ # Mysql
39
+ #
40
+
41
+ # What is the database name for this project/stage ?
42
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
43
+
44
+ # What is the database user ?
45
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
46
+ set :mysql_db_user, -> { "#{fetch :application}" }
47
+
48
+ # Where the database credentials are stored on the server ?
32
49
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
50
+
51
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
33
52
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
34
53
  set :mysql_credentials_host_regex_match, 1
54
+
55
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
35
56
  set :mysql_credentials_user_regex, /username: (.*)$/o
36
57
  set :mysql_credentials_user_regex_match, 1
58
+
59
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
37
60
  set :mysql_credentials_pass_regex, /password: (.*)$/o
38
61
  set :mysql_credentials_pass_regex_match, 1
62
+
63
+ # Where can we find root credentials ?
64
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
39
65
  set :mysql_root_credentials_file, "/root/.mysql_password"
66
+
67
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
40
68
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
41
69
  set :mysql_root_credentials_host_regex_match, 1
70
+
71
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
42
72
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
43
73
  set :mysql_root_credentials_user_regex_match, 1
74
+
75
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
44
76
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
45
77
  set :mysql_root_credentials_pass_regex_match, 1
46
78
 
@@ -92,8 +124,8 @@ set :web_server_mod_rewrite, true
92
124
  # Valid options:
93
125
  #
94
126
  # For Nginx:
95
- # => :rails_reverse_proxy, :passenger, :php_fpm
96
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
127
+ # => :reverse_proxy, :passenger, :php_fpm
128
+ # => :reverse_proxy is used for unicorn (Rack apps)
97
129
  # => :passenger runs rails apps
98
130
  # => :php_fpm is used to deliver websites written using PHP
99
131
  #
@@ -8,6 +8,12 @@ role :web, 'root@example_staging_web.com:22'
8
8
  role :app, 'root@example_staging_app.com:22'
9
9
  role :db, 'root@example_staging_db.com:22', primary: true
10
10
 
11
+ # Permissions and ownership
12
+ # Uncomment if necessary...
13
+ # set :app_owner, 'www-data'
14
+ # set :app_group, 'www-data'
15
+ # set :group_writable, true
16
+
11
17
  # The project's branch to use
12
18
  # Uncomment and edit this if you're using git, for other SCM's please refer
13
19
  # to capistrano's documentation
@@ -28,19 +34,45 @@ set :keep_releases, 5
28
34
  # Using RVM? Set this to the ruby version/gemset to use
29
35
  set :rvm_ruby_string, "1.9.2"
30
36
 
31
- # Mysql credentials
37
+ #############
38
+ # Mysql
39
+ #
40
+
41
+ # What is the database name for this project/stage ?
42
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
43
+
44
+ # What is the database user ?
45
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
46
+ set :mysql_db_user, -> { "#{fetch :application}" }
47
+
48
+ # Where the database credentials are stored on the server ?
32
49
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
50
+
51
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
33
52
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
34
53
  set :mysql_credentials_host_regex_match, 1
54
+
55
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
35
56
  set :mysql_credentials_user_regex, /username: (.*)$/o
36
57
  set :mysql_credentials_user_regex_match, 1
58
+
59
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
37
60
  set :mysql_credentials_pass_regex, /password: (.*)$/o
38
61
  set :mysql_credentials_pass_regex_match, 1
62
+
63
+ # Where can we find root credentials ?
64
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
39
65
  set :mysql_root_credentials_file, "/root/.mysql_password"
66
+
67
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
40
68
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
41
69
  set :mysql_root_credentials_host_regex_match, 1
70
+
71
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
42
72
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
43
73
  set :mysql_root_credentials_user_regex_match, 1
74
+
75
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
44
76
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
45
77
  set :mysql_root_credentials_pass_regex_match, 1
46
78
 
@@ -92,8 +124,8 @@ set :web_server_mod_rewrite, true
92
124
  # Valid options:
93
125
  #
94
126
  # For Nginx:
95
- # => :rails_reverse_proxy, :passenger, :php_fpm
96
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
127
+ # => :reverse_proxy, :passenger, :php_fpm
128
+ # => :reverse_proxy is used for unicorn (Rack apps)
97
129
  # => :passenger runs rails apps
98
130
  # => :php_fpm is used to deliver websites written using PHP
99
131
  #
@@ -8,6 +8,12 @@ role :web, 'root@example_dev_web.com:22'
8
8
  role :app, 'root@example_dev_app.com:22'
9
9
  role :db, 'root@example_dev_db.com:22', primary: true
10
10
 
11
+ # Permissions and ownership
12
+ # Uncomment if necessary...
13
+ # set :app_owner, 'www-data'
14
+ # set :app_group, 'www-data'
15
+ # set :group_writable, true
16
+
11
17
  # The project's branch to use
12
18
  # Uncomment and edit this if you're using git, for other SCM's please refer
13
19
  # to capistrano's documentation
@@ -28,19 +34,45 @@ set :keep_releases, 5
28
34
  # Using RVM? Set this to the ruby version/gemset to use
29
35
  set :rvm_ruby_string, "1.9.2"
30
36
 
31
- # Mysql credentials
37
+ #############
38
+ # Mysql
39
+ #
40
+
41
+ # What is the database name for this project/stage ?
42
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
43
+
44
+ # What is the database user ?
45
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
46
+ set :mysql_db_user, -> { "#{fetch :application}" }
47
+
48
+ # Where the database credentials are stored on the server ?
32
49
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
50
+
51
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
33
52
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
34
53
  set :mysql_credentials_host_regex_match, 1
54
+
55
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
35
56
  set :mysql_credentials_user_regex, /username: (.*)$/o
36
57
  set :mysql_credentials_user_regex_match, 1
58
+
59
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
37
60
  set :mysql_credentials_pass_regex, /password: (.*)$/o
38
61
  set :mysql_credentials_pass_regex_match, 1
62
+
63
+ # Where can we find root credentials ?
64
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
39
65
  set :mysql_root_credentials_file, "/root/.mysql_password"
66
+
67
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
40
68
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
41
69
  set :mysql_root_credentials_host_regex_match, 1
70
+
71
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
42
72
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
43
73
  set :mysql_root_credentials_user_regex_match, 1
74
+
75
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
44
76
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
45
77
  set :mysql_root_credentials_pass_regex_match, 1
46
78
 
@@ -92,14 +124,14 @@ set :web_server_mod_rewrite, true
92
124
  # Valid options:
93
125
  #
94
126
  # For Nginx:
95
- # => :rails_reverse_proxy, :passenger, :php_fpm
96
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
127
+ # => :reverse_proxy, :passenger, :php_fpm
128
+ # => :reverse_proxy is used for unicorn (Rack apps)
97
129
  # => :passenger runs rails apps
98
130
  # => :php_fpm is used to deliver websites written using PHP
99
131
  #
100
132
  # For Apache
101
133
  # =>
102
- set :web_server_mode, :rails_reverse_proxy
134
+ set :web_server_mode, :reverse_proxy
103
135
 
104
136
  # Server mode specific configurations
105
137
  # Uncomment and edit the one depending on the enabled mode
@@ -8,6 +8,12 @@ role :web, 'root@example_prod_web.com:22'
8
8
  role :app, 'root@example_prod_app.com:22'
9
9
  role :db, 'root@example_prod_db.com:22', primary: true
10
10
 
11
+ # Permissions and ownership
12
+ # Uncomment if necessary...
13
+ # set :app_owner, 'www-data'
14
+ # set :app_group, 'www-data'
15
+ # set :group_writable, true
16
+
11
17
  # The project's branch to use
12
18
  # Uncomment and edit this if you're using git, for other SCM's please refer
13
19
  # to capistrano's documentation
@@ -28,19 +34,45 @@ set :keep_releases, 5
28
34
  # Using RVM? Set this to the ruby version/gemset to use
29
35
  set :rvm_ruby_string, "1.9.2"
30
36
 
31
- # Mysql credentials
37
+ #############
38
+ # Mysql
39
+ #
40
+
41
+ # What is the database name for this project/stage ?
42
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
43
+
44
+ # What is the database user ?
45
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
46
+ set :mysql_db_user, -> { "#{fetch :application}" }
47
+
48
+ # Where the database credentials are stored on the server ?
32
49
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
50
+
51
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
33
52
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
34
53
  set :mysql_credentials_host_regex_match, 1
54
+
55
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
35
56
  set :mysql_credentials_user_regex, /username: (.*)$/o
36
57
  set :mysql_credentials_user_regex_match, 1
58
+
59
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
37
60
  set :mysql_credentials_pass_regex, /password: (.*)$/o
38
61
  set :mysql_credentials_pass_regex_match, 1
62
+
63
+ # Where can we find root credentials ?
64
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
39
65
  set :mysql_root_credentials_file, "/root/.mysql_password"
66
+
67
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
40
68
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
41
69
  set :mysql_root_credentials_host_regex_match, 1
70
+
71
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
42
72
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
43
73
  set :mysql_root_credentials_user_regex_match, 1
74
+
75
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
44
76
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
45
77
  set :mysql_root_credentials_pass_regex_match, 1
46
78
 
@@ -92,14 +124,14 @@ set :web_server_mod_rewrite, true
92
124
  # Valid options:
93
125
  #
94
126
  # For Nginx:
95
- # => :rails_reverse_proxy, :passenger, :php_fpm
96
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
127
+ # => :reverse_proxy, :passenger, :php_fpm
128
+ # => :reverse_proxy is used for unicorn (Rack apps)
97
129
  # => :passenger runs rails apps
98
130
  # => :php_fpm is used to deliver websites written using PHP
99
131
  #
100
132
  # For Apache
101
133
  # =>
102
- set :web_server_mode, :rails_reverse_proxy
134
+ set :web_server_mode, :reverse_proxy
103
135
 
104
136
  # Server mode specific configurations
105
137
  # Uncomment and edit the one depending on the enabled mode
@@ -8,6 +8,12 @@ role :web, 'root@example_staging_web.com:22'
8
8
  role :app, 'root@example_staging_app.com:22'
9
9
  role :db, 'root@example_staging_db.com:22', primary: true
10
10
 
11
+ # Permissions and ownership
12
+ # Uncomment if necessary...
13
+ # set :app_owner, 'www-data'
14
+ # set :app_group, 'www-data'
15
+ # set :group_writable, true
16
+
11
17
  # The project's branch to use
12
18
  # Uncomment and edit this if you're using git, for other SCM's please refer
13
19
  # to capistrano's documentation
@@ -28,19 +34,45 @@ set :keep_releases, 5
28
34
  # Using RVM? Set this to the ruby version/gemset to use
29
35
  set :rvm_ruby_string, "1.9.2"
30
36
 
31
- # Mysql credentials
37
+ #############
38
+ # Mysql
39
+ #
40
+
41
+ # What is the database name for this project/stage ?
42
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
43
+
44
+ # What is the database user ?
45
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
46
+ set :mysql_db_user, -> { "#{fetch :application}" }
47
+
48
+ # Where the database credentials are stored on the server ?
32
49
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
50
+
51
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
33
52
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
34
53
  set :mysql_credentials_host_regex_match, 1
54
+
55
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
35
56
  set :mysql_credentials_user_regex, /username: (.*)$/o
36
57
  set :mysql_credentials_user_regex_match, 1
58
+
59
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
37
60
  set :mysql_credentials_pass_regex, /password: (.*)$/o
38
61
  set :mysql_credentials_pass_regex_match, 1
62
+
63
+ # Where can we find root credentials ?
64
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
39
65
  set :mysql_root_credentials_file, "/root/.mysql_password"
66
+
67
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
40
68
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
41
69
  set :mysql_root_credentials_host_regex_match, 1
70
+
71
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
42
72
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
43
73
  set :mysql_root_credentials_user_regex_match, 1
74
+
75
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
44
76
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
45
77
  set :mysql_root_credentials_pass_regex_match, 1
46
78
 
@@ -92,14 +124,14 @@ set :web_server_mod_rewrite, true
92
124
  # Valid options:
93
125
  #
94
126
  # For Nginx:
95
- # => :rails_reverse_proxy, :passenger, :php_fpm
96
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
127
+ # => :reverse_proxy, :passenger, :php_fpm
128
+ # => :reverse_proxy is used for unicorn (Rack apps)
97
129
  # => :passenger runs rails apps
98
130
  # => :php_fpm is used to deliver websites written using PHP
99
131
  #
100
132
  # For Apache
101
133
  # =>
102
- set :web_server_mode, :rails_reverse_proxy
134
+ set :web_server_mode, :reverse_proxy
103
135
 
104
136
  # Server mode specific configurations
105
137
  # Uncomment and edit the one depending on the enabled mode
@@ -30,8 +30,11 @@ Capistrano::Configuration.instance(:must_exist).load do
30
30
 
31
31
  desc "[internal] Setup contao's localconfig"
32
32
  task :setup_localconfig, :roles => :app, :except => { :no_release => true } do
33
+ on_rollback { run "rm -f #{shared_path}/localconfig.php" }
34
+
33
35
  localconfig = File.read("public/system/config/localconfig.php.sample")
34
36
  mysql_credentials = fetch :mysql_credentials
37
+ mysql_db_name = fetch :mysql_db_name
35
38
 
36
39
  # localconfig
37
40
  if mysql_credentials.blank?
@@ -63,7 +66,6 @@ Capistrano::Configuration.instance(:must_exist).load do
63
66
  # Dependencies
64
67
  after "deploy:setup", "contao:setup"
65
68
  after "contao:setup", "contao:setup_localconfig"
66
- after "contao:setup_localconfig", "mysql:create_db"
67
69
  after "deploy:finalize_update", "contao:fix_links"
68
70
  after "contao:fix_links", "deploy:cleanup"
69
71
  after "deploy:restart", "deploy:fix_permissions"
@@ -21,7 +21,7 @@ Capistrano::Configuration.instance(:must_exist).load do
21
21
  unless exists?(:app_owner) or exists?(:app_group)
22
22
  run <<-CMD
23
23
  #{try_sudo} chown -R \
24
- #{fetch :app_owner}:#{fetch :app_group} \
24
+ #{fetch :app_owner, 'www-data'}:#{fetch :app_group, 'www-data'} \
25
25
  #{fetch :deploy_to}/releases \
26
26
  #{fetch :deploy_to}/shared
27
27
  CMD
@@ -1,4 +1,5 @@
1
1
  require 'capistrano'
2
+ require 'digest/sha1'
2
3
  require 'highline'
3
4
 
4
5
  # Verify that Capistrano is version 2
@@ -48,8 +49,26 @@ Capistrano::Configuration.instance(:must_exist).load do
48
49
  end
49
50
  end
50
51
 
51
- def mysql_db_name(local_branch = nil)
52
- local_branch ||= fetch :branch
53
- "#{fetch :application}_co_#{local_branch}"
52
+ def mysql_db_hosts
53
+ # TODO: Do some real work here, we shouldn't be allowing all hosts but only all db/web/app hosts.
54
+ ['%']
55
+ end
56
+
57
+ def random_tmp_file(data = nil)
58
+ if data.present?
59
+ data_hash = Digest::SHA1.hexdigest data
60
+ "/tmp/#{fetch :application}_#{Time.now.strftime('%d-%m-%Y_%H-%M-%S')}_#{data_hash}"
61
+ else
62
+ "/tmp/#{fetch :application}_#{Time.now.strftime('%d-%m-%Y_%H-%M-%S')}"
63
+ end
64
+ end
65
+
66
+ # Helper for some mysql tasks
67
+ def mysql_credentials
68
+ return <<-EOS
69
+ hostname: localhost
70
+ username: #{mysql_db_user}
71
+ password: #{fetch :mysql_db_pass}
72
+ EOS
54
73
  end
55
74
  end
@@ -11,8 +11,11 @@ Capistrano::Configuration.instance(:must_exist).load do
11
11
  desc "Backup database"
12
12
  task :backup_db, :roles => :db, :except => { :no_release => true } do
13
13
  mysql_credentials = fetch :mysql_credentials
14
+ mysql_db_name = fetch :mysql_db_name
14
15
  MYSQL_DB_BACKUP_PATH = "#{deploy_to}/backups/#{mysql_db_name}_#{Time.now.strftime('%d-%m-%Y_%H-%M-%S')}.sql"
15
16
 
17
+ on_rollback { run "rm -f #{MYSQL_DB_BACKUP_PATH}" }
18
+
16
19
  if exists?(:mysql_credentials)
17
20
  begin
18
21
  run <<-CMD
@@ -39,6 +42,7 @@ Capistrano::Configuration.instance(:must_exist).load do
39
42
  desc "drop database"
40
43
  task :drop_db, :roles => :db, :except => { :no_release => true } do
41
44
  mysql_credentials = fetch :mysql_credentials
45
+ mysql_db_name = fetch :mysql_db_name
42
46
 
43
47
  unless mysql_credentials.blank?
44
48
  begin
@@ -56,9 +60,69 @@ Capistrano::Configuration.instance(:must_exist).load do
56
60
  end
57
61
  end
58
62
 
63
+ desc "create database user"
64
+ task :create_db_user, :roles => :db, :except => { :no_release => true } do
65
+ mysql_root_credentials = fetch :mysql_root_credentials
66
+ mysql_db_user = fetch :mysql_db_user
67
+ random_file = random_tmp_file mysql_root_credentials[:pass]
68
+
69
+ unless mysql_root_credentials.blank?
70
+ set :mysql_db_pass, -> { gen_pass(8) }
71
+ mysql_create = ""
72
+
73
+ mysql_db_hosts.each do |host|
74
+ mysql_create << <<-EOS
75
+ CREATE USER '#{mysql_db_user}'@'#{host}' IDENTIFIED BY '#{fetch :mysql_db_pass}';
76
+ GRANT ALL ON `#{fetch :application}\_%`.* TO '#{mysql_db_user}'@'#{host}';
77
+ FLUSH PRIVILEGES;
78
+ EOS
79
+ end
80
+
81
+ put mysql_create, random_file
82
+
83
+ begin
84
+ run <<-CMD
85
+ mysql \
86
+ --host='#{mysql_root_credentials[:host]}' \
87
+ --user='#{mysql_root_credentials[:user]}' \
88
+ --password='#{mysql_root_credentials[:pass]}' \
89
+ --default-character-set=utf8 < \
90
+ #{random_file}
91
+ CMD
92
+
93
+ run <<-CMD
94
+ rm -f #{random_file}
95
+ CMD
96
+
97
+ find_and_execute_task("mysql:write_db_credentials")
98
+ rescue
99
+ puts "WARNING: The user #{application} already exists."
100
+ find_and_execute_task("mysql:print_db_credentials")
101
+ end
102
+ end
103
+ end
104
+
105
+ desc "write database credentials"
106
+ task :write_db_credentials do
107
+ mysql_credentials_file = fetch :mysql_credentials_file
108
+ unless exists?(:mysql_credentials_file) and remote_file_exists?(mysql_credentials_file)
109
+ put mysql_credentials, mysql_credentials_file
110
+ end
111
+ end
112
+
113
+ desc "print database credentials"
114
+ task :print_db_credentials do
115
+ mysql_credentials_file = fetch :mysql_credentials_file
116
+ unless exists?(:mysql_credentials_file) and remote_file_exists?(mysql_credentials_file)
117
+ puts "WARNING: mysql_credentials_file is not defined in config.rb you have to manually copy the following info into a credential file and define it"
118
+ puts mysql_credentials
119
+ end
120
+ end
121
+
59
122
  desc "create database"
60
123
  task :create_db, :roles => :db, :except => { :no_release => true } do
61
124
  mysql_credentials = fetch :mysql_credentials
125
+ mysql_db_name = fetch :mysql_db_name
62
126
 
63
127
  unless mysql_credentials.blank?
64
128
  begin
@@ -77,7 +141,10 @@ Capistrano::Configuration.instance(:must_exist).load do
77
141
 
78
142
  desc "Import a database dump"
79
143
  task :import_db_dump, :roles => :db, :except => { :no_release => true } do
144
+ on_rollback { run "rm -f /tmp/#{mysql_db_name}_dump.sql" }
145
+
80
146
  mysql_credentials = fetch :mysql_credentials
147
+ mysql_db_name = fetch :mysql_db_name
81
148
 
82
149
  unless ARGV.size >=2 and File.exists?(ARGV[1])
83
150
  puts "ERROR: please run 'cap mysql:import_db_dump <sql dump>'"
@@ -112,6 +179,8 @@ Capistrano::Configuration.instance(:must_exist).load do
112
179
 
113
180
  desc "Export a database dump"
114
181
  task :export_db_dump, :roles => :db, :except => { :no_release => true } do
182
+ on_rollback { run "rm -f /tmp/#{File.basename MYSQL_DB_BACKUP_PATH}{,.bz2" }
183
+
115
184
  mysql_credentials = fetch :mysql_credentials
116
185
 
117
186
  unless ARGV.size >=2 or File.exists?(ARGV[1])
@@ -152,12 +221,20 @@ Capistrano::Configuration.instance(:must_exist).load do
152
221
  set :mysql_credentials, false
153
222
  end
154
223
 
155
- if exists?(:mysql_credentials_file_contents)
156
- set :mysql_credentials, {
157
- host: mysql_credentials_file_contents.match(mysql_credentials_host_regex)[mysql_credentials_host_regex_match].chomp,
158
- user: mysql_credentials_file_contents.match(mysql_credentials_user_regex)[mysql_credentials_user_regex_match].chomp,
159
- pass: mysql_credentials_file_contents.match(mysql_credentials_pass_regex)[mysql_credentials_pass_regex_match].chomp,
160
- }
224
+ if exists?(:mysql_credentials_file_contents)
225
+ mysql_credentials_file_contents = fetch :mysql_credentials_file_contents
226
+
227
+ unless mysql_credentials_file_contents.blank?
228
+ mysql_credentials = {
229
+ host: mysql_credentials_file_contents.match(mysql_credentials_host_regex).try(:[], mysql_credentials_host_regex_match).try(:chomp),
230
+ user: mysql_credentials_file_contents.match(mysql_credentials_user_regex).try(:[], mysql_credentials_user_regex_match).try(:chomp),
231
+ pass: mysql_credentials_file_contents.match(mysql_credentials_pass_regex).try(:[], mysql_credentials_pass_regex_match).try(:chomp),
232
+ }
233
+
234
+ if mysql_credentials[:user].present? and mysql_credentials[:pass].present?
235
+ set :mysql_credentials, mysql_credentials
236
+ end
237
+ end
161
238
  end
162
239
  end
163
240
 
@@ -185,12 +262,19 @@ Capistrano::Configuration.instance(:must_exist).load do
185
262
  set :mysql_root_credentials, false
186
263
  end
187
264
 
188
- if exists?(:mysql_root_credentials_file_contents)
189
- set :mysql_root_credentials, {
190
- host: mysql_root_credentials_file_contents.match(mysql_root_credentials_host_regex)[mysql_root_credentials_host_regex_match].chomp,
191
- user: mysql_root_credentials_file_contents.match(mysql_root_credentials_user_regex)[mysql_root_credentials_user_regex_match].chomp,
192
- pass: mysql_root_credentials_file_contents.match(mysql_root_credentials_pass_regex)[mysql_root_credentials_pass_regex_match].chomp,
193
- }
265
+ if exists?(:mysql_root_credentials_file_contents)
266
+ mysql_root_credentials_file_contents = fetch :mysql_root_credentials_file_contents
267
+ unless mysql_root_credentials_file_contents.blank?
268
+ mysql_root_credentials = {
269
+ host: mysql_root_credentials_file_contents.match(mysql_root_credentials_host_regex).try(:[], mysql_root_credentials_host_regex_match).try(:chomp),
270
+ user: mysql_root_credentials_file_contents.match(mysql_root_credentials_user_regex).try(:[], mysql_root_credentials_user_regex_match).try(:chomp),
271
+ pass: mysql_root_credentials_file_contents.match(mysql_root_credentials_pass_regex).try(:[], mysql_root_credentials_pass_regex_match).try(:chomp),
272
+ }
273
+
274
+ if mysql_root_credentials[:user].present? and mysql_root_credentials[:pass].present?
275
+ set :mysql_root_credentials, mysql_root_credentials
276
+ end
277
+ end
194
278
  end
195
279
  end
196
280
 
@@ -211,4 +295,6 @@ Capistrano::Configuration.instance(:must_exist).load do
211
295
  before "mysql:create_db", "mysql:credentials"
212
296
  before "mysql:import_db_dump", "mysql:backup_db"
213
297
  before "mysql:export_db_dump", "mysql:backup_db"
298
+ before "mysql:create_db_user", "mysql:root_credentials"
299
+ after "mysql:create_db_user", "mysql:create_db"
214
300
  end
@@ -1,5 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require 'capistrano-exts/receipts/mysql'
4
+
3
5
  # Verify that Capistrano is version 2
4
6
  unless Capistrano::Configuration.respond_to?(:instance)
5
7
  abort "This extension requires Capistrano 2"
@@ -9,11 +11,19 @@ Capistrano::Configuration.instance(:must_exist).load do
9
11
  namespace :deploy do
10
12
  namespace :server do
11
13
  namespace :db_server do
12
- desc "Setup db server"
13
- task :setup, :roles => :db do
14
+ desc "[internal] Prepare the database server"
15
+ task :prepare, :roles => :db do
16
+ # Empty task, server preparation goes into callbacks
17
+ end
18
+
19
+ desc "[internal] Finished preparing the database server"
20
+ task :finish, :roles => :db do
14
21
  # Empty task, server preparation goes into callbacks
15
22
  end
16
23
  end
17
24
  end
18
25
  end
26
+
27
+ before "deploy:server:db_server:prepare", "mysql:create_db_user"
28
+ after "deploy:server:db_server:prepare", "deploy:server:db_server:finish"
19
29
  end
@@ -15,8 +15,13 @@ Capistrano::Configuration.instance(:must_exist).load do
15
15
  namespace :deploy do
16
16
  namespace :server do
17
17
  namespace :web_server do
18
- desc "Setup web server"
19
- task :setup, :roles => :web do
18
+ desc "Prepare the web server"
19
+ task :prepare, :roles => :web do
20
+ # Empty task, server preparation goes into callbacks
21
+ end
22
+
23
+ desc "Finished preparing the web server"
24
+ task :finish do
20
25
  # Empty task, server preparation goes into callbacks
21
26
  end
22
27
 
@@ -65,7 +70,7 @@ Capistrano::Configuration.instance(:must_exist).load do
65
70
  if exists?(:web_server_auth_file)
66
71
  web_server_auth_file = fetch :web_server_auth_file
67
72
  web_server_auth_file_contents = fetch :web_server_auth_file_contents
68
- random_file = "/tmp/#{fetch :application}_#{Digest::SHA1.hexdigest web_server_auth_file_contents}"
73
+ random_file = random_tmp_file web_server_auth_file_contents
69
74
 
70
75
  run <<-CMD
71
76
  #{try_sudo} mkdir -p #{File.dirname web_server_auth_file}
@@ -96,16 +101,12 @@ Capistrano::Configuration.instance(:must_exist).load do
96
101
  CMD
97
102
  end
98
103
  end
99
-
100
- task :finish do
101
- # Empty task for callbacks
102
- end
103
104
  end
104
105
  end
105
106
  end
106
107
 
107
- before "deploy:server:web_server:setup", "deploy:server:web_server:generate_web_configuration"
108
- after "deploy:server:web_server:setup", "deploy:server:web_server:finish"
108
+ before "deploy:server:web_server:prepare", "deploy:server:web_server:generate_web_configuration"
109
+ after "deploy:server:web_server:prepare", "deploy:server:web_server:finish"
109
110
  after "deploy:server:web_server:generate_web_configuration", "deploy:server:web_server:generate_authentification"
110
111
  after "deploy:server:web_server:generate_web_configuration", "deploy:server:web_server:write_web_conf_file"
111
112
  after "deploy:server:web_server:generate_authentification", "deploy:server:web_server:write_web_server_auth_file"
@@ -15,7 +15,7 @@ end
15
15
  Capistrano::Configuration.instance(:must_exist).load do
16
16
  namespace :deploy do
17
17
  namespace :server do
18
- namespace :setup do
18
+ namespace :prepare do
19
19
  desc "Prepare the server (database server, web server and folders)"
20
20
  task :default do
21
21
  # Empty task, server preparation goes into callbacks
@@ -43,9 +43,9 @@ Capistrano::Configuration.instance(:must_exist).load do
43
43
  end
44
44
 
45
45
  # Callbacks
46
- before "deploy:server:setup", "deploy:server:setup:folders"
47
- after "deploy:server:setup", "deploy:server:setup:finish"
46
+ before "deploy:server:prepare", "deploy:server:prepare:folders"
47
+ after "deploy:server:prepare", "deploy:server:prepare:finish"
48
48
 
49
- after "deploy:server:setup:folders", "deploy:server:db_server:setup"
50
- after "deploy:server:setup:folders", "deploy:server:web_server:setup"
49
+ after "deploy:server:prepare:folders", "deploy:server:db_server:prepare"
50
+ after "deploy:server:prepare:folders", "deploy:server:web_server:prepare"
51
51
  end
@@ -5,7 +5,7 @@ module Capistrano
5
5
  module Server
6
6
  class Nginx < WebServer
7
7
 
8
- AVAILABLE_MODES = [:passenger, :rails_reverse_proxy, :php_fpm]
8
+ AVAILABLE_MODES = [:passenger, :reverse_proxy, :php_fpm]
9
9
  NGINX_TEMPLATE_PATH = ROOT_PATH + '/capistrano-exts/templates/web_servers/nginx.conf.erb'
10
10
 
11
11
  def initialize(mode, template_path = NGINX_TEMPLATE_PATH)
@@ -17,7 +17,7 @@ module Capistrano
17
17
  end
18
18
 
19
19
  def reverse_proxy?
20
- @mode == :rails_reverse_proxy
20
+ @mode == :reverse_proxy
21
21
  end
22
22
 
23
23
  def mod_rewrite?
@@ -5,9 +5,11 @@ role :web, 'root@nasreddine.com:22'
5
5
  role :app, 'root@nasreddine.com:22'
6
6
  role :db, 'root@nasreddine.com:22', primary: true
7
7
 
8
- # Permissions (ownership)
9
- set :app_owner, 'www'
10
- set :app_group, 'www'
8
+ # Permissions and ownership
9
+ # Uncomment if necessary...
10
+ # set :app_owner, 'www-data'
11
+ # set :app_group, 'www-data'
12
+ # set :group_writable, true
11
13
 
12
14
  # The project's branch to use
13
15
  # Uncomment and edit this if you're using git, for other SCM's please refer
@@ -29,22 +31,49 @@ set :keep_releases, 5
29
31
  # Using RVM? Set this to the ruby version/gemset to use
30
32
  set :rvm_ruby_string, "1.9.2"
31
33
 
32
- # Mysql credentials
34
+ #############
35
+ # Mysql
36
+ #
37
+
38
+ # What is the database name for this project/stage ?
39
+ set :mysql_db_name, -> { "#{fetch :application}_#{fetch :stage}" }
40
+
41
+ # What is the database user ?
42
+ # NOTE: This is only used if you run deploy:server:prepare which calls mysql:create_db_user
43
+ set :mysql_db_user, -> { "#{fetch :application}" }
44
+
45
+ # Where the database credentials are stored on the server ?
33
46
  set :mysql_credentials_file, -> { "#{deploy_to}/.mysql_password"}
47
+
48
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
34
49
  set :mysql_credentials_host_regex, /hostname: (.*)$/o
35
50
  set :mysql_credentials_host_regex_match, 1
51
+
52
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
36
53
  set :mysql_credentials_user_regex, /username: (.*)$/o
37
54
  set :mysql_credentials_user_regex_match, 1
55
+
56
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
38
57
  set :mysql_credentials_pass_regex, /password: (.*)$/o
39
58
  set :mysql_credentials_pass_regex_match, 1
59
+
60
+ # Where can we find root credentials ?
61
+ # NOTE: These options are only used if you run deploy:server:prepare which calls mysql:create_db_user
40
62
  set :mysql_root_credentials_file, "/root/.mysql_password"
63
+
64
+ # Define the regex / match that will be ran against the contents of the file above to fetch the hostname
41
65
  set :mysql_root_credentials_host_regex, /hostname: (.*)$/o
42
66
  set :mysql_root_credentials_host_regex_match, 1
67
+
68
+ # Define the regex / match that will be ran against the contents of the file above to fetch the username
43
69
  set :mysql_root_credentials_user_regex, /username: (.*)$/o
44
70
  set :mysql_root_credentials_user_regex_match, 1
71
+
72
+ # Define the regex / match that will be ran against the contents of the file above to fetch the password
45
73
  set :mysql_root_credentials_pass_regex, /password: (.*)$/o
46
74
  set :mysql_root_credentials_pass_regex_match, 1
47
75
 
76
+
48
77
  #############
49
78
  # Web server
50
79
  #
@@ -93,14 +122,14 @@ set :web_server_mod_rewrite, true
93
122
  # Valid options:
94
123
  #
95
124
  # For Nginx:
96
- # => :rails_reverse_proxy, :passenger, :php_fpm
97
- # => :rails_reverse_proxy is used for unicorn (Rack apps)
125
+ # => :reverse_proxy, :passenger, :php_fpm
126
+ # => :reverse_proxy is used for unicorn (Rack apps)
98
127
  # => :passenger runs rails apps
99
128
  # => :php_fpm is used to deliver websites written using PHP
100
129
  #
101
130
  # For Apache
102
131
  # =>
103
- set :web_server_mode, :rails_reverse_proxy
132
+ set :web_server_mode, :reverse_proxy
104
133
 
105
134
  # Server mode specific configurations
106
135
  # Uncomment and edit the one depending on the enabled mode
@@ -2,8 +2,8 @@ module Capistrano
2
2
  module Extensions
3
3
  module Version #:nodoc:
4
4
  MAJOR = 1
5
- MINOR = 0
6
- TINY = 1
5
+ MINOR = 1
6
+ TINY = 0
7
7
 
8
8
  ARRAY = [MAJOR, MINOR, TINY]
9
9
  STRING = ARRAY.join(".")
@@ -31,7 +31,7 @@ describe Nginx do
31
31
 
32
32
  end
33
33
 
34
- describe ":rails_reverse_proxy" do
34
+ describe ":reverse_proxy" do
35
35
 
36
36
  end
37
37
 
@@ -83,8 +83,8 @@ describe Nginx do
83
83
  end
84
84
  end
85
85
 
86
- describe ":rails_reverse_proxy" do
87
- subject { Nginx.new :rails_reverse_proxy }
86
+ describe ":reverse_proxy" do
87
+ subject { Nginx.new :reverse_proxy }
88
88
 
89
89
  before(:each) do
90
90
  subject.application_url = %w{example.com www.example.com}
@@ -225,8 +225,8 @@ describe Nginx do
225
225
  end
226
226
  end
227
227
 
228
- describe ":rails_reverse_proxy" do
229
- subject { Nginx.new :rails_reverse_proxy }
228
+ describe ":reverse_proxy" do
229
+ subject { Nginx.new :reverse_proxy }
230
230
 
231
231
  before(:each) do
232
232
  subject.application_url = %w{example.com www.example.com}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-exts
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-09-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
16
- requirement: &2156371700 !ruby/object:Gem::Requirement
16
+ requirement: &2161009320 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.8.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2156371700
24
+ version_requirements: *2161009320
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: i18n
27
- requirement: &2156370900 !ruby/object:Gem::Requirement
27
+ requirement: &2161008820 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.6.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2156370900
35
+ version_requirements: *2161008820
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &2156370320 !ruby/object:Gem::Requirement
38
+ requirement: &2152515960 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 3.1.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2156370320
46
+ version_requirements: *2152515960
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: guard
49
- requirement: &2156384460 !ruby/object:Gem::Requirement
49
+ requirement: &2152514760 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.6.2
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2156384460
57
+ version_requirements: *2152514760
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: guard-bundler
60
- requirement: &2156382840 !ruby/object:Gem::Requirement
60
+ requirement: &2152512100 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 0.1.3
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2156382840
68
+ version_requirements: *2152512100
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: guard-rspec
71
- requirement: &2156382080 !ruby/object:Gem::Requirement
71
+ requirement: &2152509640 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 0.4.3
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2156382080
79
+ version_requirements: *2152509640
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &2156381120 !ruby/object:Gem::Requirement
82
+ requirement: &2152509160 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 2.6.0
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *2156381120
90
+ version_requirements: *2152509160
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: mocha
93
- requirement: &2156380360 !ruby/object:Gem::Requirement
93
+ requirement: &2152508660 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.2.12
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *2156380360
101
+ version_requirements: *2152508660
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: factory_girl
104
- requirement: &2156379840 !ruby/object:Gem::Requirement
104
+ requirement: &2161039720 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: 2.0.5
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *2156379840
112
+ version_requirements: *2161039720
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: faker19
115
- requirement: &2156379320 !ruby/object:Gem::Requirement
115
+ requirement: &2161039260 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: 1.0.5
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *2156379320
123
+ version_requirements: *2161039260
124
124
  description: Handy extensions for Capistrano
125
125
  email:
126
126
  - wael.nasreddine@gmail.com