winton-cookbook 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.markdown +134 -0
- data/config/debian/bash_profile.erb +9 -0
- data/config/debian/iptables.rules.erb +47 -0
- data/config/debian/locale.gen.erb +1 -0
- data/config/debian/sshd_config.erb +78 -0
- data/config/log/rotate.conf.erb +9 -0
- data/config/mongrel/mongrel.yml.erb +10 -0
- data/config/mongrel/nginx.vhost.erb +177 -0
- data/config/monit/mongrel.erb +12 -0
- data/config/monit/monit.erb +11 -0
- data/config/monit/monitrc.erb +32 -0
- data/config/monit/nginx.vhost.erb +26 -0
- data/config/mysql/my.cnf.erb +137 -0
- data/config/nginx/nginx.conf.erb +30 -0
- data/config/nginx/nginx.erb +57 -0
- data/config/php/init-fastcgi.erb +26 -0
- data/config/php/nginx.vhost.erb +27 -0
- data/config/php/php-fastcgi.erb +2 -0
- data/config/rails/database.yml.erb +13 -0
- data/cookbook.rb +66 -0
- data/cookbook_helpers.rb +119 -0
- data/deploy.rb.example +45 -0
- data/recipes/debian.rb +200 -0
- data/recipes/deploy.rb +50 -0
- data/recipes/gems.rb +77 -0
- data/recipes/log.rb +47 -0
- data/recipes/mongrel.rb +48 -0
- data/recipes/monit.rb +47 -0
- data/recipes/mysql.rb +106 -0
- data/recipes/nginx.rb +79 -0
- data/recipes/php.rb +17 -0
- data/recipes/rails.rb +65 -0
- data/recipes/ssh.rb +64 -0
- data/recipes/stage.rb +34 -0
- metadata +95 -0
@@ -0,0 +1,137 @@
|
|
1
|
+
#
|
2
|
+
# The MySQL database server configuration file.
|
3
|
+
#
|
4
|
+
# You can copy this to one of:
|
5
|
+
# - "/etc/mysql/my.cnf" to set global options,
|
6
|
+
# - "~/.my.cnf" to set user-specific options.
|
7
|
+
#
|
8
|
+
# One can use all long options that the program supports.
|
9
|
+
# Run program with --help to get a list of available options and with
|
10
|
+
# --print-defaults to see which it would actually understand and use.
|
11
|
+
#
|
12
|
+
# For explanations see
|
13
|
+
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
|
14
|
+
|
15
|
+
# This will be passed to all mysql clients
|
16
|
+
# It has been reported that passwords should be enclosed with ticks/quotes
|
17
|
+
# escpecially if they contain "#" chars...
|
18
|
+
# Remember to edit /etc/mysql/debian.cnf when changing the socket location.
|
19
|
+
[client]
|
20
|
+
port = 3306
|
21
|
+
socket = /var/run/mysqld/mysqld.sock
|
22
|
+
|
23
|
+
# Here is entries for some specific programs
|
24
|
+
# The following values assume you have at least 32M ram
|
25
|
+
|
26
|
+
# This was formally known as [safe_mysqld]. Both versions are currently parsed.
|
27
|
+
[mysqld_safe]
|
28
|
+
socket = /var/run/mysqld/mysqld.sock
|
29
|
+
nice = 0
|
30
|
+
|
31
|
+
[mysqld]
|
32
|
+
#
|
33
|
+
# * Basic Settings
|
34
|
+
#
|
35
|
+
user = mysql
|
36
|
+
pid-file = /var/run/mysqld/mysqld.pid
|
37
|
+
socket = /var/run/mysqld/mysqld.sock
|
38
|
+
port = 3306
|
39
|
+
basedir = /usr
|
40
|
+
datadir = /var/lib/mysql
|
41
|
+
tmpdir = /tmp
|
42
|
+
language = /usr/share/mysql/english
|
43
|
+
skip-external-locking
|
44
|
+
#
|
45
|
+
# Instead of skip-networking the default is now to listen only on
|
46
|
+
# localhost which is more compatible and is not less secure.
|
47
|
+
bind-address = 127.0.0.1
|
48
|
+
#
|
49
|
+
# * Fine Tuning
|
50
|
+
#
|
51
|
+
key_buffer = 256M
|
52
|
+
max_allowed_packet = 16M
|
53
|
+
thread_stack = 128K
|
54
|
+
thread_cache_size = 8
|
55
|
+
max_connections = 500
|
56
|
+
table_cache = 1536
|
57
|
+
#thread_concurrency = 10
|
58
|
+
#
|
59
|
+
# * Query Cache Configuration
|
60
|
+
#
|
61
|
+
query_cache_limit = 1M
|
62
|
+
query_cache_size = 16M
|
63
|
+
#
|
64
|
+
# * Logging and Replication
|
65
|
+
#
|
66
|
+
# Both location gets rotated by the cronjob.
|
67
|
+
# Be aware that this log type is a performance killer.
|
68
|
+
#log = /var/log/mysql/mysql.log
|
69
|
+
#
|
70
|
+
# Error logging goes to syslog. This is a Debian improvement :)
|
71
|
+
#
|
72
|
+
# Here you can see queries with especially long duration
|
73
|
+
#log_slow_queries = /var/log/mysql/mysql-slow.log
|
74
|
+
#long_query_time = 2
|
75
|
+
#log-queries-not-using-indexes
|
76
|
+
#
|
77
|
+
# The following can be used as easy to replay backup logs or for replication.
|
78
|
+
#server-id = 1
|
79
|
+
log_bin = /var/log/mysql/mysql-bin.log
|
80
|
+
# WARNING: Using expire_logs_days without bin_log crashes the server! See README.Debian!
|
81
|
+
expire_logs_days = 10
|
82
|
+
max_binlog_size = 100M
|
83
|
+
#binlog_do_db = include_database_name
|
84
|
+
#binlog_ignore_db = include_database_name
|
85
|
+
#
|
86
|
+
# * BerkeleyDB
|
87
|
+
#
|
88
|
+
# Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
|
89
|
+
skip-bdb
|
90
|
+
#
|
91
|
+
# * InnoDB
|
92
|
+
#
|
93
|
+
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
|
94
|
+
# Read the manual for more InnoDB related options. There are many!
|
95
|
+
# You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
|
96
|
+
skip-innodb
|
97
|
+
#
|
98
|
+
# * Security Features
|
99
|
+
#
|
100
|
+
# Read the manual, too, if you want chroot!
|
101
|
+
# chroot = /var/lib/mysql/
|
102
|
+
#
|
103
|
+
# For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
|
104
|
+
#
|
105
|
+
# ssl-ca=/etc/mysql/cacert.pem
|
106
|
+
# ssl-cert=/etc/mysql/server-cert.pem
|
107
|
+
# ssl-key=/etc/mysql/server-key.pem
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
[mysqldump]
|
112
|
+
quick
|
113
|
+
quote-names
|
114
|
+
max_allowed_packet = 16M
|
115
|
+
|
116
|
+
[mysql]
|
117
|
+
#no-auto-rehash # faster start of mysql but no tab completition
|
118
|
+
|
119
|
+
[isamchk]
|
120
|
+
key_buffer = 16M
|
121
|
+
|
122
|
+
#
|
123
|
+
# * NDB Cluster
|
124
|
+
#
|
125
|
+
# See /usr/share/doc/mysql-server-*/README.Debian for more information.
|
126
|
+
#
|
127
|
+
# The following configuration is read by the NDB Data Nodes (ndbd processes)
|
128
|
+
# not from the NDB Management Nodes (ndb_mgmd processes).
|
129
|
+
#
|
130
|
+
# [MYSQL_CLUSTER]
|
131
|
+
# ndb-connectstring=127.0.0.1
|
132
|
+
|
133
|
+
|
134
|
+
#
|
135
|
+
# * IMPORTANT: Additional settings that can override those from this file!
|
136
|
+
#
|
137
|
+
!includedir /etc/mysql/conf.d/
|
@@ -0,0 +1,30 @@
|
|
1
|
+
worker_processes 3;
|
2
|
+
|
3
|
+
events {
|
4
|
+
worker_connections 1024;
|
5
|
+
}
|
6
|
+
|
7
|
+
http {
|
8
|
+
default_type application/octet-stream;
|
9
|
+
|
10
|
+
sendfile on;
|
11
|
+
tcp_nopush on;
|
12
|
+
tcp_nodelay off;
|
13
|
+
|
14
|
+
keepalive_timeout 65;
|
15
|
+
|
16
|
+
gzip on;
|
17
|
+
gzip_http_version 1.0;
|
18
|
+
gzip_comp_level 2;
|
19
|
+
gzip_proxied any;
|
20
|
+
gzip_types text/plain text/html text/css application/x-javascript text/xml
|
21
|
+
application/xml application/xml+rss text/javascript;
|
22
|
+
|
23
|
+
log_format main '$remote_addr - $remote_user [$time_local] $request '
|
24
|
+
'"$status" $body_bytes_sent "$http_referer" '
|
25
|
+
'"$http_user_agent" "$http_x_forwarded_for"';
|
26
|
+
|
27
|
+
include mime.types;
|
28
|
+
include fastcgi_params;
|
29
|
+
include vhosts/*.conf;
|
30
|
+
}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
#! /bin/sh
|
2
|
+
|
3
|
+
### BEGIN INIT INFO
|
4
|
+
# Provides: nginx
|
5
|
+
# Required-Start: $all
|
6
|
+
# Required-Stop: $all
|
7
|
+
# Default-Start: 2 3 4 5
|
8
|
+
# Default-Stop: 0 1 6
|
9
|
+
# Short-Description: starts the nginx web server
|
10
|
+
# Description: starts nginx using start-stop-daemon
|
11
|
+
### END INIT INFO
|
12
|
+
|
13
|
+
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
14
|
+
DAEMON=/usr/local/sbin/nginx
|
15
|
+
NAME=nginx
|
16
|
+
DESC=nginx
|
17
|
+
|
18
|
+
test -x $DAEMON || exit 0
|
19
|
+
set -e
|
20
|
+
|
21
|
+
case "$1" in
|
22
|
+
start)
|
23
|
+
echo -n "Starting $DESC: "
|
24
|
+
start-stop-daemon --start --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
|
25
|
+
--exec $DAEMON -- $DAEMON_OPTS
|
26
|
+
echo "$NAME started."
|
27
|
+
;;
|
28
|
+
stop)
|
29
|
+
echo -n "Stopping $DESC: "
|
30
|
+
start-stop-daemon --stop --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
|
31
|
+
--exec $DAEMON
|
32
|
+
echo "$NAME stopped."
|
33
|
+
;;
|
34
|
+
|
35
|
+
restart|force-reload)
|
36
|
+
echo -n "Restarting $DESC: "
|
37
|
+
start-stop-daemon --stop --quiet --pidfile \
|
38
|
+
/usr/local/nginx/logs/$NAME.pid --exec $DAEMON
|
39
|
+
sleep 1
|
40
|
+
start-stop-daemon --start --quiet --pidfile \
|
41
|
+
/usr/local/nginx/logs/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
|
42
|
+
echo "$NAME restarted."
|
43
|
+
;;
|
44
|
+
reload)
|
45
|
+
echo -n "Reloading $DESC configuration: "
|
46
|
+
start-stop-daemon --stop --signal HUP --quiet --pidfile /usr/local/nginx/logs/$NAME.pid \
|
47
|
+
--exec $DAEMON
|
48
|
+
echo "$NAME reloaded."
|
49
|
+
;;
|
50
|
+
*)
|
51
|
+
N=/etc/init.d/$NAME
|
52
|
+
echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
|
53
|
+
exit 1
|
54
|
+
;;
|
55
|
+
esac
|
56
|
+
|
57
|
+
exit 0
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
PHP_SCRIPT=/usr/local/bin/php-fastcgi
|
4
|
+
RETVAL=0
|
5
|
+
|
6
|
+
case "$1" in
|
7
|
+
start)
|
8
|
+
$PHP_SCRIPT
|
9
|
+
RETVAL=$?
|
10
|
+
;;
|
11
|
+
stop)
|
12
|
+
killall -9 php5-cgi
|
13
|
+
RETVAL=$?
|
14
|
+
;;
|
15
|
+
restart)
|
16
|
+
killall -9 php5-cgi
|
17
|
+
$PHP_SCRIPT
|
18
|
+
RETVAL=$?
|
19
|
+
;;
|
20
|
+
*)
|
21
|
+
echo "Usage: php-fastcgi {start|stop|restart}"
|
22
|
+
exit 1
|
23
|
+
;;
|
24
|
+
esac
|
25
|
+
|
26
|
+
exit $RETVAL
|
@@ -0,0 +1,27 @@
|
|
1
|
+
server {
|
2
|
+
listen 80;
|
3
|
+
server_name <%= domains.join ' ' %>;
|
4
|
+
|
5
|
+
access_log <%= deploy_to %>/shared/log/nginx.log main;
|
6
|
+
|
7
|
+
location / {
|
8
|
+
root <%= deploy_to %>/current/public;
|
9
|
+
index index.html index.htm;
|
10
|
+
}
|
11
|
+
|
12
|
+
# redirect server error pages to the static page /50x.html
|
13
|
+
|
14
|
+
error_page 500 502 503 504 /50x.html;
|
15
|
+
location = /50x.html {
|
16
|
+
root <%= deploy_to %>/current/public;
|
17
|
+
}
|
18
|
+
|
19
|
+
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
20
|
+
|
21
|
+
location ~ \.php$ {
|
22
|
+
fastcgi_pass 127.0.0.1:9000;
|
23
|
+
fastcgi_index index.php;
|
24
|
+
fastcgi_param SCRIPT_FILENAME <%= deploy_to %>/current/public$fastcgi_script_name;
|
25
|
+
include fastcgi_params;
|
26
|
+
}
|
27
|
+
}
|
data/cookbook.rb
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
# Require helpers and recipes
|
2
|
+
|
3
|
+
require File.expand_path('cookbook_helpers.rb', File.dirname(__FILE__))
|
4
|
+
Dir[ File.expand_path('recipes/*.rb', File.dirname(__FILE__))].each do |f|
|
5
|
+
require f
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
10
|
+
|
11
|
+
ROOT = self
|
12
|
+
|
13
|
+
# See cookbook hash in config/deploy.rb
|
14
|
+
|
15
|
+
cookbook[:port] = cookbook[:ssh_port] # Port is too ambiguous for me
|
16
|
+
cookbook.each do |key, value| # Merge cookbook with capistrano
|
17
|
+
value.respond_to?(:keys) ? value.each { |k, v| set "#{key}_#{k}".intern, v } : set(key, value)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Default values
|
21
|
+
|
22
|
+
set :port, fetch(:port, 22)
|
23
|
+
set :user, fetch(:user, 'deploy')
|
24
|
+
set :stage, fetch(:stage, :production)
|
25
|
+
set :db_user, fetch(:db_user, 'app')
|
26
|
+
set :db_pass, fetch(:db_pass, '')
|
27
|
+
set :platform, fetch(:platform, :rails) # Or :php
|
28
|
+
set :ssl_cert, fetch(:ssl_cert, false)
|
29
|
+
set :use_sudo, fetch(:use_sudo, false)
|
30
|
+
set :auth_user, fetch(:auth_user, false)
|
31
|
+
set :nginx_dir, fetch(:nginx_dir, '/usr/local/nginx/conf')
|
32
|
+
set :mysql_dir, fetch(:mysql_dir, '/etc/mysql')
|
33
|
+
set :ultrasphinx, fetch(:ultrasphinx, false)
|
34
|
+
set :attachment_fu, fetch(:attachment_fu, false)
|
35
|
+
set :asset_packager, fetch(:asset_packager, false)
|
36
|
+
set :mongrel_etc_dir, fetch(:mongrel_etc_dir, '/usr/local/etc/mongrel_cluster')
|
37
|
+
set :mongrel_gem_dir, fetch(:mongrel_gem_dir, '/usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5')
|
38
|
+
set :staging_mongrels, fetch(:staging_mongrels, 1)
|
39
|
+
set :production_mongrels, fetch(:production_mongrels, 2)
|
40
|
+
|
41
|
+
# Git by default
|
42
|
+
|
43
|
+
set :scm, :git
|
44
|
+
set :deploy_via, :remote_cache
|
45
|
+
set :repository_cache, 'git_cache'
|
46
|
+
|
47
|
+
ssh_options[:paranoid] = false
|
48
|
+
|
49
|
+
# Events
|
50
|
+
|
51
|
+
on :before, 'setup_stage', :except => [ :staging, :testing ] # Executed before every task
|
52
|
+
if platform == :rails
|
53
|
+
after 'deploy:update_code', 'rails:setup_git' # Initialize submodules
|
54
|
+
after 'deploy:update_code', 'rails:config:to_app' # Copy shared config to app
|
55
|
+
if asset_packager
|
56
|
+
after 'deploy:update_code', 'rails:config:asset_packager' # Configure attachment_fu
|
57
|
+
end
|
58
|
+
if attachment_fu
|
59
|
+
after 'deploy:update_code', 'rails:config:attachment_fu' # Configure attachment_fu
|
60
|
+
end
|
61
|
+
if ultrasphinx
|
62
|
+
after 'deploy:update_code', 'rails:config:ultrasphinx' # Configure ultrasphinx
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
data/cookbook_helpers.rb
ADDED
@@ -0,0 +1,119 @@
|
|
1
|
+
require 'erb'
|
2
|
+
|
3
|
+
|
4
|
+
# Install
|
5
|
+
|
6
|
+
def gem_install(name, options='')
|
7
|
+
sudo_puts "gem install #{name} #{options}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def unpack_source(source)
|
11
|
+
url = eval "sources_#{source}" # see cookbook[:sources]
|
12
|
+
name = File.basename url
|
13
|
+
src = "/home/#{user}/sources"
|
14
|
+
base = nil
|
15
|
+
[ 'tar.gz', 'tgz' ].each do |ext|
|
16
|
+
base = name[0..((ext.length + 2) * -1)] if name.include?(ext)
|
17
|
+
end
|
18
|
+
run_each [
|
19
|
+
"mkdir -p #{src}",
|
20
|
+
"cd #{src} && wget --quiet #{url}",
|
21
|
+
"tar -xzvf #{src}/#{name} -C #{src}"
|
22
|
+
]
|
23
|
+
"#{src}/#{base}"
|
24
|
+
end
|
25
|
+
|
26
|
+
def install_source(source)
|
27
|
+
path = unpack_source source
|
28
|
+
yield path
|
29
|
+
sudo "rm -Rf #{path}"
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
# Files
|
34
|
+
|
35
|
+
def get_ssh_keys
|
36
|
+
keys = Dir[File.expand_path('~/.ssh/*.pub')].collect do |f|
|
37
|
+
File.open(f).collect { |line| line.strip.empty? ? nil : line.strip }.compact
|
38
|
+
end
|
39
|
+
keys.flatten.join("\n").strip
|
40
|
+
end
|
41
|
+
|
42
|
+
def upload_from_erb(destination, bind=nil, options={})
|
43
|
+
# options[ :chown => owner of file (default: deploy user),
|
44
|
+
# :chmod => 0644 etc
|
45
|
+
# :folder => 'postfix' etc,
|
46
|
+
# :name => name of template if differs from destination ]
|
47
|
+
if destination.respond_to?(:uniq)
|
48
|
+
destination.each { |d| upload_from_erb d, bind, options }
|
49
|
+
else
|
50
|
+
template = File.basename destination
|
51
|
+
template = template[1..-1] if template[0..0] == '.'
|
52
|
+
folder = options[:folder] ? options[:folder] + '/' : ''
|
53
|
+
template = File.expand_path("config/#{folder}#{options[:name]||template}.erb", File.dirname(__FILE__))
|
54
|
+
template = File.read template
|
55
|
+
sudo "touch #{destination}"
|
56
|
+
sudo "chown #{user} #{destination}"
|
57
|
+
put ERB.new(template).result(bind || binding), destination
|
58
|
+
sudo("chown #{options[:chown]} #{destination}") if options[:chown]
|
59
|
+
sudo("chmod #{options[:chmod]} #{destination}") if options[:chmod]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
|
64
|
+
# MySQL
|
65
|
+
|
66
|
+
def mysql_run(sql)
|
67
|
+
if sql.respond_to?(:uniq)
|
68
|
+
sql.each { |s| mysql_run s }
|
69
|
+
else
|
70
|
+
run "echo \"#{sql}\" | #{mysql_call}"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def mysql_call
|
75
|
+
@mysql_root_password = @mysql_root_password || ask("Password for mysql root:")
|
76
|
+
"mysql -u root --password=#{@mysql_root_password}"
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
# Questions
|
81
|
+
|
82
|
+
def ask(question, default='')
|
83
|
+
question = "\n" + question.join("\n") if question.respond_to?(:uniq)
|
84
|
+
answer = Capistrano::CLI.ui.ask(question).strip
|
85
|
+
answer.empty? ? default : answer
|
86
|
+
end
|
87
|
+
|
88
|
+
def yes(question)
|
89
|
+
question = "\n" + question.join("\n") if question.respond_to?(:uniq)
|
90
|
+
question += ' (y/n)'
|
91
|
+
ask(question).downcase.include? 'y'
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
# Runners
|
96
|
+
|
97
|
+
def run_each(*args, &block)
|
98
|
+
cmd = args[0]
|
99
|
+
sudo = args[1]
|
100
|
+
if cmd.respond_to?(:uniq)
|
101
|
+
cmd.each { |c| run_each c, sudo, &block }
|
102
|
+
elsif sudo
|
103
|
+
sudo(cmd) { |ch, st, data| block.call(data) if block }
|
104
|
+
else
|
105
|
+
run(cmd) { |ch, st, data| block.call(data) if block }
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def sudo_each(cmds, &block)
|
110
|
+
run_each cmds, true, &block
|
111
|
+
end
|
112
|
+
|
113
|
+
def run_puts(cmds, &block)
|
114
|
+
run_each(cmds) { |data| puts data }
|
115
|
+
end
|
116
|
+
|
117
|
+
def sudo_puts(cmds, &block)
|
118
|
+
sudo_each(cmds) { |data| puts data }
|
119
|
+
end
|
data/deploy.rb.example
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
set :cookbook, {
|
2
|
+
:application => 'my_app',
|
3
|
+
:base_dir => '/var/www',
|
4
|
+
:repository => 'git@github.com:user/my-app.git',
|
5
|
+
#:platform => :php # If enabled, you can remove all mongrel* lines
|
6
|
+
:mongrel_port => 3000, # Your next app should be 3003
|
7
|
+
:ssh_port => 22, # Or any unused port above 1024 (best practice)
|
8
|
+
|
9
|
+
:production => {
|
10
|
+
:domain => 'myapp.com',
|
11
|
+
:other_domains => [ 'www.myapp.com' ],
|
12
|
+
:mongrels => 2 # Ports 3000-3001
|
13
|
+
},
|
14
|
+
|
15
|
+
:staging => {
|
16
|
+
:domain => 'staging.myapp.com',
|
17
|
+
:mongrels => 1, # Port 3002
|
18
|
+
:auth_user => 'staging', # Nginx HTTP authorization
|
19
|
+
:auth_pass => 'password'
|
20
|
+
},
|
21
|
+
|
22
|
+
# Below is necessary for cap debian:setup
|
23
|
+
|
24
|
+
:monit => {
|
25
|
+
:domain => 'monit.myapp.com',
|
26
|
+
:from => 'monit@myapp.com',
|
27
|
+
:to => 'me@myapp.com',
|
28
|
+
:port => 8100,
|
29
|
+
:auth_user => 'admin',
|
30
|
+
:auth_pass => 'password'
|
31
|
+
},
|
32
|
+
|
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'
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
# See config/cookbook/cookbook.rb for more cookbook options
|
44
|
+
|
45
|
+
require 'config/cookbook/cookbook'
|