winton-cookbook 1.0.3 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -76,9 +76,11 @@ Set up your fresh Debian server
76
76
 
77
77
  ### On your machine
78
78
 
79
- cap debian:setup
79
+ You may want to run the commands in **[debian:aptitude](http://github.com/winton/cookbook/tree/master/lib/recipes/debian.rb)** from the remote shell if it is your first time doing so.
80
80
 
81
- (See **config/cookbook/recipes/debian.rb**. You might want to run the tasks individually to know what's going on.)
81
+ cap debian:aptitude
82
+ cap debian:config
83
+ cap debian:install
82
84
 
83
85
  ### On the server
84
86
 
@@ -2,7 +2,7 @@ set :cookbook, {
2
2
  :application => 'my_app',
3
3
  :base_dir => '/var/www',
4
4
  :repository => 'git@github.com:user/my-app.git',
5
- #:platform => :php # If enabled, you can remove all mongrel* lines
5
+ #:platform => :php, # If enabled, you can remove all mongrel* lines
6
6
  :mongrel_port => 3000, # Your next app should be 3003
7
7
  :ssh_port => 22, # Or any unused port above 1024 (best practice)
8
8
 
@@ -31,15 +31,18 @@ set :cookbook, {
31
31
  },
32
32
 
33
33
  :sources => {
34
- :git => 'http://kernel.org/pub/software/scm/git/git-1.5.5.3.tar.gz',
35
- :lighttpd => 'http://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz',
36
- :nginx => 'http://sysoev.ru/nginx/nginx-0.6.31.tar.gz',
37
- :ruby => 'ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p114.tar.gz',
38
- :rubygems => 'http://rubyforge.org/frs/download.php/35283/rubygems-1.1.1.tgz',
39
- :sphinx => 'http://www.sphinxsearch.com/downloads/sphinx-0.9.8-rc2.tar.gz'
34
+ :git => 'http://kernel.org/pub/software/scm/git/git-1.6.0.1.tar.gz',
35
+ :lighttpd => 'http://www.lighttpd.net/download/lighttpd-1.4.19.tar.gz',
36
+ :nginx => 'http://sysoev.ru/nginx/nginx-0.6.32.tar.gz',
37
+ :mysecureshell => 'http://internap.dl.sourceforge.net/sourceforge/mysecureshell/MySecureShell-1.0_source.tgz',
38
+ :ruby => 'ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p72.tar.gz',
39
+ :rubygems => 'http://rubyforge.org/frs/download.php/38646/rubygems-1.2.0.tgz',
40
+ :sphinx => 'http://www.sphinxsearch.com/downloads/sphinx-0.9.8.tar.gz'
40
41
  }
41
42
  }
42
43
 
43
- # See config/cookbook/cookbook.rb for more cookbook options
44
+ # If installed from gem
45
+ require 'cookbook'
44
46
 
45
- require 'config/cookbook/cookbook'
47
+ # If installed from plugin
48
+ # require 'vendor/plugins/cookbook/lib/cookbook'
@@ -30,7 +30,9 @@ Capistrano::Configuration.instance(:must_exist).load do
30
30
  set :auth_user, fetch(:auth_user, false)
31
31
  set :nginx_dir, fetch(:nginx_dir, '/usr/local/nginx/conf')
32
32
  set :mysql_dir, fetch(:mysql_dir, '/etc/mysql')
33
+ set :app_helpers, fetch(:app_helpers, false)
33
34
  set :ultrasphinx, fetch(:ultrasphinx, false)
35
+ set :thinking_sphinx, fetch(:thinking_sphinx, false)
34
36
  set :attachment_fu, fetch(:attachment_fu, false)
35
37
  set :asset_packager, fetch(:asset_packager, false)
36
38
  set :mongrel_etc_dir, fetch(:mongrel_etc_dir, '/usr/local/etc/mongrel_cluster')
@@ -50,8 +52,11 @@ Capistrano::Configuration.instance(:must_exist).load do
50
52
 
51
53
  on :before, 'setup_stage', :except => [ :staging, :testing ] # Executed before every task
52
54
  if platform == :rails
53
- after 'deploy:update_code', 'rails:setup_git' # Initialize submodules
55
+ #after 'deploy:update_code', 'rails:setup_git' # Initialize submodules
54
56
  after 'deploy:update_code', 'rails:config:to_app' # Copy shared config to app
57
+ if app_helpers
58
+ after 'deploy:update_code', 'rails:config:app_helpers' # Set up app with app_helpers
59
+ end
55
60
  if asset_packager
56
61
  after 'deploy:update_code', 'rails:config:asset_packager' # Configure attachment_fu
57
62
  end
@@ -61,6 +66,9 @@ Capistrano::Configuration.instance(:must_exist).load do
61
66
  if ultrasphinx
62
67
  after 'deploy:update_code', 'rails:config:ultrasphinx' # Configure ultrasphinx
63
68
  end
69
+ if thinking_sphinx
70
+ after 'deploy:update_code', 'rails:config:thinking_sphinx' # Configure thinking_sphinx
71
+ end
64
72
  end
65
73
 
66
74
  end
@@ -4,7 +4,7 @@ require 'erb'
4
4
  # Install
5
5
 
6
6
  def gem_install(name, options='')
7
- sudo_puts "gem install #{name} #{options}"
7
+ sudo_puts "gem install #{name} #{options} --no-rdoc --no-ri -q"
8
8
  end
9
9
 
10
10
  def unpack_source(source)
@@ -104,6 +104,7 @@ Capistrano::Configuration.instance(:must_exist).load do
104
104
  task :default do
105
105
  debian.install.git
106
106
  debian.install.lighttpd
107
+ debian.install.mysecureshell
107
108
  debian.install.mysql
108
109
  debian.install.nginx
109
110
  debian.install.php
@@ -118,7 +119,7 @@ Capistrano::Configuration.instance(:must_exist).load do
118
119
  install_source(:git) do |path|
119
120
  sudo_puts [
120
121
  "aptitude install tcl8.4 tk8.4 gettext -q -y",
121
- "cd #{path} && ./configure && make && sudo make install"
122
+ ";cd #{path} && ./configure && make && sudo make install"
122
123
  ]
123
124
  end
124
125
  end
@@ -127,27 +128,36 @@ Capistrano::Configuration.instance(:must_exist).load do
127
128
  task :lighttpd, :roles => :app do
128
129
  sudo_puts 'aptitude install libpcre3-dev libbz2-dev -q -y'
129
130
  install_source(:lighttpd) do |path|
130
- sudo_puts "cd #{path} && ./configure && make && sudo make install"
131
+ sudo_puts ";cd #{path} && ./configure && make && sudo make install"
131
132
  end
132
133
  end
133
134
 
134
135
  desc 'Install Monit'
135
136
  task :monit, :roles => :db do
136
137
  sudo_puts 'aptitude install monit -q -y'
137
- monit.config.default
138
+ ROOT.monit.config.default
139
+ end
140
+
141
+ desc "Install MySecureShell"
142
+ task :mysecureshell, :roles => :app do
143
+ # http://www.howtoforge.com/mysecureshell_sftp_debian_etch
144
+ sudo_puts 'aptitude install libssl0.9.7 ssh openssh-server -q -y'
145
+ install_source(:mysecureshell) do |path|
146
+ sudo_puts ";cd ~/sources/mysecureshell* && ./configure && make && sudo make install"
147
+ end
138
148
  end
139
149
 
140
150
  desc 'Install MySQL'
141
151
  task :mysql, :roles => :db do
142
152
  sudo_puts 'aptitude install mysql-server mysql-client libmysqlclient15-dev libmysql-ruby -q -y'
143
153
  ROOT.mysql.config
154
+ ROOT.mysql.create.user
144
155
  puts [
145
156
  '',
146
157
  "It is highly recommended you run mysql_secure_installation manually.",
147
158
  "See http://dev.mysql.com/doc/refman/5.1/en/mysql-secure-installation.html",
148
159
  ''
149
160
  ].join("\n")
150
- ROOT.mysql.create.user
151
161
  end
152
162
 
153
163
  desc 'Install Nginx'
@@ -155,7 +165,7 @@ Capistrano::Configuration.instance(:must_exist).load do
155
165
  # apache2-utils for htpasswd, rest for nginx build
156
166
  sudo_puts 'aptitude install apache2-utils libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev -q -y'
157
167
  install_source(:nginx) do |path|
158
- sudo_puts "cd #{path} && ./configure --sbin-path=/usr/local/sbin --with-http_ssl_module && make && sudo make install"
168
+ sudo_puts ";cd #{path} && ./configure --sbin-path=/usr/local/sbin --with-http_ssl_module && make && sudo make install"
159
169
  end
160
170
  upload_from_erb '/etc/init.d/nginx', binding, :chown => 'root', :chmod => '+x', :folder => 'nginx'
161
171
  sudo '/usr/sbin/update-rc.d -f nginx defaults'
@@ -164,7 +174,7 @@ Capistrano::Configuration.instance(:must_exist).load do
164
174
 
165
175
  desc "Install PHP"
166
176
  task :php, :roles => :app do
167
- sudo_puts 'aptitude install php5-cli php5-cgi php5-mysql php5-xcache -q -y'
177
+ sudo_puts 'aptitude install php5-cli php5-cgi php5-mysql php5-xcache php-pear php-mail php-net-smtp -q -y'
168
178
  upload_from_erb [
169
179
  '/usr/local/bin/php-fastcgi',
170
180
  '/etc/init.d/init-fastcgi'
@@ -175,14 +185,14 @@ Capistrano::Configuration.instance(:must_exist).load do
175
185
  desc 'Install Ruby'
176
186
  task :ruby, :roles => :app do
177
187
  install_source(:ruby) do |path|
178
- sudo_puts "cd #{path} && ./configure && make && sudo make install"
188
+ sudo_puts ";cd #{path} && ./configure && make && sudo make install"
179
189
  end
180
190
  end
181
191
 
182
192
  desc 'Install RubyGems'
183
193
  task :rubygems, :roles => :app do
184
194
  install_source(:rubygems) do |path|
185
- sudo_puts "cd #{path} && ruby setup.rb"
195
+ run_puts "cd #{path} && sudo ruby setup.rb"
186
196
  end
187
197
  gems.update
188
198
  gems.install
@@ -191,7 +201,7 @@ Capistrano::Configuration.instance(:must_exist).load do
191
201
  desc 'Install Sphinx'
192
202
  task :sphinx, :roles => :app do
193
203
  install_source(:sphinx) do |path|
194
- sudo_puts "cd #{path} && ./configure && make && sudo make install"
204
+ sudo_puts ";cd #{path} && ./configure && make && sudo make install"
195
205
  end
196
206
  end
197
207
  end
@@ -22,6 +22,7 @@ Capistrano::Configuration.instance(:must_exist).load do
22
22
  gems.install.mime_types
23
23
  gems.install.mongrel
24
24
  gems.install.rails
25
+ gems.install.redcloth
25
26
  end
26
27
 
27
28
  desc 'Install Chronic'
@@ -58,13 +59,18 @@ Capistrano::Configuration.instance(:must_exist).load do
58
59
  task :mongrel, :roles => :app do
59
60
  gem_install :mongrel
60
61
  gem_install :mongrel_cluster
61
- mongrel.config.survive_reboot
62
+ ROOT.mongrel.config.survive_reboot
62
63
  end
63
64
 
64
65
  desc 'Install Rails'
65
66
  task :rails, :roles => :app do
66
67
  gem_install :rails
67
68
  end
69
+
70
+ desc 'Install RedCloth'
71
+ task :redcloth, :roles => :app do
72
+ gem_install 'RedCloth'
73
+ end
68
74
  end
69
75
 
70
76
  desc "Uninstall a remote gem"
@@ -5,7 +5,7 @@ Capistrano::Configuration.instance(:must_exist).load do
5
5
  desc "Copies all files in cookbook/rails to shared config"
6
6
  task :default, :roles => :app do
7
7
  run "mkdir -p #{shared_path}/config"
8
- Dir[File.expand_path('../config/rails/*', File.dirname(__FILE__))].each do |f|
8
+ Dir[File.expand_path('../templates/rails/*', File.dirname(__FILE__))].each do |f|
9
9
  upload_from_erb "#{shared_path}/config/#{File.basename(f, '.erb')}", binding, :folder => 'rails'
10
10
  end
11
11
  end
@@ -15,6 +15,12 @@ Capistrano::Configuration.instance(:must_exist).load do
15
15
  run "cp -Rf #{shared_path}/config/* #{release_path}/config"
16
16
  end
17
17
 
18
+ desc "Set up app with app_helpers"
19
+ task :app_helpers do
20
+ run "cd #{release_path} && script/plugin install git://github.com/winton/app_helpers.git"
21
+ run "cd #{release_path} && rake RAILS_ENV=production quiet=true app_helpers"
22
+ end
23
+
18
24
  desc "Configure asset_packager"
19
25
  task :asset_packager do
20
26
  run "source ~/.bash_profile && cd #{release_path} && rake RAILS_ENV=production asset:packager:build_all"
@@ -32,20 +38,43 @@ Capistrano::Configuration.instance(:must_exist).load do
32
38
  ]
33
39
  end
34
40
 
41
+ namespace :thinking_sphinx do
42
+ desc "Configures thinking_sphinx"
43
+ task :default, :roles => :app do
44
+ sudo ";cd #{release_path} && rake RAILS_ENV=production ts:config"
45
+ end
46
+
47
+ desc "Stop thinking_sphinx"
48
+ task :stop, :roles => :app do
49
+ sudo ";cd #{release_path} && rake RAILS_ENV=production ts:stop"
50
+ end
51
+
52
+ desc "Start thinking_sphinx"
53
+ task :start, :roles => :app do
54
+ sudo ";cd #{release_path} && rake RAILS_ENV=production ts:start"
55
+ end
56
+
57
+ desc "Restart thinking_sphinx"
58
+ task :restart, :roles => :app do
59
+ rails.config.thinking_sphinx.stop
60
+ rails.config.thinking_sphinx.start
61
+ end
62
+ end
63
+
35
64
  namespace :ultrasphinx do
36
65
  desc "Configures ultrasphinx"
37
66
  task :default, :roles => :app do
38
- sudo "cd #{release_path} && rake RAILS_ENV=production ultrasphinx:configure"
67
+ sudo ";cd #{release_path} && rake RAILS_ENV=production ultrasphinx:configure"
39
68
  end
40
69
 
41
70
  desc "Stop ultrasphinx"
42
71
  task :stop, :roles => :app do
43
- sudo "cd #{release_path} && rake RAILS_ENV=production ultrasphinx:daemon:stop"
72
+ sudo ";cd #{release_path} && rake RAILS_ENV=production ultrasphinx:daemon:stop"
44
73
  end
45
74
 
46
75
  desc "Start ultrasphinx"
47
76
  task :start, :roles => :app do
48
- sudo "cd #{release_path} && rake RAILS_ENV=production ultrasphinx:daemon:start"
77
+ sudo ";cd #{release_path} && rake RAILS_ENV=production ultrasphinx:daemon:start"
49
78
  end
50
79
 
51
80
  desc "Restart ultrasphinx"
@@ -45,13 +45,13 @@ Capistrano::Configuration.instance(:must_exist).load do
45
45
  usr = ask "Upload ssh public keys to which user? (default: #{user})", user
46
46
  keys = ask "Press enter to copy all public keys (~/.ssh/*.pub), or paste a key: ", get_ssh_keys
47
47
 
48
- if k.empty?
48
+ if keys.empty?
49
49
  ssh.setup if yes("No keys found. Generate ssh keys now?")
50
50
  else
51
51
  sudo_each [
52
- "mkdir /home/#{usr}/.ssh",
52
+ "mkdir -p /home/#{usr}/.ssh",
53
53
  "touch /home/#{usr}/.ssh/authorized_keys",
54
- "echo \"#{keys}\" >> /home/#{usr}/.ssh/authorized_keys",
54
+ "echo \"#{keys.strip}\" | sudo tee /home/#{usr}/.ssh/authorized_keys",
55
55
  "chmod 0700 /home/#{usr}/.ssh",
56
56
  "chmod 0600 /home/#{usr}/.ssh/authorized_keys",
57
57
  "chown -R #{usr} /home/#{usr}/.ssh",
@@ -1,4 +1,4 @@
1
- export PS1='\e[01;30m\h \e[33m\u \e[01;34m\w\e[00m: '
1
+ export PS1='\e[01;31m\h \e[01;32m\u \e[00;33m\w\e[00m: '
2
2
 
3
3
  alias free="free -m"
4
4
 
@@ -1,8 +1,8 @@
1
1
  <% mongrels.times do |x| %>
2
2
  check process mongrel_<%= application %>_<%= mongrel_port + x %> with pidfile <%= deploy_to %>/shared/pids/mongrel.<%= mongrel_port + x %>.pid
3
3
  group mongrel
4
- start program = "mongrel_rails cluster::start -C <%= "#{mongrel_etc_dir}/#{application}_#{stage}.yml" %> --clean --only <%= mongrel_port + x %>"
5
- stop program = "mongrel_rails cluster::stop -C <%= "#{mongrel_etc_dir}/#{application}_#{stage}.yml" %> --clean --only <%= mongrel_port + x %>"
4
+ start program = "/usr/local/bin/mongrel_rails cluster::start -C <%= "#{mongrel_etc_dir}/#{application}_#{stage}.yml" %> --clean --only <%= mongrel_port + x %>"
5
+ stop program = "/usr/local/bin/mongrel_rails cluster::stop -C <%= "#{mongrel_etc_dir}/#{application}_#{stage}.yml" %> --clean --only <%= mongrel_port + x %>"
6
6
  if failed host 127.0.0.1 port <%= mongrel_port + x %> protocol http with timeout 10 seconds then restart
7
7
  if totalmem is greater than 110.0 MB for 4 cycles then restart # eating up memory?
8
8
  if cpu is greater than 50% for 2 cycles then alert # send an email to admin
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: winton-cookbook
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Winton Welsh