Rails 2 has added the ability to automatically serve static public files – “assets” – from multiple servers, to speed up loading times. This is well worth implementing and will speed loading times considerably. And it’s very simple to do. You’ll need Rails 2.0RC1+ for this. Obviously your implementation details may differ, especially filepaths on the server.
Step 1: In rails_app/config/environments/production.rb:
config.action_controller.asset_host = "http://assets%d.my_kewl_domain.com"
Step 2: In my_kewl_domain.com.zone
www IN A 31.337.31.337 assets0 IN A 31.337.31.337 assets1 IN A 31.337.31.337 assets2 IN A 31.337.31.337 assets3 IN A 31.337.31.337
Step 3: In httpd.conf
<VirtualHost 31.337.31.337:80> ServerName assets0.my_kewl_domain.com ServerAlias assets1.my_kewl_domain.com, assets2.my_kewl_domain.com, assets3.my_kewl_domain.com DocumentRoot /www/my_kewl_domain.com/current/trunk/public VirtualHost>
Note this is a separate vHost from your main application. Note also that it is looking straight into the /public directory of your app.
svn up, cap deploy, restart %w[named httpd mongrel] and you’re done.
Including the coming Ruby 1.9 (apparently still on course for sometime this month), this is a nice free speedup for your application.
Tags: apache, deployment, mongrel, rails