This September I deployed two Rails applications with different stacks, and I wanted to share the details.
A 256MB slice runs this low traffic application OK. For two or more applications, more memory is preferred. I developed this application with Git version control, the repository was hosted on github.
- Ubuntu Hardy (8.04) Amazon EC2 image (customized an existing AMI)
- Asset storage on Amazon S3 via the attachment_fu plugin
- nginx web server (static assets and load balancing)
- PostgreSQL 8.3 on separate instance
- cluster of mongrel application servers
- Sphinx 0.9.8 search engine
- server monitoring with monit
- server backups via s3sync
The staging server for the development initially ran a CentOS Linux image, before I realized how painful it was to have separate production and staging environments.
The Amazon EC2 "Small Instance" has 1.8GB RAM as of this writing. Our application puts a very small load on the server, even with many mongrels running. This application was developed with Subversion version control, the repository was hosted internally.
Both applications send email. For my personal project I configured postfix. Capistrano was used for deployment in both applications.