I’m a sysadmin that comes from a Windows background, although I’m fairly
comfortable with Linux, and LAMP stuff. Now I need to deploy a simple
rails application into a dev/test env and also into production. It’s a
very low load site, and it only needs to be available during office hours.
I’m imagining initially that it could run on a single machine, but
splitting it out isn’t a big deal later I guess. I should point out that
I’m ok at Ruby beyond Chef, but I’m not a web developer - I don’t know much
about Rails yet, and I’ve never written an Rails app before, so I’m new to
the ecosystem. The app in question was written by a friend, and is for a
charity, and I’m helping them out. I’m not in any rush, but I’d like to
know the best approach.
What I’d like to know is what the current recommended approach is to
building a server to run and deploy Rails in production, on Linux.
Specifically:
-
I have seen the application and application_rails cookbooks used - this
seems to take a capistrano-like approach and implement it in Chef. I’m ok
with this, but I think that I might prefer to deploy it with capistrano or
mina instead. Is the application cookbook approach recommended? -
An alternative approach that I’m interested in is using Omnibus to build
a package that contains everything I need for the application to run, and
the application itself. If this were the case would I deploy the app using
Chef’s file or package resource, as cap or mina wouldn’t be used? I think
this might solve the following question… -
What’s the recommended way to get Ruby on the system? I am not very
keen on the idea of using rvm on servers, but system packages tend to lag
too. What is recommended? -
What’s the recommended way to actually serve the app? I’ve read about
Apache and Passenger - this seems like a straightforward approach, and
simpler than unicorn or puma and so on. Are there good community cookbooks
that can help here? -
What about database stuff? I see there’s a database cookbook with some
powerful tools, and a mysql cookbook, but should I try to seed the database
with Chef or do that manually?
I think that’s all my questions for now… thanks in advance for your
guidance.
-aob