metastrano 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|