capone 0.0.5 → 0.0.9

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/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # Capone
2
+
3
+ Capone is the set of Capistrano recipes that help me to deploy my
4
+ applications.
5
+
6
+ Capone by default uses Mongrel cluster (or Passenger) as an application
7
+ server, nginx as a web server, MySQL as a database server and git as a SCM.
8
+
9
+ The latest version of Capone was inspired by Rubaidh's
10
+ [Rubaidhstrano](http://github.com/rubaidh/rubaidhstrano) and some code has
11
+ been borrowed from its sources.
12
+
13
+ ## Installation
14
+
15
+ Capone could be installed either as a gem or as Rails plugin.
16
+
17
+ ### Gem (preferred)
18
+
19
+ Add to the end of your `config/environments/development.rb` file:
20
+
21
+ config.gem 'capone', :lib => false, :version => '>= 0.1.0'
22
+
23
+ ### Rails plugin
24
+
25
+ ./script/plugin install git://github.com/denis/capone.git
26
+
27
+ ## Example usage
28
+
29
+ To start using Capone you just need to add `require "capone"` to your
30
+ `config/deploy.rb` file (only if Capone is installed as a gem) and set some
31
+ variables:
32
+
33
+ require "capone"
34
+
35
+ set :application, "set your application name here"
36
+
37
+ set :repository, "set your repository location here"
38
+ set :host, "set your host here"
39
+
40
+ ## Features
41
+
42
+ In process...
43
+
44
+ ## Thanks
45
+
46
+ - Jamis Buck for [Capistrano](http://github.com/jamis/capistrano),
47
+ - Rubaidh Ltd for their awesome
48
+ [Rubaidhstrano](http://github.com/rubaidh/rubaidhstrano).
49
+
50
+ ## Copyright
51
+
52
+ Copyright (c) 2009 Denis Barushev. See LICENSE for details.
@@ -0,0 +1,6 @@
1
+ require "mongrel_cluster/recipes"
2
+
3
+ set :mongrel_conf, "#{deploy_to}/current/config/mongrel_cluster.yml"
4
+
5
+ depend :remote, :gem, "mongrel", ">=1.1.5"
6
+ depend :remote, :gem, "mongrel_cluster", ">=1.0.5"
@@ -0,0 +1,17 @@
1
+ namespace :deploy do
2
+ desc "Start application."
3
+ task :start, :roles => :app do
4
+ run "touch #{current_release}/tmp/restart.txt"
5
+ end
6
+
7
+ desc "Stop application."
8
+ task :stop, :roles => :app do
9
+ end
10
+
11
+ desc "Restart application."
12
+ task :restart, :roles => :app do
13
+ run "touch #{current_release}/tmp/restart.txt"
14
+ end
15
+ end
16
+
17
+ depend :remote, :gem, "passenger", ">=2.2.2"
@@ -0,0 +1,7 @@
1
+ on :load do
2
+ strategy = fetch(:daemon_strategy, :mongrel_cluster)
3
+
4
+ if [:passenger, :mongrel_cluster].include? strategy
5
+ load File.join(File.dirname(__FILE__), "daemon_strategies", "#{strategy}.rb")
6
+ end
7
+ end
data/recipes/db.rb ADDED
@@ -0,0 +1,98 @@
1
+ namespace :capone do
2
+ namespace :db do
3
+ desc <<-DESC
4
+ Create MySQL user and database using data from config/database.yml.
5
+ DESC
6
+ task :setup, :roles => :db, :only => { :primary => true } do
7
+ config = YAML::load(File.open("config/database.yml"))[rails_env]
8
+ root_password = Capistrano::CLI.password_prompt(prompt="Enter a root password for MySQL: ")
9
+
10
+ run "mysql --user='root' --password='#{root_password}' -e \"CREATE DATABASE IF NOT EXISTS #{config["database"]} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON #{config["database"]}.* TO '#{config["username"]}'@'localhost' IDENTIFIED BY '#{config["password"]}' WITH GRANT OPTION;\""
11
+ end
12
+
13
+ desc <<-DESC
14
+ Load fixtures from db/fixtures to the database.
15
+ DESC
16
+ task :load_fixtures, :roles => :db, :only => { :primary => true } do
17
+ run "rake db:fixtures:load FIXTURES_PATH=db/fixtures RAILS_ENV=#{rails_env} -f #{release_path}/Rakefile"
18
+ end
19
+
20
+ desc <<-DESC
21
+ Dumps the database for the current environment into db/env-data.sql.bz2.
22
+ Any existing backup will be overwritten.
23
+ DESC
24
+ task :backup, :roles => :db, :only => { :primary => true } do
25
+ config = YAML::load(File.open("config/database.yml"))[rails_env]
26
+ case config["adapter"]
27
+ when "mysql"
28
+ cmd = ["mysqldump"]
29
+ cmd << "--host='#{config['host']}'" unless config["host"].nil?
30
+ cmd << "--user='#{config['username'].nil? ? 'root' : config['username']}'"
31
+ cmd << "--password='#{config['password']}'" unless config["password"].nil?
32
+ cmd << config["database"]
33
+ cmd << "| bzip2 > #{release_path}/db/#{rails_env}-data.sql.bz2"
34
+ run cmd.join(" ")
35
+ else
36
+ puts "Task not supported by '#{config['adapter']}'."
37
+ end
38
+ end
39
+
40
+ desc <<-DESC
41
+ Dumps the database for the current environment and take a local copy.
42
+ DESC
43
+ task :download_backup, :roles => :db, :only => { :primary => true } do
44
+ backup
45
+ get "#{latest_release}/db/#{rails_env}-data.sql.bz2", "db/#{rails_env}-data.sql.bz2"
46
+ end
47
+
48
+ desc <<-DESC
49
+ Loads an existing database dump into the current environment's database.
50
+ WARNING: this completely nukes the existing database! Use SOURCE_ENV to
51
+ specify which dump should be loaded. Defaults to 'production'."
52
+ DESC
53
+ task :load_backup do
54
+ run_locally "rake db:drop"
55
+ run_locally "rake db:create"
56
+
57
+ config = YAML::load(File.open("config/database.yml"))[rails_env]
58
+ case config["adapter"]
59
+ when "mysql"
60
+ cmd = ["bzcat db/production-data.sql.bz2 | mysql"]
61
+ cmd << "--host='#{config['host']}'" unless config["host"].nil?
62
+ cmd << "--user='#{config['username'].nil? ? 'root' : config['username']}'"
63
+ cmd << "--password='#{config['password']}'" unless config["password"].nil?
64
+ cmd << config["database"]
65
+ run_locally cmd.join(" ")
66
+ else
67
+ puts "Task not supported by '#{config['adapter']}'."
68
+ end
69
+ end
70
+
71
+ task :replicate do
72
+ download_backup
73
+ load_backup
74
+ end
75
+ end
76
+ end
77
+
78
+ on :load do
79
+ if fetch(:setup_database_after_deploy_setup, true)
80
+ after "deploy:setup", "capone:db:setup"
81
+ end
82
+ if fetch(:load_fixtures_to_database_after_deploy_cold, false)
83
+ after "deploy:cold", "capone:db:load_fixtures"
84
+ end
85
+
86
+ if fetch(:backup_database_before_migrations, false)
87
+ before "deploy:migrate", "capone:db:backup"
88
+ end
89
+
90
+ if fetch(:disable_web_during_migrations, false)
91
+ before "deploy:migrations", "deploy:web:disable"
92
+ after "deploy:migrations", "deploy:web:enable"
93
+ end
94
+ end
95
+
96
+ depend :remote, :command, "mysql"
97
+ depend :remote, :command, "mysqldump"
98
+ depend :remote, :command, "bzip2"
@@ -0,0 +1,30 @@
1
+ set :scm, :git
2
+ set :deploy_via, :remote_cache
3
+
4
+ set :rails_env, "production"
5
+
6
+ set(:deploy_to) { "/var/www/apps/#{application}" }
7
+
8
+ role(:app) { host }
9
+ role(:web) { host }
10
+ role(:db, :primary => true) { host }
11
+
12
+ set :use_sudo, false
13
+
14
+ # Needed for proper password prompts
15
+ default_run_options[:pty] = true
16
+
17
+ # You can redefine these variables in your config/deploy.rb
18
+
19
+ # set :daemon_strategy, :mongrel_cluster
20
+ # set :web_server, :nginx
21
+
22
+ # set :install_gems, true
23
+
24
+ # set :backup_database_before_migrations, false
25
+ # set :disable_web_during_migrations, false
26
+ # set :setup_database_after_deploy_setup, true
27
+ # set :load_fixtures_to_database_after_deploy_cold, false
28
+
29
+ # set :whenever, false
30
+ # set :delayed_job, false
@@ -0,0 +1,7 @@
1
+ on :load do
2
+ if fetch(:delayed_job, false)
3
+ after "deploy:stop", "delayed_job:stop"
4
+ after "deploy:start", "delayed_job:start"
5
+ after "deploy:restart", "delayed_job:restart"
6
+ end
7
+ end
data/recipes/gems.rb ADDED
@@ -0,0 +1,23 @@
1
+ namespace :capone do
2
+ namespace :gems do
3
+ desc <<-DESC
4
+ Install gems needed by application.
5
+ DESC
6
+ task :install, :roles => :app do
7
+ run "rake gems:install -f #{release_path}/Rakefile RAILS_ENV=#{rails_env}"
8
+ end
9
+
10
+ desc <<-DESC
11
+ Update installed gems.
12
+ DESC
13
+ task :update, :roles => :app do
14
+ sudo "gem update --no-rdoc --no-ri"
15
+ end
16
+ end
17
+ end
18
+
19
+ on :load do
20
+ if fetch(:install_gems, true)
21
+ after "deploy:update_code", "capone:gems:install"
22
+ end
23
+ end
data/recipes/nginx.rb CHANGED
@@ -3,7 +3,7 @@ namespace :capone do
3
3
  desc <<-DESC
4
4
  Enable virtual host.
5
5
  DESC
6
- task :enable_vhost do
6
+ task :enable_vhost, :roles => :web do
7
7
  sudo "ln -fs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"
8
8
  sudo "/etc/init.d/nginx reload"
9
9
  end
@@ -11,16 +11,22 @@ namespace :capone do
11
11
  desc <<-DESC
12
12
  Disable virtual host.
13
13
  DESC
14
- task :disable_vhost do
14
+ task :disable_vhost, :roles => :web do
15
15
  sudo "rm /etc/nginx/sites-enabled/#{application}"
16
16
  sudo "/etc/init.d/nginx reload"
17
17
  end
18
18
 
19
19
  desc <<-DESC
20
- Reload nginx configuration if config file was changed.
20
+ Reload nginx configuration if the application nginx virtual host config file was changed.
21
21
  DESC
22
- task :reload_if_config_file_changed do
22
+ task :reload_if_config_file_changed, :roles => :web do
23
23
  run "bash -c \"if ! cmp #{previous_release}/config/nginx.conf #{current_path}/config/nginx.conf; then #{sudo} /etc/init.d/nginx reload; fi\""
24
24
  end
25
25
  end
26
26
  end
27
+
28
+ if fetch(:web_server, :nginx) == :nginx
29
+ before "deploy:start", "capone:nginx:enable_vhost"
30
+ after "deploy:stop", "capone:nginx:disable_vhost"
31
+ after "deploy:restart", "capone:nginx:reload_if_config_file_changed"
32
+ end
data/recipes/whenever.rb CHANGED
@@ -1,12 +1,16 @@
1
- # Original version of this file was excerpted from "Advanced Rails Recipes",
2
- # published by The Pragmatic Bookshelf.
3
- namespace :capone do
4
- namespace :whenever do
5
- desc <<-DESC
6
- Update the crontab file.
7
- DESC
8
- task :update_crontab, :roles => :db do
9
- run "cd #{release_path} && whenever --update-crontab #{application}"
10
- end
11
- end
12
- end
1
+ namespace :capone do
2
+ namespace :whenever do
3
+ desc <<-DESC
4
+ Update the crontab file with whenever.
5
+ DESC
6
+ task :update_crontab, :roles => :db do
7
+ run "cd #{release_path} && whenever --update-crontab #{application}"
8
+ end
9
+ end
10
+ end
11
+
12
+ on :load do
13
+ if fetch(:whenever, false)
14
+ after "deploy:symlink", "capone:whenever:update_crontab"
15
+ end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Barushev
@@ -9,10 +9,19 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-06 00:00:00 +00:00
12
+ date: 2009-12-09 00:00:00 +00:00
13
13
  default_executable:
14
- dependencies: []
15
-
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: capistrano
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.5.0
24
+ version:
16
25
  description:
17
26
  email: barushev@gmail.com
18
27
  executables: []
@@ -21,25 +30,20 @@ extensions: []
21
30
 
22
31
  extra_rdoc_files:
23
32
  - LICENSE
24
- - README.rdoc
33
+ - README.md
25
34
  files:
26
35
  - LICENSE
27
- - README.rdoc
28
- - Rakefile
36
+ - README.md
29
37
  - lib/capone.rb
30
- - recipes/backup.rb
31
- - recipes/deploy.rb
32
- - recipes/git.rb
33
- - recipes/install.rb
38
+ - recipes/daemon_strategies/mongrel_cluster.rb
39
+ - recipes/daemon_strategies/passenger.rb
40
+ - recipes/daemon_strategy.rb
41
+ - recipes/db.rb
42
+ - recipes/defaults.rb
43
+ - recipes/delayed_job.rb
44
+ - recipes/gems.rb
34
45
  - recipes/nginx.rb
35
- - recipes/update.rb
36
46
  - recipes/whenever.rb
37
- - tasks/capone_tasks.rake
38
- - templates/Capfile
39
- - templates/config/deploy.rb
40
- - templates/config/mongrel_cluster.yml.erb
41
- - templates/config/monitrc
42
- - templates/system/nginx.conf
43
47
  has_rdoc: true
44
48
  homepage: http://github.com/denis/capone
45
49
  licenses: []
data/README.rdoc DELETED
@@ -1,14 +0,0 @@
1
- = Capone
2
-
3
- Capone is the set of rake tasks and capistrano recipes that help to:
4
- * generate configs;
5
- * prepare servers for production use;
6
- * deploy applications;
7
- * maintain servers.
8
-
9
- Capone supports only Ubuntu 8.04 LTS as an OS, Mongrel as an application server,
10
- nginx as a web server, MySQL as a database server and Subversion or git as a SCM.
11
-
12
- == Copyright
13
-
14
- Copyright (c) 2009 Denis Barushev. See LICENSE for details.
data/Rakefile DELETED
@@ -1,55 +0,0 @@
1
- require 'rubygems'
2
- require 'rake'
3
-
4
- begin
5
- require 'jeweler'
6
- Jeweler::Tasks.new do |gem|
7
- gem.name = "capone"
8
- gem.summary = "Capone is the set of rake tasks and capistrano recipes."
9
- gem.email = "barushev@gmail.com"
10
- gem.homepage = "http://github.com/denis/capone"
11
- gem.authors = ["Denis Barushev"]
12
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
13
- gem.files = %w(LICENSE README.rdoc Rakefile) + Dir.glob("{lib,recipes,tasks,templates}/**/*")
14
- end
15
- rescue LoadError
16
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
17
- end
18
-
19
- require 'rake/testtask'
20
- Rake::TestTask.new(:test) do |test|
21
- test.libs << 'lib' << 'test'
22
- test.pattern = 'test/**/*_test.rb'
23
- test.verbose = true
24
- end
25
-
26
- begin
27
- require 'rcov/rcovtask'
28
- Rcov::RcovTask.new do |test|
29
- test.libs << 'test'
30
- test.pattern = 'test/**/*_test.rb'
31
- test.verbose = true
32
- end
33
- rescue LoadError
34
- task :rcov do
35
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
36
- end
37
- end
38
-
39
- task :test => :check_dependencies
40
-
41
- task :default => :test
42
-
43
- require 'rake/rdoctask'
44
- Rake::RDocTask.new do |rdoc|
45
- if File.exist?('VERSION')
46
- version = File.read('VERSION')
47
- else
48
- version = ""
49
- end
50
-
51
- rdoc.rdoc_dir = 'rdoc'
52
- rdoc.title = "capone #{version}"
53
- rdoc.rdoc_files.include('README*')
54
- rdoc.rdoc_files.include('lib/**/*.rb')
55
- end
data/recipes/backup.rb DELETED
@@ -1,17 +0,0 @@
1
- namespace :capone do
2
- namespace :backup do
3
- desc <<-DESC
4
- Backup all.
5
- DESC
6
- task :default do
7
- mysql
8
- end
9
-
10
- desc <<-DESC
11
- Backup MySQL database.
12
- DESC
13
- task :mysql, :roles => :db, :only => { :primary => true } do
14
- run "echo 'Not implemented yet.'"
15
- end
16
- end
17
- end
data/recipes/deploy.rb DELETED
@@ -1,27 +0,0 @@
1
- namespace :capone do
2
- namespace :deploy do
3
- desc <<-DESC
4
- Create MySQL user and database using data from config/database.yml.
5
- DESC
6
- task :setup_db, :roles => :db, :only => { :primary => true } do
7
- config = YAML::load(File.open("config/database.yml"))[rails_env]
8
- root_password = Capistrano::CLI.password_prompt(prompt="Enter a root password for MySQL: ")
9
-
10
- run "mysql -u root --password=#{root_password} -e \"CREATE DATABASE IF NOT EXISTS #{config["database"]} DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON #{config["database"]}.* TO '#{config["username"]}'@'localhost' IDENTIFIED BY '#{config["password"]}' WITH GRANT OPTION;\""
11
- end
12
-
13
- desc <<-DESC
14
- Install gems needed by application.
15
- DESC
16
- task :install_gems, :roles => :app do
17
- run "rake gems:install -f #{release_path}/Rakefile RAILS_ENV=#{rails_env}"
18
- end
19
-
20
- desc <<-DESC
21
- Load fixtures from db/fixtures to the database
22
- DESC
23
- task :load_fixtures, :roles => :db, :only => { :primary => true } do
24
- run "rake db:fixtures:load FIXTURES_PATH=db/fixtures RAILS_ENV=#{rails_env} -f #{release_path}/Rakefile"
25
- end
26
- end
27
- end
data/recipes/git.rb DELETED
@@ -1,14 +0,0 @@
1
- namespace :capone do
2
- namespace :git do
3
- desc <<-DESC
4
- Creates a remote repository and adds it as origin to the local repository.
5
- DESC
6
- task :remote do
7
- run "mkdir ~/git/#{application}.git && cd ~/git/#{application}.git && git --bare init"
8
-
9
- cmd = "git remote add origin #{repository} && git push origin master"
10
- puts cmd
11
- `#{cmd}`
12
- end
13
- end
14
- end
data/recipes/install.rb DELETED
@@ -1,105 +0,0 @@
1
- namespace :capone do
2
- namespace :install do
3
- desc <<-DESC
4
- Install all software for all servers.
5
- DESC
6
- task :default do
7
- update::software
8
- app
9
- web
10
- db
11
- end
12
-
13
- desc <<-DESC
14
- Install all software for app server.
15
- DESC
16
- task :app, :roles => :app do
17
- git
18
- ruby
19
- rubygems
20
- gems
21
- mongrel
22
- end
23
-
24
- desc <<-DESC
25
- Install all software for web server.
26
- DESC
27
- task :web, :roles => :web do
28
- nginx
29
- end
30
-
31
- desc <<-DESC
32
- Install all software for db server.
33
- DESC
34
- task :db, :roles => :db do
35
- mysql
36
- end
37
-
38
- desc <<-DESC
39
- Install Subversion.
40
- DESC
41
- task :subversion, :roles => :app do
42
- sudo "aptitude install -y subversion"
43
- end
44
-
45
- desc <<-DESC
46
- Install git.
47
- DESC
48
- task :git, :roles => :app do
49
- sudo "aptitude install -y git-core"
50
- end
51
-
52
- desc <<-DESC
53
- Install Ruby.
54
- DESC
55
- task :ruby, :roles => :app do
56
- sudo "aptitude install -y ruby ruby1.8-dev irb irb1.8 rdoc rdoc1.8 libopenssl-ruby1.8 libreadline-ruby1.8"
57
- end
58
-
59
- desc <<-DESC
60
- Install RubyGems.
61
- DESC
62
- task :rubygems, :roles => :app do
63
- sudo "aptitude install -y libgems-ruby1.8 rubygems"
64
- sudo "gem update --system --no-rdoc --no-ri"
65
- sudo "ln -fs /usr/bin/gem1.8 /usr/bin/gem"
66
- end
67
-
68
- desc <<-DESC
69
- Install common gems.
70
- DESC
71
- task :gems, :roles => :app do
72
- sudo "aptitude install -y build-essential libmysqlclient15-dev"
73
- sudo "gem install rake mysql --no-rdoc --no-ri"
74
- end
75
-
76
- desc <<-DESC
77
- Install Mongrel.
78
- DESC
79
- task :mongrel, :roles => :app do
80
- sudo "gem install mongrel mongrel_cluster --no-rdoc --no-ri"
81
-
82
- sudo "ln -sf /usr/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/resources/mongrel_cluster /etc/init.d/mongrel_cluster"
83
- sudo "chmod +x /etc/init.d/mongrel_cluster"
84
- sudo "/usr/sbin/update-rc.d mongrel_cluster defaults"
85
- sudo "mkdir /etc/mongrel_cluster"
86
-
87
- sudo "mkdir -p -m 750 /var/www/apps"
88
- sudo "chown deploy:deploy /var/www/apps"
89
- end
90
-
91
- desc <<-DESC
92
- Install nginx.
93
- DESC
94
- task :nginx, :roles => :web do
95
- sudo "aptitude install -y nginx"
96
- end
97
-
98
- desc <<-DESC
99
- Install MySQL.
100
- DESC
101
- task :mysql, :roles => :db do
102
- sudo "aptitude install -y mysql-server"
103
- end
104
- end
105
- end
data/recipes/update.rb DELETED
@@ -1,26 +0,0 @@
1
- namespace :capone do
2
- namespace :update do
3
- desc <<-DESC
4
- Update all.
5
- DESC
6
- task :default do
7
- software
8
- gems
9
- end
10
-
11
- desc <<-DESC
12
- Update system software.
13
- DESC
14
- task :software do
15
- sudo "aptitude update"
16
- sudo "aptitude safe-upgrade -y"
17
- end
18
-
19
- desc <<-DESC
20
- Update installed gems.
21
- DESC
22
- task :gems do
23
- sudo "gem update --no-rdoc --no-ri"
24
- end
25
- end
26
- end
@@ -1,17 +0,0 @@
1
- desc "Init Capone"
2
- task :capone do
3
- puts "Generating configs..."
4
-
5
- files = ["Capfile", "config/deploy.rb"]
6
-
7
- for file in files do
8
- if File.exists? "#{RAILS_ROOT}/#{file}"
9
- puts "#{RAILS_ROOT}/#{file} already exists"
10
- else
11
- File.copy "#{RAILS_ROOT}/vendor/plugins/capone/templates/#{file}", "#{RAILS_ROOT}/#{file}"
12
- end
13
- end
14
- end
15
-
16
- namespace :capone do
17
- end
data/templates/Capfile DELETED
@@ -1,3 +0,0 @@
1
- load 'deploy' if respond_to?(:namespace) # cap2 differentiator
2
- Dir['vendor/plugins/*/recipes/*.rb'].each { |plugin| load(plugin) }
3
- load 'config/deploy'
@@ -1,29 +0,0 @@
1
- require "mongrel_cluster/recipes"
2
- require "capone"
3
-
4
- set :application, "set your application name here"
5
- set :repository, "someuser@somehost:git/#{application}.git"
6
- set :scm, :git
7
-
8
- set :user, "deploy"
9
- set :use_sudo, false
10
-
11
- set :deploy_to, "/var/www/apps/#{application}"
12
-
13
- set :mongrel_conf, "#{deploy_to}/current/config/mongrel_cluster.yml"
14
-
15
- set :rails_env, "production"
16
-
17
- role :app, "your app-server here"
18
- role :web, "your web-server here"
19
- role :db, "your db-server here", :primary => true
20
-
21
- after "deploy:setup", "capone:deploy:setup_db"
22
- after "deploy:update_code", "capone:deploy:install_gems"
23
- # after "deploy:cold", "capone:deploy:load_fixtures"
24
-
25
- before "deploy:start", "capone:nginx:enable_vhost"
26
- after "deploy:stop", "capone:nginx:disable_vhost"
27
- after "deploy:restart", "capone:nginx:reload_if_config_file_changed"
28
-
29
- # after "deploy:symlink", "capone:whenever:update_crontab"
@@ -1,18 +0,0 @@
1
- ---
2
- cwd: <%= @deploy_to %>/current
3
- <% if @mongrel_log_file %>
4
- log_file: <%= @mongrel_log_file %>
5
- <% end %>
6
- port: <%= @mongrel_port %>
7
- environment: <%= @mongrel_environment %>
8
- address: <%= @mongrel_address %>
9
- <% if @mongrel_pid_file %>
10
- pid_file: <%= @mongrel_pid_file %>
11
- <% end %>
12
- servers: <%= @mongrel_servers %>
13
- <% if @mongrel_user %>
14
- user: <%= @mongrel_user %>
15
- <% end %>
16
- <% if @mongrel_group %>
17
- group: <%= @mongrel_group %>
18
- <% end %>
@@ -1,57 +0,0 @@
1
- set daemon 60
2
- set logfile syslog facility log_daemon
3
- set mailserver localhost
4
- set mail-format { from: monit@localhost }
5
- set alert root@localhost
6
-
7
- check process sshd with pidfile /var/run/sshd.pid
8
- start program "/etc/init.d/ssh start"
9
- stop program "/etc/init.d/ssh stop"
10
- if failed port 22 protocol ssh then restart
11
- if 5 restarts within 5 cycles then timeout
12
-
13
- check process mysql with pidfile /var/run/mysqld/mysqld.pid
14
- group database
15
- start program = "/etc/init.d/mysql start"
16
- stop program = "/etc/init.d/mysql stop"
17
- if failed host 127.0.0.1 port 3306 then restart
18
- if 5 restarts within 5 cycles then timeout
19
-
20
- check process httpd with pidfile /usr/local/apache2/logs/httpd.pid
21
- group www-data
22
- start program "/usr/local/apache2/bin/apachectl start"
23
- stop program "/usr/local/apache2/bin/apachectl stop"
24
- if failed host localhost port 80 protocol http
25
- and request "/" then alert
26
- if cpu is greater than 60% for 2 cycles then alert
27
- if cpu > 80% for 5 cycles then restart
28
- if children > 250 then restart
29
- if loadavg(5min) greater than 10 for 8 cycles then alert
30
- if 3 restarts within 5 cycles then timeout
31
-
32
- check process mongrel_8000 with pidfile /var/rails/MYAPP/log/mongrel.8000.pid
33
- group root
34
- if failed host 127.0.0.1 port 8000 protocol http
35
- and request "/" then alert
36
- if cpu is greater than 60% for 2 cycles then alert
37
- if cpu > 80% for 5 cycles then restart
38
- if loadavg(5min) greater than 10 for 8 cycles then restart
39
- if 3 restarts within 5 cycles then timeout
40
-
41
- check process mongrel_8001 with pidfile /var/rails/MYAPP/log/mongrel.8001.pid
42
- group root
43
- if failed host 127.0.0.1 port 8001 protocol http
44
- and request "/" then alert
45
- if cpu is greater than 60% for 2 cycles then alert
46
- if cpu > 80% for 5 cycles then alert
47
- if loadavg(5min) greater than 10 for 8 cycles then alert
48
- if 3 restarts within 5 cycles then timeout
49
-
50
- check process postfix with pidfile /var/spool/postfix/pid/master.pid
51
- group mail
52
- start program = "/etc/init.d/postfix start"
53
- stop program = "/etc/init.d/postfix stop"
54
- if failed port 25 protocol smtp then restart
55
- if 5 restarts within 5 cycles then timeout
56
-
57
-
@@ -1,58 +0,0 @@
1
- # User and group to run as
2
- user www-data;
3
-
4
- # Number of nginx worker processes
5
- worker_processes 4;
6
-
7
- # Path to main error log file
8
- error_log /var/log/nginx/error.log;
9
-
10
- # Path to the pid-file
11
- pid /var/run/nginx.pid;
12
-
13
- events {
14
- # max_clients = worker_processes * worker_connections
15
- worker_connections 1024;
16
- }
17
-
18
- http {
19
- # Include mime types config file
20
- include /etc/nginx/mime.types;
21
-
22
- # Assigns the default MIME-type to be used for files where
23
- # the standard MIME map doesn't specify anything
24
- default_type application/octet-stream;
25
-
26
- # Define log format for access log
27
- log_format main '$remote_addr - $remote_user [$time_local] '
28
- '"$request" $status $body_bytes_sent "$http_referer" '
29
- '"$http_user_agent" "$http_x_forwarded_for"';
30
-
31
- # Assigns path, format and size of access log file
32
- access_log /var/log/nginx/access.log main;
33
-
34
- # Activate the usage of sendfile()
35
- sendfile on;
36
-
37
- # tcp_nodelay on;
38
- # tcp_nopush on;
39
-
40
- # Set the timeout for keep-alive connections with the client
41
- keepalive_timeout 75;
42
-
43
- # Enable gzip compression
44
- gzip on;
45
-
46
- # The compression level, between 1 and 9, where 1 is the least
47
- # compression (fastest) and 9 is the most (slowest).
48
- gzip_comp_level 1;
49
-
50
- # Enable compression for all proxy requests
51
- gzip_proxied any;
52
-
53
- # Enable compression for additional MIME-types
54
- gzip_types text/plain text/html text/css text/javascript application/x-javascript text/xml application/xml application/xml+rss;
55
-
56
- # Include all virtaul hosts configurations
57
- include /etc/nginx/sites-enabled/*;
58
- }