Your SlideShare is downloading. ×
Deploying Rails Applications
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Deploying Rails Applications

19,874
views

Published on

Covers the different options for scaling Rails applications, Nginx, a light weight HTTP server / reverse proxy, using Cron for periodic scheduled task, and Monit for monitoring rails applications.

Covers the different options for scaling Rails applications, Nginx, a light weight HTTP server / reverse proxy, using Cron for periodic scheduled task, and Monit for monitoring rails applications.

Published in: Technology

0 Comments
35 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
19,874
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
236
Comments
0
Likes
35
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Transcript

    • 1. Deploying Rails Applications Vivek Prahlad
    • 2. Agenda
        • Typical Rails deployment scenarios
        • Mongrel
        • Nginx vs. Apache vs. Lighttpd
        • Shared vs. Virtual vs. Dedicated hosting
        • Monitoring Rails Applications
    • 3. Typical Rails Deployment Setup Web Server (Static Content)‏ Rails App (Mongrel)‏ Database (MySQL / PostgreSQL)‏
    • 4. Lots of Static content? Web Server (Static Content)‏ Rails App (Mongrel)‏ Database )‏ (MySQL / PostgreSQL)‏ Load Balancer Cluster
    • 5. Heavy database load? Web Server (Static Content)‏ Rails App (Mongrel)‏ Database (MySQL / PostgreSQL)‏ Cluster
    • 6. Very dynamic application? Web Server (Static Content)‏ Rails App (Mongrel)‏ Database (MySQL / PostgreSQL)‏ Cluster
    • 7. Installing the stack using Deprec
        • cd /path/to/railsapp
        • deprec --apply-to . --name projectname --domain www.projectname.com
        • # edit config/deploy.rb to add svn details
        • cap install_rails_stack
        • cap setup
        • cap deploy_with_migrations
        • cap restart_apache
    • 8. Mongrel
    • 9. Mongrel
        • Pure Ruby web server for Ruby applications
        • Supports Rails, Camping, Og + Nitro
        • Need a cluster due to Rails threadsafety issue
        • Significant footprint increase with Rails 1.2
          • Approximately 60MB / Mongrel / Mephisto instance
        • Dash B logging for detecting memory leaks
    • 10.  
    • 11. Nginx
        • Web server from Igor Sysoev: best used as a reverse proxy
        • Rapidly becoming preferred choice of Rails community
        • 10MB footprint with 10,000 concurrent connections
        • Load balancing
        • Weighted load balancing
        • Relatively straightforward configuration
    • 12. Nginx vs. Apache
        • Apache: Relatively Larger footprint
        • Thread per request
        • Nginx: Low footprint
        • Non blocking IO
    • 13. Issues with Lighttpd
        • Stability
        • Memory leaks
        • Non-trivial URL rewriting
    • 14. Nginx: configuring mongrel
        • upstream mongrel {
        • server 127.0.0.1:10000;
        • server 127.0.0.1:10001;
        • }
        • proxy_pass http://mongrel;
    • 15. Nginx: load balancing
        • upstream backend {
        • server backend1.example.com weight=5;
        • server backend2.example.com:8080;
        • server unix:/tmp/backend3;
        • }
    • 16. Nginx: Caveats
        • Primary documentation in Russian
          • (Documentation is rapidly improving, though)‏
        • No X-sendfile support (useful for serving large files)‏
        • Virtual host support poor
    • 17. Rails Hosting
        • Rails 1.2+ unsuitable for shared hosting
        • Most shared hosts have published / unpublished memory caps
          • Textdrive: 47 MB per process
        • Dedicated hosting expensive
          • Starts at ~ $70 per month (e.g. ServerPronto)‏
    • 18. Virtual Private Server (VPS) Hosting
        • Fits in between Shared and Dedicated hosting
        • Nice performance / price ratio (starts @ $20 / month)‏
        • Can potentially exploit superior hardware
        • Alternatives:
          • Xen
          • Virtuzzo
        • Baked in kernel level virtualization support is coming
        • Caveat: Need to manage your own setup
    • 19. Advantages of VPS hosting
        • Entire CPU available when other users are idle.
        • Disk I/O usually faster than dedicated box (due to RAID etc.)‏
        • Can take advantage of SANs if required.
        • Hosting company takes care of the VPS server
        • Fairly easy to scale VPS setup (just add more VMs)‏
    • 20. Monitoring Rails applications
        • Monit (http://www.tideslash.com/monit)‏
        • Process monitoring tool
        • Can monitor:
          • HTTP server
          • Processes
          • Databases (MySQL and PostgreSQL)‏
    • 21. Cron Jobs
        • Clear stale sessions
        • Database maintenance
        • Clear logs
        • Best practice: get Cron to call out to a script
        • Don't hardcode commands in the crontab
        • Makes it easy to test
    • 22. Putting it all together
        • Can use Monit to create 'self healing' setup
        • PostgresQL
        • Nginx
        • Mongrel
        • Cron
    • 23.
        • http://nginx.net/
        • http://railsexpress.de/blog (performance tuning)‏
        • http://hostingfu.com (blog on hosting)‏
        • http://www.slideshare.net/Georgio_1999/how-to-scale-your-web-app/ (scaling Rails)‏
      Additional Information
    • 24. Thank You http://blog.vivekprahlad.com/