metastrano 1.0.0 → 1.1.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.
- data/lib/helpers.rb +0 -7
- data/lib/metastrano.rb +38 -7
- data/lib/recipes/apache.rb +7 -1
- data/lib/recipes/db.rb +3 -3
- data/lib/recipes/delayed_job.rb +29 -0
- data/lib/recipes/deploy.rb +1 -1
- data/lib/recipes/setup.rb +1 -0
- data/lib/recipes/symlink.rb +7 -0
- data/lib/recipes/wordpress.rb +72 -0
- data/lib/templates/wordpress.2.8.6.php.erb +76 -0
- metadata +5 -2
data/lib/helpers.rb
CHANGED
data/lib/metastrano.rb
CHANGED
@@ -3,17 +3,48 @@ require 'capistrano/cli'
|
|
3
3
|
|
4
4
|
Capistrano::Configuration.instance(:must_exist).load do
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
#----------------------------------------------------------------
|
7
|
+
# configuration & defaults
|
8
|
+
#----------------------------------------------------------------
|
9
|
+
|
10
|
+
set :config_files, 'database.yml'
|
11
|
+
set :shared_children, %w(system log pids config)
|
12
|
+
set :environment, 'production'
|
13
|
+
set :repo_path, '/home/git'
|
10
14
|
set :ruby_path, '/opt/ruby-enterprise-1.8.7-2009.10/bin/'
|
11
|
-
set :user, 'capistrano'
|
15
|
+
set :user, 'capistrano'
|
12
16
|
|
13
17
|
# version control
|
14
18
|
set :scm, :git
|
15
19
|
set :scm_username, :git
|
20
|
+
|
21
|
+
# wordpress defaualts
|
22
|
+
set :wordpress_version, '2.8.6'
|
23
|
+
set :wordpress_symlinks, ["wp-content/avatars","wp-content/uploads","wp-content/cache"]
|
24
|
+
set :wordpress_editable_dirs, ["wp-content/uploads"]
|
25
|
+
|
26
|
+
#----------------------------------------------------------------
|
27
|
+
# filters
|
28
|
+
#----------------------------------------------------------------
|
29
|
+
|
30
|
+
# after application setup
|
31
|
+
after "deploy:setup" do
|
32
|
+
db.mysql.setup if Capistrano::CLI.ui.agree("Do you want to create the database, user, and config/database.yml file?")
|
33
|
+
apache.create_vhost if Capistrano::CLI.ui.agree("Do you want to create the apache virtual host file?")
|
34
|
+
end
|
35
|
+
|
36
|
+
#----------------------------------------------------------------
|
37
|
+
# helper methods
|
38
|
+
#----------------------------------------------------------------
|
16
39
|
|
40
|
+
def metastrano_symlink(existing_path, symlinked_path)
|
41
|
+
sudo "ln -nfs #{existing_path} #{symlinked_path}"
|
42
|
+
end
|
43
|
+
|
44
|
+
def metastrano_chmod(file, ownership = '0777')
|
45
|
+
sudo "chmod #{ownership} -R #{file}"
|
46
|
+
end
|
47
|
+
|
17
48
|
def metastrano_load_template_file(file_name)
|
18
49
|
local_file = "config/metastrano/#{file_name}"
|
19
50
|
file_path = File.exists?(local_file) ? local_file : MetaStrano.path + "/templates/#{file_name}"
|
@@ -28,8 +59,8 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
28
59
|
def prepare_for_db_command
|
29
60
|
set :db_name, "#{application}_#{environment}" unless exists?(:db_name)
|
30
61
|
set(:db_admin_user) { Capistrano::CLI.ui.ask "Username with priviledged database access (to create db):" } unless exists?(:db_admin_user)
|
31
|
-
set(:db_user) { Capistrano::CLI.ui.ask "Enter
|
32
|
-
set(:db_pass) { Capistrano::CLI.password_prompt "Enter
|
62
|
+
set(:db_user) { Capistrano::CLI.ui.ask "Enter database username:" } unless exists?(:db_user)
|
63
|
+
set(:db_pass) { Capistrano::CLI.password_prompt "Enter database password:" } unless exists?(:db_pass)
|
33
64
|
end
|
34
65
|
end
|
35
66
|
|
data/lib/recipes/apache.rb
CHANGED
@@ -17,7 +17,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
17
17
|
vhost = metastrano_load_erb_file('apache.conf.erb')
|
18
18
|
|
19
19
|
# uploads the above vhost file onto the server
|
20
|
-
put vhost
|
20
|
+
put vhost, "#{shared_path}/config/#{application}.conf"
|
21
21
|
|
22
22
|
# removes any existing apache conf files
|
23
23
|
sudo "rm -f /etc/httpd/conf.d/#{application}.conf"
|
@@ -26,6 +26,12 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
26
26
|
# make a symbolic link back to the shared config directory
|
27
27
|
sudo "ln -nfs /etc/httpd/conf.d/#{application}.conf #{shared_path}/config/#{application}.conf"
|
28
28
|
end
|
29
|
+
|
30
|
+
desc "Chown files and folders for apache. This is used primarily for the wordpress uploads folders"
|
31
|
+
task :restart, :roles => :app, :except => { :no_release => true } do
|
32
|
+
apache.restart
|
33
|
+
end
|
34
|
+
|
29
35
|
end
|
30
36
|
|
31
37
|
end
|
data/lib/recipes/db.rb
CHANGED
@@ -47,13 +47,13 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
47
47
|
run "mkdir -p #{shared_path}/config"
|
48
48
|
db_config = metastrano_load_erb_file('database.yml.erb')
|
49
49
|
# uploads the database.yml config file
|
50
|
-
put db_config
|
50
|
+
put db_config, "#{shared_path}/config/database.yml"
|
51
51
|
end
|
52
52
|
|
53
53
|
desc "Updates the symlink for database.yml file to the just deployed release."
|
54
54
|
task :symlink, :except => { :no_release => true } do
|
55
|
-
run "rm -f #{
|
56
|
-
run "ln -nfs #{shared_path}/config/database.yml #{
|
55
|
+
run "rm -f #{current_path}/config/database.yml"
|
56
|
+
run "ln -nfs #{shared_path}/config/database.yml #{current_path}/config/database.yml"
|
57
57
|
end
|
58
58
|
|
59
59
|
desc "Loads remote production data into development database. Uses your local database.yml file for development and production passwords"
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
|
3
|
+
#----------------------------------------------------------------
|
4
|
+
# DelayedJob
|
5
|
+
# - Restart stops and starts because
|
6
|
+
# - I found the restart command to be buggy
|
7
|
+
#----------------------------------------------------------------
|
8
|
+
|
9
|
+
namespace :delayed_job do
|
10
|
+
|
11
|
+
desc "Restart the delayed_job process"
|
12
|
+
task :restart, :roles => :app do
|
13
|
+
stop
|
14
|
+
start
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Start the delayed_job process"
|
18
|
+
task :start, :roles => :app do
|
19
|
+
run "cd #{current_path}; #{sudo} RAILS_ENV=#{rails_env} script/delayed_job start"
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "Stop the delayed_job process"
|
23
|
+
task :stop, :roles => :app do
|
24
|
+
run "cd #{current_path}; #{sudo} RAILS_ENV=#{rails_env} script/delayed_job stop"
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
data/lib/recipes/deploy.rb
CHANGED
@@ -13,7 +13,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
13
13
|
|
14
14
|
desc "Update the crontab file if you are using the whenever GEM"
|
15
15
|
task :update_crontab, :roles => :db do
|
16
|
-
run "cd #{
|
16
|
+
run "cd #{current_path} && #{sudo} whenever --update-crontab #{application}"
|
17
17
|
end
|
18
18
|
|
19
19
|
[:start, :stop].each do |t|
|
data/lib/recipes/setup.rb
CHANGED
@@ -11,6 +11,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
11
11
|
run_locally "cp #{MetaStrano.path}/templates/apache.conf.erb config/metastrano/apache.conf.erb"
|
12
12
|
run_locally "cp #{MetaStrano.path}/templates/database.yml.erb config/metastrano/database.yml.erb"
|
13
13
|
run_locally "cp #{MetaStrano.path}/templates/gitignore.erb config/metastrano/gitignore.erb"
|
14
|
+
run_locally "cp #{MetaStrano.path}/templates/wordpress.#{wordpress_version}.php.erb config/metastrano/wordpress.#{wordpress_version}.php.erb"
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
data/lib/recipes/symlink.rb
CHANGED
@@ -5,6 +5,13 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
5
5
|
#----------------------------------------------------------------
|
6
6
|
|
7
7
|
namespace :symlink do
|
8
|
+
desc "Creates shared directories and symlinks shared directories and files"
|
9
|
+
task :setup, :roles => :app do
|
10
|
+
create_shared_dirs
|
11
|
+
shared_directories
|
12
|
+
shared_config_files
|
13
|
+
end
|
14
|
+
|
8
15
|
desc <<-DESC
|
9
16
|
Create shared directories. Specify which directories are shared via:
|
10
17
|
set :shared_dirs, %w(avatars videos)
|
@@ -0,0 +1,72 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
|
3
|
+
#----------------------------------------------------------------
|
4
|
+
# Wordpress
|
5
|
+
#
|
6
|
+
# create wordpress database and its user
|
7
|
+
# create the wp-config file
|
8
|
+
# symlink the wo-config file from its shared/config/wp-config file to current_path/blog/wp-config.php
|
9
|
+
# symlink any uploadable assets
|
10
|
+
#
|
11
|
+
#----------------------------------------------------------------
|
12
|
+
|
13
|
+
namespace :wordpress do
|
14
|
+
desc "Setup the database"
|
15
|
+
task :create_database do
|
16
|
+
set :db_name, "#{application}_wordpress"
|
17
|
+
prepare_for_db_command
|
18
|
+
db.mysql.create_db
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "Generate the config file"
|
22
|
+
task :create_config_file do
|
23
|
+
prepare_for_db_command
|
24
|
+
set :db_name, "#{application}_wordpress"
|
25
|
+
config_file = metastrano_load_erb_file("wordpress.#{wordpress_version}.php.erb")
|
26
|
+
|
27
|
+
# uploads the above vhost file onto the server
|
28
|
+
put config_file, "#{shared_path}/config/wp-config.php"
|
29
|
+
|
30
|
+
# removes any existing wp-config files
|
31
|
+
sudo "rm -f #{current_path}/blog/wp-config.php"
|
32
|
+
end
|
33
|
+
|
34
|
+
desc "Symlink the files for 'avatars', 'uploads' and 'cache'. Override this by setting :wordpress_symlinks"
|
35
|
+
task :symlink_folders do
|
36
|
+
wordpress_symlinks.each do |path|
|
37
|
+
sudo "mkdir -p #{shared_path}/blog/#{path}"
|
38
|
+
sudo "rm -f #{current_path}/public/blog/#{path}"
|
39
|
+
metastrano_symlink("#{shared_path}/blog/#{path}", "#{current_path}/public/blog/#{path}")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
desc "Symlink the wp-config file from shared_path/config/wp-config to current_path/public/blog/wp-config"
|
44
|
+
task :symlink_config_file do
|
45
|
+
sudo "rm -f #{current_path}/public/blog/wp-config.php"
|
46
|
+
metastrano_symlink("#{shared_path}/config/wp-config.php", "#{current_path}/public/blog/wp-config.php")
|
47
|
+
end
|
48
|
+
|
49
|
+
desc "Creates the database and its user, uploads the wp-config file, and symlinks the shared/config file with your current_path directory"
|
50
|
+
task :setup do
|
51
|
+
prepare_for_db_command
|
52
|
+
create_database
|
53
|
+
create_config_file
|
54
|
+
create_symlinks
|
55
|
+
make_folders_editable
|
56
|
+
end
|
57
|
+
|
58
|
+
desc "Symlinks the config files and image-uploads, avitar and cache folders"
|
59
|
+
task :create_symlinks do
|
60
|
+
symlink_config_file
|
61
|
+
symlink_folders
|
62
|
+
end
|
63
|
+
|
64
|
+
desc "Makes the necessary folders editable such as the wp-content/uploads directory"
|
65
|
+
task :make_folders_editable do
|
66
|
+
wordpress_editable_dirs.each do |path|
|
67
|
+
metastrano_chmod("#{shared_path}/blog/#{path}")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
<?php
|
2
|
+
/**
|
3
|
+
* The base configurations of the WordPress.
|
4
|
+
*
|
5
|
+
* This file has the following configurations: MySQL settings, Table Prefix,
|
6
|
+
* Secret Keys, WordPress Language, and ABSPATH. You can find more information by
|
7
|
+
* visiting {@link http://codex.wordpress.org/Editing_wp-config.php Editing
|
8
|
+
* wp-config.php} Codex page. You can get the MySQL settings from your web host.
|
9
|
+
*
|
10
|
+
* This file is used by the wp-config.php creation script during the
|
11
|
+
* installation. You don't have to use the web site, you can just copy this file
|
12
|
+
* to "wp-config.php" and fill in the values.
|
13
|
+
*
|
14
|
+
* @package WordPress
|
15
|
+
*/
|
16
|
+
|
17
|
+
// ** MySQL settings - You can get this info from your web host ** //
|
18
|
+
/** The name of the database for WordPress */
|
19
|
+
define('DB_NAME', '<%= db_name %>');
|
20
|
+
|
21
|
+
/** MySQL database username */
|
22
|
+
define('DB_USER', '<%= db_user %>');
|
23
|
+
|
24
|
+
/** MySQL database password */
|
25
|
+
define('DB_PASSWORD', '<%= db_pass %>');
|
26
|
+
|
27
|
+
/** MySQL hostname */
|
28
|
+
define('DB_HOST', 'localhost');
|
29
|
+
|
30
|
+
/** Database Charset to use in creating database tables. */
|
31
|
+
define('DB_CHARSET', 'utf8');
|
32
|
+
|
33
|
+
/** The Database Collate type. Don't change this if in doubt. */
|
34
|
+
define('DB_COLLATE', '');
|
35
|
+
|
36
|
+
/**#@+
|
37
|
+
* Authentication Unique Keys.
|
38
|
+
*
|
39
|
+
* Change these to different unique phrases!
|
40
|
+
* You can generate these using the {@link https://api.wordpress.org/secret-key/1.1/ WordPress.org secret-key service}
|
41
|
+
* You can change these at any point in time to invalidate all existing cookies. This will force all users to have to log in again.
|
42
|
+
*
|
43
|
+
* @since 2.6.0
|
44
|
+
*/
|
45
|
+
define('AUTH_KEY', 'put your unique phrase here');
|
46
|
+
define('SECURE_AUTH_KEY', 'put your unique phrase here');
|
47
|
+
define('LOGGED_IN_KEY', 'put your unique phrase here');
|
48
|
+
define('NONCE_KEY', 'put your unique phrase here');
|
49
|
+
/**#@-*/
|
50
|
+
|
51
|
+
/**
|
52
|
+
* WordPress Database Table prefix.
|
53
|
+
*
|
54
|
+
* You can have multiple installations in one database if you give each a unique
|
55
|
+
* prefix. Only numbers, letters, and underscores please!
|
56
|
+
*/
|
57
|
+
$table_prefix = 'wp_';
|
58
|
+
|
59
|
+
/**
|
60
|
+
* WordPress Localized Language, defaults to English.
|
61
|
+
*
|
62
|
+
* Change this to localize WordPress. A corresponding MO file for the chosen
|
63
|
+
* language must be installed to wp-content/languages. For example, install
|
64
|
+
* de.mo to wp-content/languages and set WPLANG to 'de' to enable German
|
65
|
+
* language support.
|
66
|
+
*/
|
67
|
+
define ('WPLANG', '');
|
68
|
+
|
69
|
+
/* That's all, stop editing! Happy blogging. */
|
70
|
+
|
71
|
+
/** WordPress absolute path to the Wordpress directory. */
|
72
|
+
if ( !defined('ABSPATH') )
|
73
|
+
define('ABSPATH', dirname(__FILE__) . '/');
|
74
|
+
|
75
|
+
/** Sets up WordPress vars and included files. */
|
76
|
+
require_once(ABSPATH . 'wp-settings.php');
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metastrano
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Paul Narowski
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-02-16 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -61,14 +61,17 @@ files:
|
|
61
61
|
- lib/metastrano.rb
|
62
62
|
- lib/recipes/apache.rb
|
63
63
|
- lib/recipes/db.rb
|
64
|
+
- lib/recipes/delayed_job.rb
|
64
65
|
- lib/recipes/deploy.rb
|
65
66
|
- lib/recipes/git.rb
|
66
67
|
- lib/recipes/rake.rb
|
67
68
|
- lib/recipes/setup.rb
|
68
69
|
- lib/recipes/symlink.rb
|
70
|
+
- lib/recipes/wordpress.rb
|
69
71
|
- lib/templates/apache.conf.erb
|
70
72
|
- lib/templates/database.yml.erb
|
71
73
|
- lib/templates/gitignore
|
74
|
+
- lib/templates/wordpress.2.8.6.php.erb
|
72
75
|
- test/helper.rb
|
73
76
|
- test/test_metastrano.rb
|
74
77
|
has_rdoc: true
|