ec2onrails 0.9.3 → 0.9.4
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/History.txt +17 -0
- data/lib/ec2onrails/capistrano_utils.rb +12 -2
- data/lib/ec2onrails/recipes.rb +57 -25
- data/lib/ec2onrails/version.rb +3 -2
- data/website/index.html +330 -18
- data/website/index.txt +249 -14
- data/website/stylesheets/screen.css +13 -8
- data/website/template.rhtml +6 -1
- metadata +2 -2
data/History.txt
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
== 0.9.4 2007-10-25
|
2
|
+
|
3
|
+
* ami-ecc12485 (32-bit) and ami-efc12486 (64-bit)
|
4
|
+
* This is another test release, still not intended to be production-ready until it's tested more thoroughly. Look for version 1.0.
|
5
|
+
* _The rebundling doesn't seem to be working._ I'll fix that in a new version. Details "here":http://rubyforge.org/tracker/?func=detail&aid=15047&group_id=4552&atid=17558
|
6
|
+
* Ubuntu 7.10/Gutsy
|
7
|
+
* Experimental multiple instance support.
|
8
|
+
** *Mongrel & MySQL now listen on all ports.* Be sure your firewall settings are correct, and set a MySQL root password.
|
9
|
+
* RDoc and RI not generated for installed gems.
|
10
|
+
* No longer upgrades packages & gems on ec2onrails:server:setup task.
|
11
|
+
* 32-bit and 64-bit images.
|
12
|
+
* EC2 AMI tools version 2007-08-29.
|
13
|
+
* NTP removed, it's no longer needed under Xen.
|
14
|
+
* MySQL data dir dirs now under /mnt.
|
15
|
+
* syslog now logs to /mnt/log.
|
16
|
+
* Build now cleans apt cache, image is now 1/2 the size.
|
17
|
+
|
1
18
|
== 0.9.3 2007-10-06
|
2
19
|
|
3
20
|
* Initial release
|
@@ -5,14 +5,24 @@ module Ec2onrails
|
|
5
5
|
raise("error: #{$?}") unless result
|
6
6
|
end
|
7
7
|
|
8
|
-
def make_admin_role_for(role
|
8
|
+
def make_admin_role_for(role)
|
9
|
+
newrole = "#{role.to_s}_admin".to_sym
|
9
10
|
roles[role].each do |srv_def|
|
10
11
|
options = srv_def.options.dup
|
11
12
|
options[:user] = "admin"
|
12
13
|
options[:port] = srv_def.port
|
13
14
|
options[:no_release] = true
|
14
|
-
role
|
15
|
+
role newrole, srv_def.host, options
|
15
16
|
end
|
16
17
|
end
|
18
|
+
|
19
|
+
# return hostnames for the role named role_sym. It must have the options given or no hostnames will be returned
|
20
|
+
def hostnames_for_role(role_sym, options = {})
|
21
|
+
role = roles[role_sym]
|
22
|
+
unless role
|
23
|
+
return []
|
24
|
+
end
|
25
|
+
role.reject{|s| s.options != options}.collect{|s| s.host}.join(',')
|
26
|
+
end
|
17
27
|
end
|
18
28
|
end
|
data/lib/ec2onrails/recipes.rb
CHANGED
@@ -31,14 +31,16 @@ Capistrano::Configuration.instance.load do
|
|
31
31
|
|
32
32
|
cfg = ec2onrails_config
|
33
33
|
|
34
|
-
set :
|
34
|
+
set :ec2onrails_version, Ec2onrails::VERSION::STRING
|
35
|
+
set :image_id_32_bit, Ec2onrails::VERSION::AMI_ID_32_BIT
|
36
|
+
set :image_id_64_bit, Ec2onrails::VERSION::AMI_ID_64_BIT
|
35
37
|
set :deploy_to, "/mnt/app"
|
36
38
|
set :use_sudo, false
|
37
39
|
set :user, "app"
|
38
|
-
|
39
|
-
make_admin_role_for
|
40
|
-
make_admin_role_for
|
41
|
-
make_admin_role_for
|
40
|
+
|
41
|
+
make_admin_role_for :web
|
42
|
+
make_admin_role_for :app
|
43
|
+
make_admin_role_for :db
|
42
44
|
|
43
45
|
roles[:web_admin].to_s
|
44
46
|
roles[:app_admin].to_s
|
@@ -48,30 +50,38 @@ Capistrano::Configuration.instance.load do
|
|
48
50
|
namespace :deploy do
|
49
51
|
desc <<-DESC
|
50
52
|
Overrides the default Capistrano deploy:start, directly calls \
|
51
|
-
/
|
53
|
+
/etc/init.d/mongrel
|
52
54
|
DESC
|
53
|
-
task :start, :
|
54
|
-
run "/
|
55
|
+
task :start, :roles => :app do
|
56
|
+
run "/etc/init.d/mongrel start"
|
55
57
|
end
|
56
58
|
|
57
59
|
desc <<-DESC
|
58
60
|
Overrides the default Capistrano deploy:stop, directly calls \
|
59
|
-
/
|
61
|
+
/etc/init.d/mongrel
|
60
62
|
DESC
|
61
|
-
task :stop, :
|
62
|
-
run "/
|
63
|
+
task :stop, :roles => :app do
|
64
|
+
run "/etc/init.d/mongrel stop"
|
63
65
|
end
|
64
66
|
|
65
67
|
desc <<-DESC
|
66
68
|
Overrides the default Capistrano deploy:restart, directly calls \
|
67
|
-
/
|
69
|
+
/etc/init.d/mongrel
|
68
70
|
DESC
|
69
|
-
task :restart, :
|
70
|
-
run "/
|
71
|
+
task :restart, :roles => :app do
|
72
|
+
run "/etc/init.d/mongrel restart"
|
71
73
|
end
|
72
74
|
end
|
73
75
|
|
74
76
|
namespace :ec2onrails do
|
77
|
+
desc <<-DESC
|
78
|
+
Show the AMI id's of the current images for this version of \
|
79
|
+
EC2 on Rails.
|
80
|
+
DESC
|
81
|
+
task :ami_ids, :roles => [:web, :db, :app] do
|
82
|
+
puts "32-bit server image for EC2 on Rails #{ec2onrails_version}: #{image_id_32_bit}"
|
83
|
+
puts "64-bit server image for EC2 on Rails #{ec2onrails_version}: #{image_id_64_bit}"
|
84
|
+
end
|
75
85
|
|
76
86
|
desc <<-DESC
|
77
87
|
Start a new server instance and prepare it for a cold deploy.
|
@@ -79,10 +89,12 @@ Capistrano::Configuration.instance.load do
|
|
79
89
|
task :setup, :roles => [:web, :db, :app] do
|
80
90
|
ec2.start_instance
|
81
91
|
server.set_timezone
|
82
|
-
server.
|
92
|
+
server.install_packages
|
93
|
+
server.install_gems
|
83
94
|
server.deploy_files
|
84
95
|
server.restart_services
|
85
96
|
deploy.setup
|
97
|
+
server.set_roles
|
86
98
|
db.create
|
87
99
|
end
|
88
100
|
|
@@ -98,15 +110,12 @@ Capistrano::Configuration.instance.load do
|
|
98
110
|
deploy.restart
|
99
111
|
end
|
100
112
|
|
101
|
-
namespace :ec2 do
|
113
|
+
namespace :ec2 do
|
102
114
|
desc <<-DESC
|
103
115
|
Start an instance, using the AMI of the correct version to match this gem.
|
104
116
|
DESC
|
105
117
|
task :start_instance, :roles => [:web, :db, :app] do
|
106
118
|
# TODO
|
107
|
-
# ec2 = EC2::Base.new(:access_key_id => access_key_id, :secret_access_key => secret_access_key)
|
108
|
-
# ec2.run_instances(:image_id => image_id, :key_name => key_name, :group_id => group_id)
|
109
|
-
# wait until image is booted
|
110
119
|
end
|
111
120
|
|
112
121
|
desc <<-DESC
|
@@ -119,7 +128,7 @@ Capistrano::Configuration.instance.load do
|
|
119
128
|
|
120
129
|
namespace :db do
|
121
130
|
desc <<-DESC
|
122
|
-
Load configuration info for the production database from \
|
131
|
+
[internal] Load configuration info for the production database from \
|
123
132
|
config/database.yml.
|
124
133
|
DESC
|
125
134
|
task :load_config, :roles => :db do
|
@@ -127,9 +136,19 @@ Capistrano::Configuration.instance.load do
|
|
127
136
|
cfg[:production_db_name] = db_config['database']
|
128
137
|
cfg[:production_db_user] = db_config['username']
|
129
138
|
cfg[:production_db_password] = db_config['password']
|
139
|
+
cfg[:production_db_host] = db_config['host']
|
140
|
+
cfg[:production_db_socket] = db_config['socket']
|
141
|
+
|
142
|
+
if (cfg[:production_db_host].nil? || cfg[:production_db_host].empty?) &&
|
143
|
+
(cfg[:production_db_host] != 'localhost' || cfg[:production_db_host] != '127.0.0.1') &&
|
144
|
+
(cfg[:production_db_socket].nil? || cfg[:production_db_socket].empty?)
|
145
|
+
raise "ERROR: missing database config. Make sure database.yml contains a 'production' section with either 'host: localhost' or 'socket: /var/run/mysqld/mysqld.sock'."
|
146
|
+
end
|
130
147
|
|
131
148
|
[cfg[:production_db_name], cfg[:production_db_user], cfg[:production_db_password]].each do |s|
|
132
|
-
if s.
|
149
|
+
if s.nil? || s.empty?
|
150
|
+
raise "ERROR: missing database config. Make sure database.yml contains a 'production' section with a database name, user, and password."
|
151
|
+
elsif s.match(/['"]/)
|
133
152
|
raise "ERROR: database config string '#{s}' contains quotes."
|
134
153
|
end
|
135
154
|
end
|
@@ -144,7 +163,7 @@ Capistrano::Configuration.instance.load do
|
|
144
163
|
on_rollback { drop }
|
145
164
|
load_config
|
146
165
|
run "echo 'create database #{cfg[:production_db_name]};' | mysql -u root"
|
147
|
-
run "echo \"grant all on #{cfg[:production_db_name]}.* to '#{cfg[:production_db_user]}'@'
|
166
|
+
run "echo \"grant all on #{cfg[:production_db_name]}.* to '#{cfg[:production_db_user]}'@'%' identified by '#{cfg[:production_db_password]}';\" | mysql -u root"
|
148
167
|
end
|
149
168
|
|
150
169
|
desc <<-DESC
|
@@ -195,6 +214,16 @@ Capistrano::Configuration.instance.load do
|
|
195
214
|
end
|
196
215
|
|
197
216
|
namespace :server do
|
217
|
+
desc <<-DESC
|
218
|
+
Tell the servers what roles they are in. This configures them with \
|
219
|
+
the appropriate settings for each role, and starts and/or stops the \
|
220
|
+
relevant services.
|
221
|
+
DESC
|
222
|
+
task :set_roles, :roles => [:web_admin, :db_admin, :app_admin] do
|
223
|
+
# TODO generate this based on the roles that actually exist so arbitrary new ones can be added
|
224
|
+
sudo "/usr/local/ec2onrails/bin/set_roles.rb web=#{hostnames_for_role(:web)} app=#{hostnames_for_role(:app)} db_primary=#{hostnames_for_role(:db, :primary => true)}"
|
225
|
+
end
|
226
|
+
|
198
227
|
desc <<-DESC
|
199
228
|
Upgrade to the newest versions of all Ubuntu packages.
|
200
229
|
DESC
|
@@ -207,7 +236,7 @@ Capistrano::Configuration.instance.load do
|
|
207
236
|
Upgrade to the newest versions of all rubygems.
|
208
237
|
DESC
|
209
238
|
task :upgrade_gems, :roles => [:web_admin, :db_admin, :app_admin] do
|
210
|
-
sudo "gem update -y"
|
239
|
+
sudo "gem update -y --no-rdoc --no-ri"
|
211
240
|
end
|
212
241
|
|
213
242
|
desc <<-DESC
|
@@ -230,7 +259,7 @@ Capistrano::Configuration.instance.load do
|
|
230
259
|
DESC
|
231
260
|
task :install_gems, :roles => [:web_admin, :db_admin, :app_admin] do
|
232
261
|
if cfg[:rubygems] && cfg[:rubygems].any?
|
233
|
-
sudo "gem install #{cfg[:rubygems].join(' ')} -y" do |ch, str, data|
|
262
|
+
sudo "gem install #{cfg[:rubygems].join(' ')} -y --no-rdoc --no-ri" do |ch, str, data|
|
234
263
|
ch[:data] ||= ""
|
235
264
|
ch[:data] << data
|
236
265
|
if data =~ />\s*$/
|
@@ -259,7 +288,7 @@ Capistrano::Configuration.instance.load do
|
|
259
288
|
Set the timezone using the value of the variable named timezone. \
|
260
289
|
Valid options for timezone can be determined by the contents of \
|
261
290
|
/usr/share/zoneinfo, which can be seen here: \
|
262
|
-
http://packages.ubuntu.com/cgi-bin/search_contents.pl?searchmode=filelist&word=tzdata&version=
|
291
|
+
http://packages.ubuntu.com/cgi-bin/search_contents.pl?searchmode=filelist&word=tzdata&version=gutsy&arch=all&page=1&number=all \
|
263
292
|
Remove 'usr/share/zoneinfo/' from the filename, and use the last \
|
264
293
|
directory and file as the value. For example 'Africa/Abidjan' or \
|
265
294
|
'posix/GMT' or 'Canada/Eastern'.
|
@@ -291,6 +320,9 @@ Capistrano::Configuration.instance.load do
|
|
291
320
|
end
|
292
321
|
|
293
322
|
desc <<-DESC
|
323
|
+
Restart a set of services. Set ec2onrails_config[:services_to_restart] \
|
324
|
+
to an array of strings. It's assumed that each service has a script \
|
325
|
+
in /etc/init.d
|
294
326
|
DESC
|
295
327
|
task :restart_services, :roles => [:web_admin, :db_admin, :app_admin] do
|
296
328
|
if cfg[:services_to_restart] && cfg[:services_to_restart].any?
|
data/lib/ec2onrails/version.rb
CHANGED
@@ -20,9 +20,10 @@ module Ec2onrails #:nodoc:
|
|
20
20
|
module VERSION #:nodoc:
|
21
21
|
MAJOR = 0
|
22
22
|
MINOR = 9
|
23
|
-
TINY =
|
23
|
+
TINY = 4
|
24
24
|
STRING = [MAJOR, MINOR, TINY].join('.')
|
25
25
|
|
26
|
-
|
26
|
+
AMI_ID_32_BIT = 'ami-ecc12485'
|
27
|
+
AMI_ID_64_BIT = 'ami-efc12486'
|
27
28
|
end
|
28
29
|
end
|
data/website/index.html
CHANGED
@@ -33,33 +33,346 @@
|
|
33
33
|
<h1>EC2 on Rails</h1>
|
34
34
|
<div id="version" class="clickable" onclick='document.location = "http://rubyforge.org/projects/ec2onrails"; return false'>
|
35
35
|
<p>Get Version</p>
|
36
|
-
<a href="http://rubyforge.org/projects/ec2onrails" class="numbers">0.9.
|
36
|
+
<a href="http://rubyforge.org/projects/ec2onrails" class="numbers">0.9.4</a>
|
37
37
|
</div>
|
38
|
-
<h2>
|
38
|
+
<h2>Deploy a Ruby on Rails app on <span class="caps">EC2</span> in five minutes</h2>
|
39
39
|
|
40
40
|
|
41
|
-
<
|
41
|
+
<p><span class="caps">EC2</span> on Rails is an Ubuntu Linux server image for
|
42
|
+
<a href="http://www.amazon.com/b/ref=sc_fe_l_2/102-6342260-7987311?ie=UTF8&node=201590011&no=3435361">Amazon’s <span class="caps">EC2</span> hosting service</a>
|
43
|
+
that’s ready to run a standard Ruby on Rails application with little or no customization.
|
44
|
+
It’s a Ruby on Rails <a href="http://en.wikipedia.org/wiki/Virtual_appliance">virtual appliance</a>.</p>
|
42
45
|
|
43
46
|
|
44
|
-
<
|
47
|
+
<p>If you have an <span class="caps">EC2</span> account and a public keypair you’re five minutes away from deploying
|
48
|
+
your Rails app.</p>
|
45
49
|
|
46
50
|
|
47
|
-
<p><
|
51
|
+
<p><em>Deploying a simple rails app is simple, and complex customization (if required) is possible.</em></p>
|
48
52
|
|
49
53
|
|
50
|
-
<
|
54
|
+
<p>Features of the <span class="caps">EC2</span> image:</p>
|
51
55
|
|
52
56
|
|
53
|
-
<
|
57
|
+
<ul>
|
58
|
+
<li>Ready to deploy a Rails app with little or no configuration of the server required.</li>
|
59
|
+
<li>Automatic backup of MySQL database to S3.</li>
|
60
|
+
<li>Capistrano tasks to customize the server image, archive and restore the database to/from S3, and more (available as a rubygem).</li>
|
61
|
+
<li>Mongrel_cluster behind Apache 2.2, configured according to
|
62
|
+
<a href="http://blog.codahale.com/2006/06/19/time-for-a-grown-up-server-rails-mongrel-apache-capistrano-and-you/">Coda Hale’s excellent guide</a>
|
63
|
+
with /etc/init.d startup script</li>
|
64
|
+
<li>Ruby on Rails 1.2.5</li>
|
65
|
+
<li>Ruby 1.8.6</li>
|
66
|
+
<li>MySQL 5</li>
|
67
|
+
<li>Ubuntu 7.10 “Gutsy” with <a href="http://wiki.xensource.com/xenwiki/XenSpecificGlibc">Xen versions of standard libs</a> (<a href="http://packages.ubuntu.com/feisty/libs/libc6-xen">libc6-xen</a> package).</li>
|
68
|
+
<li>Amazon <span class="caps">AMI</span> tools installed</li>
|
69
|
+
<li>A script to rebundle a customized version of the image in one step if required</li>
|
70
|
+
<li>MySQL and Apache configured to write logs to /mnt/log so you don’t fill up <span class="caps">EC2</span>’s small root filesystem</li>
|
71
|
+
<li>32-bit and 64-bit images available (supports all instance types, small to extra large).</li>
|
72
|
+
<li>Created using a publicly available (GPL) build file.</li>
|
73
|
+
<li>Multiple instance support (though it’s still experimental, not fully tested yet).</li>
|
74
|
+
</ul>
|
54
75
|
|
55
76
|
|
56
|
-
<h2>
|
77
|
+
<h2>Using the image</h2>
|
57
78
|
|
58
79
|
|
59
|
-
<p
|
80
|
+
<p>This documentation will be improved soon, for now hopefully this covers the basics.</p>
|
60
81
|
|
61
82
|
|
62
|
-
<
|
83
|
+
<h4>1. Install the gem</h4>
|
84
|
+
|
85
|
+
|
86
|
+
<pre>sudo gem install ec2onrails</pre>
|
87
|
+
|
88
|
+
<h4>2. Add the config files to your Rails app</h4>
|
89
|
+
|
90
|
+
|
91
|
+
<p>Put <a href="http://ec2onrails.rubyforge.org/svn/trunk/documentation/examples/Capfile">Capfile</a>
|
92
|
+
in the root of your rails folder, and put
|
93
|
+
<a href="http://ec2onrails.rubyforge.org/svn/trunk/documentation/examples/deploy.rb">deploy.rb</a>
|
94
|
+
and
|
95
|
+
<a href="http://ec2onrails.rubyforge.org/svn/trunk/documentation/examples/s3.yml">s3.yml</a>
|
96
|
+
in the config folder.</p>
|
97
|
+
|
98
|
+
|
99
|
+
<p>Be sure to customize those files and read the comments.</p>
|
100
|
+
|
101
|
+
|
102
|
+
<p>Also, if you’re using a separate instance for the database, use the hostname “db_primary”
|
103
|
+
in your database.yml file. After running “cap ec2onrails:server:set_roles” it will resolve
|
104
|
+
to the instance defined in your Capistrano “db” role.</p>
|
105
|
+
|
106
|
+
|
107
|
+
<h4>4. Start up one or more instances of the image.</h4>
|
108
|
+
|
109
|
+
|
110
|
+
<p>Soon there will be a Capistrano task to do this for you. In the meantime read the
|
111
|
+
<a href="http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/running-an-instance.html">running an instance section</a>
|
112
|
+
in Amazon’s getting started guide.</p>
|
113
|
+
|
114
|
+
|
115
|
+
The image id’s of the current images are:
|
116
|
+
<ul>
|
117
|
+
<li>32-bit: <strong>ami-ecc12485</strong>.</li>
|
118
|
+
<li>64-bit: <strong>ami-efc12486</strong>.</li>
|
119
|
+
</ul>
|
120
|
+
|
121
|
+
|
122
|
+
<p>(Please read the change log below for release notes. <span class="caps">NOTE</span>: multiple
|
123
|
+
instance support isn’t fully tested yet, look for version 1.0 soon!)</p>
|
124
|
+
|
125
|
+
|
126
|
+
<p>As is <a href="http://docs.amazonwebservices.com/AWSEC2/2007-08-29/DeveloperGuide/public-ami-guidelines.html">standard for public <span class="caps">AMI</span>’s</a>,
|
127
|
+
password-based logins are disabled. You log in with your own
|
128
|
+
<a href="http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/running-an-instance.html">public/private keypair</a>.</p>
|
129
|
+
|
130
|
+
|
131
|
+
<p>Most basic things can be configured automatically by the Capistrano tasks, but if you want to
|
132
|
+
you can login by ssh as a user named “admin” (has sudo ability) or as “app” (the user
|
133
|
+
that the app runs as, does not have sudo ability). The Capistrano tasks automatically
|
134
|
+
use the app user use to deploy the app, and the admin user for server admin tasks
|
135
|
+
that require sudo.</p>
|
136
|
+
|
137
|
+
|
138
|
+
<p>Double-check <a href="http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/running-an-instance.html">your firewall settings</a>.
|
139
|
+
Be sure that you haven’t allowed public access to any ports other than <span class="caps">TCP 22</span> and <span class="caps">TCP 80</span>.
|
140
|
+
If you’re using multiple instances, be sure to allow them network access to each other.</p>
|
141
|
+
|
142
|
+
|
143
|
+
<h4>5. Deploy the app with Capistrano</h4>
|
144
|
+
|
145
|
+
|
146
|
+
<pre>
|
147
|
+
cap ec2onrails:setup
|
148
|
+
cap deploy:migrations
|
149
|
+
</pre>
|
150
|
+
|
151
|
+
<p>Yes, it’s that easy! The setup task will set the server’s timezone, install any
|
152
|
+
gems and Ubuntu packages that you specified in the config file, and
|
153
|
+
create your production database.</p>
|
154
|
+
|
155
|
+
|
156
|
+
<p>That’s it, you’re done.</p>
|
157
|
+
|
158
|
+
|
159
|
+
<h2>Capistrano tasks</h2>
|
160
|
+
|
161
|
+
|
162
|
+
<p>I’ll post full documentation for the Capistrano tasks soon, in the meantime here’s a brief summary:</p>
|
163
|
+
|
164
|
+
|
165
|
+
Server config tasks. These run as the admin user. You can specify lists of
|
166
|
+
gems and Ubuntu packages to be installed. The deploy_files task uploads
|
167
|
+
files to the server (they will be owned by root). It’s intended mainly for
|
168
|
+
customized config files for new packages installed via the install_packages
|
169
|
+
task.
|
170
|
+
<ul>
|
171
|
+
<li>ec2onrails:server:deploy_files</li>
|
172
|
+
<li>ec2onrails:server:set_timezone</li>
|
173
|
+
<li>ec2onrails:server:upgrade_gems</li>
|
174
|
+
<li>ec2onrails:server:upgrade_packages</li>
|
175
|
+
<li>ec2onrails:server:install_gems</li>
|
176
|
+
<li>ec2onrails:server:install_packages</li>
|
177
|
+
<li>ec2onrails:server:upgrade_and_install_all</li>
|
178
|
+
<li>ec2onrails:server:restart_services</li>
|
179
|
+
<li>ec2onrails:server:set_roles
|
180
|
+
- Customizes each instance for it’s role(s) (as defined in your Capistrano deploy.rb file).
|
181
|
+
For now this just makes sure that only the appropriate services (Apache, Mongrel, and/or MySQL)
|
182
|
+
are running. Eventually this will customize settings for the running services also. Note that
|
183
|
+
an instance can have more than one role. If there’s only one instance it will have all roles.</li>
|
184
|
+
</ul>
|
185
|
+
|
186
|
+
|
187
|
+
Database management tasks: archive and restore can operate on any specified S3 bucket.
|
188
|
+
For example, I use this to restore the current production data (from my actual production backup
|
189
|
+
bucket) onto a staging server that has the current production version of my
|
190
|
+
app. I then deploy the new version which tests migrations exactly as they’ll
|
191
|
+
run on the production server.
|
192
|
+
<ul>
|
193
|
+
<li>ec2onrails:db:archive</li>
|
194
|
+
<li>ec2onrails:db:restore</li>
|
195
|
+
<li>ec2onrails:db:create</li>
|
196
|
+
<li>ec2onrails:db:drop</li>
|
197
|
+
<li>ec2onrails:db:recreate</li>
|
198
|
+
<li>ec2onrails:db:set_root_password</li>
|
199
|
+
</ul>
|
200
|
+
|
201
|
+
|
202
|
+
<ul>
|
203
|
+
<li>ec2onrails:ami_ids
|
204
|
+
- Shows the <span class="caps">AMI</span> id’s of the images that match the current version of the gem.</li>
|
205
|
+
</ul>
|
206
|
+
|
207
|
+
|
208
|
+
<ul>
|
209
|
+
<li>ec2onrails:setup
|
210
|
+
- This is a convenience task to get a new instance completely set up in one
|
211
|
+
step, everything except deploying the app.</li>
|
212
|
+
</ul>
|
213
|
+
|
214
|
+
|
215
|
+
<ul>
|
216
|
+
<li>ec2onrails:restore_db_and_deploy
|
217
|
+
- Another convenience task to recreate the db, restore data to it from an s3
|
218
|
+
bucket and deploy the app, useful to set up a staging server.</li>
|
219
|
+
</ul>
|
220
|
+
|
221
|
+
|
222
|
+
<h2>Saving your own customized version of the image.</h2>
|
223
|
+
|
224
|
+
|
225
|
+
I’m trying to make the image configurable enough that you won’t need to do this, but
|
226
|
+
if you want to save a customized version of the image, there is a script to do it:
|
227
|
+
<code>/usr/local/ec2onrails/bin/rebundle.sh</code>. It takes a long time and there
|
228
|
+
are long periods with no output so you might want to hit a key once in a while
|
229
|
+
(or set “ServerAliveInterval 60” in your ssh_config file) to avoid being disconnected
|
230
|
+
while it’s running.
|
231
|
+
|
232
|
+
<p>It expects a directory, /mnt/aws-config, that contains a config file and your <span class="caps">AWS</span>
|
233
|
+
access identifiers. The contents of the directory are the following three files:</p>
|
234
|
+
|
235
|
+
|
236
|
+
<ul>
|
237
|
+
<li>cert-XXXX.pem and pk-XXXX.pem. These are the X.509 certificate and private key files from your Amazon access key identifiers.</li>
|
238
|
+
<li>A file named config. It’s contents should look like the following:</li>
|
239
|
+
</ul>
|
240
|
+
|
241
|
+
|
242
|
+
<pre>
|
243
|
+
AWS_ACCOUNT_ID=1234-1234-1234
|
244
|
+
KEY_FILE_NAME=pk-XXXX.pem
|
245
|
+
CERT_FILE_NAME=cert-XXXX.pem
|
246
|
+
AWS_ACCESS_KEY_ID=ABC0123
|
247
|
+
AWS_SECRET_ACCESS_KEY=abc0123abc0123abc0123
|
248
|
+
BUCKET_BASE_NAME=a-string-identifier
|
249
|
+
</pre>
|
250
|
+
|
251
|
+
<h2>Building the image</h2>
|
252
|
+
|
253
|
+
|
254
|
+
<p>Building the image is not required, most people will simply use the prebuilt public
|
255
|
+
image, but there is also a Rake build script that builds the image, and optionally bundles
|
256
|
+
and uploads it to S3.
|
257
|
+
It should run on any Linux system, including one of the stock Fedora-based Amazon public <span class="caps">AMI</span>’s
|
258
|
+
(it is tested on <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=994&categoryID=101">Amazon’s <span class="caps">FC6</span> x86_64 image</a>).</p>
|
259
|
+
|
260
|
+
|
261
|
+
<h2>Mailing lists</h2>
|
262
|
+
|
263
|
+
|
264
|
+
<p>There are two Google groups, one for
|
265
|
+
<a href="http://groups.google.com/group/ec2-on-rails-announce">announcements</a>
|
266
|
+
and one for
|
267
|
+
<a href="http://groups.google.com/group/ec2-on-rails-discuss">discussion</a>.</p>
|
268
|
+
|
269
|
+
|
270
|
+
<h2>Comments</h2>
|
271
|
+
|
272
|
+
|
273
|
+
<p>Comments are welcome. Send an email to <a href="http://pauldowman.com/contact/">Paul Dowman</a>
|
274
|
+
or to the <a href="http://groups.google.com/group/ec2-on-rails-discuss">Google group</a>.
|
275
|
+
If you find bugs please file them
|
276
|
+
<a href="http://rubyforge.org/tracker/?atid=17558&group_id=4552&func=browse">here</a>
|
277
|
+
or send me an <a href="http://pauldowman.com/contact/">email</a>.</p>
|
278
|
+
|
279
|
+
|
280
|
+
<h2>Change log</h2>
|
281
|
+
|
282
|
+
|
283
|
+
<p>Also see the <a href="http://rubyforge.org/tracker/?atid=17558&group_id=4552&func=browse">list of open issues</a>.</p>
|
284
|
+
|
285
|
+
|
286
|
+
<h4>0.9.4, ami-ecc12485 (32-bit) and ami-efc12486 (64-bit)</h4>
|
287
|
+
|
288
|
+
|
289
|
+
7 Oct, 2007
|
290
|
+
<ul>
|
291
|
+
<li>This is another test release, still not intended to be production-ready until it’s tested more thoroughly. Look for version 1.0.</li>
|
292
|
+
<li><em>The rebundling doesn’t seem to be working.</em> I’ll fix that in a new version. Details <a href="http://rubyforge.org/tracker/?func=detail&aid=15047&group_id=4552&atid=17558">here</a></li>
|
293
|
+
<li>Ubuntu 7.10/Gutsy</li>
|
294
|
+
<li>Experimental multiple instance support.
|
295
|
+
<ul>
|
296
|
+
<li><strong>Mongrel & MySQL now listen on all ports.</strong> Be sure your firewall settings are correct, and set a MySQL root password.</li>
|
297
|
+
</ul>
|
298
|
+
</li>
|
299
|
+
<li>RDoc and RI not generated for installed gems.</li>
|
300
|
+
<li>No longer upgrades packages & gems on ec2onrails:server:setup task.</li>
|
301
|
+
<li>32-bit and 64-bit images.</li>
|
302
|
+
<li><span class="caps">EC2 AMI</span> tools version 2007-08-29.</li>
|
303
|
+
<li><span class="caps">NTP</span> removed, it’s no longer needed under Xen.</li>
|
304
|
+
<li>MySQL data dir dirs now under /mnt.</li>
|
305
|
+
<li>syslog now logs to /mnt/log.</li>
|
306
|
+
<li>Build now cleans apt cache, image is now 1/2 the size.</li>
|
307
|
+
</ul>
|
308
|
+
|
309
|
+
|
310
|
+
<h4>0.9.3, ami-a3f91cca</h4>
|
311
|
+
|
312
|
+
|
313
|
+
23 Oct, 2007
|
314
|
+
<ul>
|
315
|
+
<li>This is another test release, still not intended to be production-ready until it’s tested more thoroughly. Look for version 1.0.</li>
|
316
|
+
<li>There is now a rubygem available with Capistrano tasks.</li>
|
317
|
+
<li>“admin” user added, server admin cap tasks run as this user</li>
|
318
|
+
<li>MySQL settings tweaked to reflect large amount of <span class="caps">RAM</span> available on <span class="caps">EC2</span> instances.</li>
|
319
|
+
<li><a href="issues">http://code.google.com/p/ec2-on-rails/issues/list?can=1&q=label%3AFixed-in-0_9_3</a> fixed in this release</li>
|
320
|
+
</ul>
|
321
|
+
|
322
|
+
|
323
|
+
<h4>0.9.2, ami-0cf61365</h4>
|
324
|
+
|
325
|
+
|
326
|
+
13 Sept, 2007
|
327
|
+
<ul>
|
328
|
+
<li>This is another test release, still not intended to be production-ready until it’s tested more thoroughly. Look for version 1.0.</li>
|
329
|
+
<li><a href="issues">http://code.google.com/p/ec2-on-rails/issues/list?can=1&q=label%3AFixed-in-0_9_2</a> fixed in this release</li>
|
330
|
+
</ul>
|
331
|
+
|
332
|
+
|
333
|
+
<h4>0.9.1, ami-99f712f0</h4>
|
334
|
+
|
335
|
+
|
336
|
+
11 Sept, 2007
|
337
|
+
<ul>
|
338
|
+
<li>This is another test release, still not intended to be production-ready until it’s tested more thoroughly. Look for version 1.0.</li>
|
339
|
+
<li>Fixed permissions on /var/lib/dhcp3</li>
|
340
|
+
<li><a href="issues">http://code.google.com/p/ec2-on-rails/issues/list?can=1&q=label%3AFixed-in-0_9_1</a> fixed in this release</li>
|
341
|
+
</ul>
|
342
|
+
|
343
|
+
|
344
|
+
<h4>0.9.0, ami-bdf411d4</h4>
|
345
|
+
|
346
|
+
|
347
|
+
7 Sept 2007
|
348
|
+
<ul>
|
349
|
+
<li>First release built with new rake build script, this is a test release, not intended to be production-ready until it’s tested more thoroughly.</li>
|
350
|
+
<li>Amazon <span class="caps">EC2 API</span> tools (java-based) no longer installed by default because they’re not used on most servers. They’re needed only for registering a rebundled image so there’s now a script to install them: /usr/local/ec2-on-rails/install_ec2_api_tools.sh. The ruby-based <span class="caps">EC2</span> image tools are still installed.</li>
|
351
|
+
<li>Removed <a href="Java">http://packages.ubuntu.com/feisty/libs/sun-java6-jre</a> and it’s massive list of dependencies because it was only needed for the <span class="caps">EC2 API</span> tools. This saved a huge amount of space.</li>
|
352
|
+
<li>Removed ImageMagick, RMagick and hpricot due to popular demand. There will soon be cap2 tasks to customize which packages and gems are installed.</li>
|
353
|
+
</ul>
|
354
|
+
|
355
|
+
|
356
|
+
<h4>0.8.1, ami-b79a7fde</h4>
|
357
|
+
|
358
|
+
|
359
|
+
29 July 2007
|
360
|
+
<ul>
|
361
|
+
<li>Fixed S3 backup cron job.</li>
|
362
|
+
<li>Added script to restore data from S3 (/usr/local/aws/bin/restore_app_db.rb). This is useful when setting up a staging server to test your deployment, you can have it set up with a copy of your production data to test your migrations.</li>
|
363
|
+
<li>Rewrite rule now allows images/css on maintenance page</li>
|
364
|
+
<li>Added empty /etc/apache2/sites-available/app.custom for custom Apache configuration in a separate file (so it can be deployed by rsync more easily).</li>
|
365
|
+
<li>Added ImageMagick, RMagick and hpricot due to popular demand.</li>
|
366
|
+
</ul>
|
367
|
+
|
368
|
+
|
369
|
+
<h4>0.8.0, ami-4e907527</h4>
|
370
|
+
|
371
|
+
|
372
|
+
20 June 2007
|
373
|
+
<ul>
|
374
|
+
<li>Initial release.</li>
|
375
|
+
</ul>
|
63
376
|
|
64
377
|
|
65
378
|
<h2>How to submit patches</h2>
|
@@ -75,19 +388,18 @@
|
|
75
388
|
|
76
389
|
|
77
390
|
<p>This code is free to use under the terms of the <span class="caps">GPL</span> v2.</p>
|
78
|
-
|
79
|
-
|
80
|
-
<h2>Contact</h2>
|
81
|
-
|
82
|
-
|
83
|
-
<p>Comments are welcome. Send an email to <a href="http://pauldowman.com/contact">Paul Dowman</a> or to the <a href="http://groups.google.com/group/ec2-on-rails">forum</a></p>
|
84
391
|
<p class="coda">
|
85
|
-
<a href="http://pauldowman.com/contact/">Paul Dowman</a>,
|
392
|
+
<a href="http://pauldowman.com/contact/">Paul Dowman</a>, 25th October 2007<br>
|
86
393
|
Theme extended from <a href="http://rb2js.rubyforge.org/">Paul Battley</a>
|
87
394
|
</p>
|
88
395
|
</div>
|
89
396
|
|
90
|
-
|
397
|
+
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
398
|
+
</script>
|
399
|
+
<script type="text/javascript">
|
400
|
+
_uacct = "UA-2759652-1";
|
401
|
+
urchinTracker();
|
402
|
+
</script>
|
91
403
|
|
92
404
|
</body>
|
93
405
|
</html>
|
data/website/index.txt
CHANGED
@@ -1,27 +1,266 @@
|
|
1
1
|
h1. EC2 on Rails
|
2
2
|
|
3
|
-
h2. This page will be updated soon!
|
4
3
|
|
4
|
+
h2. Deploy a Ruby on Rails app on EC2 in five minutes
|
5
5
|
|
6
|
-
|
6
|
+
EC2 on Rails is an Ubuntu Linux server image for
|
7
|
+
"Amazon's EC2 hosting service":http://www.amazon.com/b/ref=sc_fe_l_2/102-6342260-7987311?ie=UTF8&node=201590011&no=3435361
|
8
|
+
that's ready to run a standard Ruby on Rails application with little or no customization.
|
9
|
+
It's a Ruby on Rails "virtual appliance":http://en.wikipedia.org/wiki/Virtual_appliance.
|
7
10
|
|
11
|
+
If you have an EC2 account and a public keypair you're five minutes away from deploying
|
12
|
+
your Rails app.
|
8
13
|
|
9
|
-
|
14
|
+
_Deploying a simple rails app is simple, and complex customization (if required) is possible._
|
10
15
|
|
11
|
-
|
16
|
+
Features of the EC2 image:
|
12
17
|
|
13
|
-
|
18
|
+
* Ready to deploy a Rails app with little or no configuration of the server required.
|
19
|
+
* Automatic backup of MySQL database to S3.
|
20
|
+
* Capistrano tasks to customize the server image, archive and restore the database to/from S3, and more (available as a rubygem).
|
21
|
+
* Mongrel_cluster behind Apache 2.2, configured according to
|
22
|
+
"Coda Hale's excellent guide":http://blog.codahale.com/2006/06/19/time-for-a-grown-up-server-rails-mongrel-apache-capistrano-and-you/
|
23
|
+
with /etc/init.d startup script
|
24
|
+
* Ruby on Rails 1.2.5
|
25
|
+
* Ruby 1.8.6
|
26
|
+
* MySQL 5
|
27
|
+
* Ubuntu 7.10 "Gutsy" with "Xen versions of standard libs":http://wiki.xensource.com/xenwiki/XenSpecificGlibc ("libc6-xen":http://packages.ubuntu.com/feisty/libs/libc6-xen package).
|
28
|
+
* Amazon AMI tools installed
|
29
|
+
* A script to rebundle a customized version of the image in one step if required
|
30
|
+
* MySQL and Apache configured to write logs to /mnt/log so you don't fill up EC2's small root filesystem
|
31
|
+
* 32-bit and 64-bit images available (supports all instance types, small to extra large).
|
32
|
+
* Created using a publicly available (GPL) build file.
|
33
|
+
* Multiple instance support (though it's still experimental, not fully tested yet).
|
14
34
|
|
15
35
|
|
16
|
-
h2.
|
36
|
+
h2. Using the image
|
17
37
|
|
38
|
+
This documentation will be improved soon, for now hopefully this covers the basics.
|
18
39
|
|
40
|
+
h4. 1. Install the gem
|
19
41
|
|
20
|
-
|
42
|
+
<pre>sudo gem install ec2onrails</pre>
|
21
43
|
|
22
|
-
|
44
|
+
h4. 2. Add the config files to your Rails app
|
23
45
|
|
24
|
-
"
|
46
|
+
Put "Capfile":http://ec2onrails.rubyforge.org/svn/trunk/documentation/examples/Capfile
|
47
|
+
in the root of your rails folder, and put
|
48
|
+
"deploy.rb":http://ec2onrails.rubyforge.org/svn/trunk/documentation/examples/deploy.rb
|
49
|
+
and
|
50
|
+
"s3.yml":http://ec2onrails.rubyforge.org/svn/trunk/documentation/examples/s3.yml
|
51
|
+
in the config folder.
|
52
|
+
|
53
|
+
Be sure to customize those files and read the comments.
|
54
|
+
|
55
|
+
Also, if you're using a separate instance for the database, use the hostname "db_primary"
|
56
|
+
in your database.yml file. After running "cap ec2onrails:server:set_roles" it will resolve
|
57
|
+
to the instance defined in your Capistrano "db" role.
|
58
|
+
|
59
|
+
h4. 4. Start up one or more instances of the image.
|
60
|
+
|
61
|
+
Soon there will be a Capistrano task to do this for you. In the meantime read the
|
62
|
+
"running an instance section":http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/running-an-instance.html
|
63
|
+
in Amazon's getting started guide.
|
64
|
+
|
65
|
+
The image id's of the current images are:
|
66
|
+
* 32-bit: *ami-ecc12485*.
|
67
|
+
* 64-bit: *ami-efc12486*.
|
68
|
+
|
69
|
+
(Please read the change log below for release notes. NOTE: multiple
|
70
|
+
instance support isn't fully tested yet, look for version 1.0 soon!)
|
71
|
+
|
72
|
+
As is "standard for public AMI's":http://docs.amazonwebservices.com/AWSEC2/2007-08-29/DeveloperGuide/public-ami-guidelines.html,
|
73
|
+
password-based logins are disabled. You log in with your own
|
74
|
+
"public/private keypair":http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/running-an-instance.html.
|
75
|
+
|
76
|
+
Most basic things can be configured automatically by the Capistrano tasks, but if you want to
|
77
|
+
you can login by ssh as a user named "admin" (has sudo ability) or as "app" (the user
|
78
|
+
that the app runs as, does not have sudo ability). The Capistrano tasks automatically
|
79
|
+
use the app user use to deploy the app, and the admin user for server admin tasks
|
80
|
+
that require sudo.
|
81
|
+
|
82
|
+
Double-check "your firewall settings":http://docs.amazonwebservices.com/AWSEC2/2007-08-29/GettingStartedGuide/running-an-instance.html.
|
83
|
+
Be sure that you haven't allowed public access to any ports other than TCP 22 and TCP 80.
|
84
|
+
If you're using multiple instances, be sure to allow them network access to each other.
|
85
|
+
|
86
|
+
|
87
|
+
h4. 5. Deploy the app with Capistrano
|
88
|
+
|
89
|
+
<pre>
|
90
|
+
cap ec2onrails:setup
|
91
|
+
cap deploy:migrations
|
92
|
+
</pre>
|
93
|
+
|
94
|
+
Yes, it's that easy! The setup task will set the server's timezone, install any
|
95
|
+
gems and Ubuntu packages that you specified in the config file, and
|
96
|
+
create your production database.
|
97
|
+
|
98
|
+
That's it, you're done.
|
99
|
+
|
100
|
+
h2. Capistrano tasks
|
101
|
+
|
102
|
+
I'll post full documentation for the Capistrano tasks soon, in the meantime here's a brief summary:
|
103
|
+
|
104
|
+
Server config tasks. These run as the admin user. You can specify lists of
|
105
|
+
gems and Ubuntu packages to be installed. The deploy_files task uploads
|
106
|
+
files to the server (they will be owned by root). It's intended mainly for
|
107
|
+
customized config files for new packages installed via the install_packages
|
108
|
+
task.
|
109
|
+
* ec2onrails:server:deploy_files
|
110
|
+
* ec2onrails:server:set_timezone
|
111
|
+
* ec2onrails:server:upgrade_gems
|
112
|
+
* ec2onrails:server:upgrade_packages
|
113
|
+
* ec2onrails:server:install_gems
|
114
|
+
* ec2onrails:server:install_packages
|
115
|
+
* ec2onrails:server:upgrade_and_install_all
|
116
|
+
* ec2onrails:server:restart_services
|
117
|
+
* ec2onrails:server:set_roles
|
118
|
+
- Customizes each instance for it's role(s) (as defined in your Capistrano deploy.rb file).
|
119
|
+
For now this just makes sure that only the appropriate services (Apache, Mongrel, and/or MySQL)
|
120
|
+
are running. Eventually this will customize settings for the running services also. Note that
|
121
|
+
an instance can have more than one role. If there's only one instance it will have all roles.
|
122
|
+
|
123
|
+
Database management tasks: archive and restore can operate on any specified S3 bucket.
|
124
|
+
For example, I use this to restore the current production data (from my actual production backup
|
125
|
+
bucket) onto a staging server that has the current production version of my
|
126
|
+
app. I then deploy the new version which tests migrations exactly as they'll
|
127
|
+
run on the production server.
|
128
|
+
* ec2onrails:db:archive
|
129
|
+
* ec2onrails:db:restore
|
130
|
+
* ec2onrails:db:create
|
131
|
+
* ec2onrails:db:drop
|
132
|
+
* ec2onrails:db:recreate
|
133
|
+
* ec2onrails:db:set_root_password
|
134
|
+
|
135
|
+
* ec2onrails:ami_ids
|
136
|
+
- Shows the AMI id's of the images that match the current version of the gem.
|
137
|
+
|
138
|
+
* ec2onrails:setup
|
139
|
+
- This is a convenience task to get a new instance completely set up in one
|
140
|
+
step, everything except deploying the app.
|
141
|
+
|
142
|
+
* ec2onrails:restore_db_and_deploy
|
143
|
+
- Another convenience task to recreate the db, restore data to it from an s3
|
144
|
+
bucket and deploy the app, useful to set up a staging server.
|
145
|
+
|
146
|
+
|
147
|
+
h2. Saving your own customized version of the image.
|
148
|
+
|
149
|
+
I'm trying to make the image configurable enough that you won't need to do this, but
|
150
|
+
if you want to save a customized version of the image, there is a script to do it:
|
151
|
+
<code>/usr/local/ec2onrails/bin/rebundle.sh</code>. It takes a long time and there
|
152
|
+
are long periods with no output so you might want to hit a key once in a while
|
153
|
+
(or set "ServerAliveInterval 60" in your ssh_config file) to avoid being disconnected
|
154
|
+
while it's running.
|
155
|
+
|
156
|
+
It expects a directory, /mnt/aws-config, that contains a config file and your AWS
|
157
|
+
access identifiers. The contents of the directory are the following three files:
|
158
|
+
|
159
|
+
* cert-XXXX.pem and pk-XXXX.pem. These are the X.509 certificate and private key files from your Amazon access key identifiers.
|
160
|
+
* A file named config. It's contents should look like the following:
|
161
|
+
|
162
|
+
<pre>
|
163
|
+
AWS_ACCOUNT_ID=1234-1234-1234
|
164
|
+
KEY_FILE_NAME=pk-XXXX.pem
|
165
|
+
CERT_FILE_NAME=cert-XXXX.pem
|
166
|
+
AWS_ACCESS_KEY_ID=ABC0123
|
167
|
+
AWS_SECRET_ACCESS_KEY=abc0123abc0123abc0123
|
168
|
+
BUCKET_BASE_NAME=a-string-identifier
|
169
|
+
</pre>
|
170
|
+
|
171
|
+
|
172
|
+
h2. Building the image
|
173
|
+
|
174
|
+
Building the image is not required, most people will simply use the prebuilt public
|
175
|
+
image, but there is also a Rake build script that builds the image, and optionally bundles
|
176
|
+
and uploads it to S3.
|
177
|
+
It should run on any Linux system, including one of the stock Fedora-based Amazon public AMI's
|
178
|
+
(it is tested on "Amazon's FC6 x86_64 image":http://developer.amazonwebservices.com/connect/entry.jspa?externalID=994&categoryID=101).
|
179
|
+
|
180
|
+
|
181
|
+
h2. Mailing lists
|
182
|
+
|
183
|
+
There are two Google groups, one for
|
184
|
+
"announcements":http://groups.google.com/group/ec2-on-rails-announce
|
185
|
+
and one for
|
186
|
+
"discussion":http://groups.google.com/group/ec2-on-rails-discuss.
|
187
|
+
|
188
|
+
|
189
|
+
h2. Comments
|
190
|
+
|
191
|
+
Comments are welcome. Send an email to "Paul Dowman":http://pauldowman.com/contact/
|
192
|
+
or to the "Google group":http://groups.google.com/group/ec2-on-rails-discuss.
|
193
|
+
If you find bugs please file them
|
194
|
+
"here":http://rubyforge.org/tracker/?atid=17558&group_id=4552&func=browse
|
195
|
+
or send me an "email":http://pauldowman.com/contact/.
|
196
|
+
|
197
|
+
|
198
|
+
h2. Change log
|
199
|
+
|
200
|
+
Also see the "list of open issues":http://rubyforge.org/tracker/?atid=17558&group_id=4552&func=browse.
|
201
|
+
|
202
|
+
|
203
|
+
h4. 0.9.4, ami-ecc12485 (32-bit) and ami-efc12486 (64-bit)
|
204
|
+
|
205
|
+
7 Oct, 2007
|
206
|
+
* This is another test release, still not intended to be production-ready until it's tested more thoroughly. Look for version 1.0.
|
207
|
+
* _The rebundling doesn't seem to be working._ I'll fix that in a new version. Details "here":http://rubyforge.org/tracker/?func=detail&aid=15047&group_id=4552&atid=17558
|
208
|
+
* Ubuntu 7.10/Gutsy
|
209
|
+
* Experimental multiple instance support.
|
210
|
+
** *Mongrel & MySQL now listen on all ports.* Be sure your firewall settings are correct, and set a MySQL root password.
|
211
|
+
* RDoc and RI not generated for installed gems.
|
212
|
+
* No longer upgrades packages & gems on ec2onrails:server:setup task.
|
213
|
+
* 32-bit and 64-bit images.
|
214
|
+
* EC2 AMI tools version 2007-08-29.
|
215
|
+
* NTP removed, it's no longer needed under Xen.
|
216
|
+
* MySQL data dir dirs now under /mnt.
|
217
|
+
* syslog now logs to /mnt/log.
|
218
|
+
* Build now cleans apt cache, image is now 1/2 the size.
|
219
|
+
|
220
|
+
|
221
|
+
h4. 0.9.3, ami-a3f91cca
|
222
|
+
|
223
|
+
23 Oct, 2007
|
224
|
+
* This is another test release, still not intended to be production-ready until it's tested more thoroughly. Look for version 1.0.
|
225
|
+
* There is now a rubygem available with Capistrano tasks.
|
226
|
+
* "admin" user added, server admin cap tasks run as this user
|
227
|
+
* MySQL settings tweaked to reflect large amount of RAM available on EC2 instances.
|
228
|
+
* "http://code.google.com/p/ec2-on-rails/issues/list?can=1&q=label%3AFixed-in-0_9_3":issues fixed in this release
|
229
|
+
|
230
|
+
h4. 0.9.2, ami-0cf61365
|
231
|
+
|
232
|
+
13 Sept, 2007
|
233
|
+
* This is another test release, still not intended to be production-ready until it's tested more thoroughly. Look for version 1.0.
|
234
|
+
* "http://code.google.com/p/ec2-on-rails/issues/list?can=1&q=label%3AFixed-in-0_9_2":issues fixed in this release
|
235
|
+
|
236
|
+
h4. 0.9.1, ami-99f712f0
|
237
|
+
|
238
|
+
11 Sept, 2007
|
239
|
+
* This is another test release, still not intended to be production-ready until it's tested more thoroughly. Look for version 1.0.
|
240
|
+
* Fixed permissions on /var/lib/dhcp3
|
241
|
+
* "http://code.google.com/p/ec2-on-rails/issues/list?can=1&q=label%3AFixed-in-0_9_1":issues fixed in this release
|
242
|
+
|
243
|
+
h4. 0.9.0, ami-bdf411d4
|
244
|
+
|
245
|
+
7 Sept 2007
|
246
|
+
* First release built with new rake build script, this is a test release, not intended to be production-ready until it's tested more thoroughly.
|
247
|
+
* Amazon EC2 API tools (java-based) no longer installed by default because they're not used on most servers. They're needed only for registering a rebundled image so there's now a script to install them: /usr/local/ec2-on-rails/install_ec2_api_tools.sh. The ruby-based EC2 image tools are still installed.
|
248
|
+
* Removed "http://packages.ubuntu.com/feisty/libs/sun-java6-jre":Java and it's massive list of dependencies because it was only needed for the EC2 API tools. This saved a huge amount of space.
|
249
|
+
* Removed ImageMagick, RMagick and hpricot due to popular demand. There will soon be cap2 tasks to customize which packages and gems are installed.
|
250
|
+
|
251
|
+
h4. 0.8.1, ami-b79a7fde
|
252
|
+
|
253
|
+
29 July 2007
|
254
|
+
* Fixed S3 backup cron job.
|
255
|
+
* Added script to restore data from S3 (/usr/local/aws/bin/restore_app_db.rb). This is useful when setting up a staging server to test your deployment, you can have it set up with a copy of your production data to test your migrations.
|
256
|
+
* Rewrite rule now allows images/css on maintenance page
|
257
|
+
* Added empty /etc/apache2/sites-available/app.custom for custom Apache configuration in a separate file (so it can be deployed by rsync more easily).
|
258
|
+
* Added ImageMagick, RMagick and hpricot due to popular demand.
|
259
|
+
|
260
|
+
h4. 0.8.0, ami-4e907527
|
261
|
+
|
262
|
+
20 June 2007
|
263
|
+
* Initial release.
|
25
264
|
|
26
265
|
|
27
266
|
h2. How to submit patches
|
@@ -30,11 +269,7 @@ Read the "8 steps for fixing other people's code":http://drnicwilliams.com/2007/
|
|
30
269
|
|
31
270
|
The trunk repository is <code>svn://rubyforge.org/var/svn/ec2onrails/trunk</code> for anonymous access.
|
32
271
|
|
272
|
+
|
33
273
|
h2. License
|
34
274
|
|
35
275
|
This code is free to use under the terms of the GPL v2.
|
36
|
-
|
37
|
-
h2. Contact
|
38
|
-
|
39
|
-
Comments are welcome. Send an email to "Paul Dowman":http://pauldowman.com/contact or to the "forum":http://groups.google.com/group/ec2-on-rails
|
40
|
-
|
@@ -1,5 +1,5 @@
|
|
1
1
|
body {
|
2
|
-
background-color:
|
2
|
+
background-color: white;
|
3
3
|
font-family: "Georgia", sans-serif;
|
4
4
|
font-size: 16px;
|
5
5
|
line-height: 1.6em;
|
@@ -17,14 +17,19 @@ h1 {
|
|
17
17
|
letter-spacing: -0.1ex;
|
18
18
|
margin: 5px;
|
19
19
|
}
|
20
|
+
h4 {
|
21
|
+
margin-bottom: 0;
|
22
|
+
}
|
23
|
+
ul {
|
24
|
+
margin-top: 0;
|
25
|
+
}
|
20
26
|
li {
|
21
27
|
padding: 0;
|
22
28
|
margin: 0;
|
23
29
|
list-style-type: square;
|
24
30
|
}
|
25
31
|
a {
|
26
|
-
color: #
|
27
|
-
background-color: #DAC;
|
32
|
+
color: #00266F;
|
28
33
|
font-weight: normal;
|
29
34
|
text-decoration: underline;
|
30
35
|
}
|
@@ -45,7 +50,7 @@ blockquote {
|
|
45
50
|
}
|
46
51
|
.coda {
|
47
52
|
text-align: right;
|
48
|
-
color: #
|
53
|
+
color: #444;
|
49
54
|
font-size: smaller;
|
50
55
|
}
|
51
56
|
|
@@ -101,8 +106,8 @@ pre, code {
|
|
101
106
|
text-align: right;
|
102
107
|
font-family: sans-serif;
|
103
108
|
font-weight: normal;
|
104
|
-
background-color: #
|
105
|
-
color: #
|
109
|
+
background-color: #7CBBFF;
|
110
|
+
color: #7CBBFF;
|
106
111
|
padding: 15px 20px 10px 20px;
|
107
112
|
margin: 0 auto;
|
108
113
|
margin-top: 15px;
|
@@ -120,7 +125,7 @@ pre, code {
|
|
120
125
|
#version p {
|
121
126
|
text-decoration: none;
|
122
127
|
color: #141331;
|
123
|
-
background-color: #
|
128
|
+
background-color: #7CBBFF;
|
124
129
|
margin: 0;
|
125
130
|
padding: 0;
|
126
131
|
}
|
@@ -128,7 +133,7 @@ pre, code {
|
|
128
133
|
#version a {
|
129
134
|
text-decoration: none;
|
130
135
|
color: #141331;
|
131
|
-
background-color: #
|
136
|
+
background-color: #7CBBFF;
|
132
137
|
}
|
133
138
|
|
134
139
|
.clickable {
|
data/website/template.rhtml
CHANGED
@@ -42,7 +42,12 @@
|
|
42
42
|
</p>
|
43
43
|
</div>
|
44
44
|
|
45
|
-
|
45
|
+
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
|
46
|
+
</script>
|
47
|
+
<script type="text/javascript">
|
48
|
+
_uacct = "UA-2759652-1";
|
49
|
+
urchinTracker();
|
50
|
+
</script>
|
46
51
|
|
47
52
|
</body>
|
48
53
|
</html>
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: ec2onrails
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.9.
|
7
|
-
date: 2007-10-
|
6
|
+
version: 0.9.4
|
7
|
+
date: 2007-10-25 00:00:00 -04:00
|
8
8
|
summary: Client-side libraries (Capistrano tasks) for managing and deploying to EC2 on Rails servers.
|
9
9
|
require_paths:
|
10
10
|
- lib
|