Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am trying to figure out the optimal server stack for running Rails.

As of now, nginx + unicorn seems to be the best approach. However, some folks have suggested running the REE interpreter instead of Ruby plain.

Would nginx + unicorn + REE be the most powerful combination, or will plain interpreter suffice?

share|improve this question

It is difficult to answer your question without more data.

I will say, the easiest way to run rails apps is with Passenger. Unless you are running a really popular rails application that is having scalability problems the easiest path is best path.

Passenger is drop dead easy to administer.

The optimal server stack is the stack that does what you want and requires the least thinking and hand holding.

If you really do have issues of scale, then you need to hire an admin that knows what he or she is doing.

share|improve this answer
Passenger is often laughed at in #nginx. It seems to pollute the server block space and generally be a horrible Nginx module. So I'm not so sure it's the best choice when using Nginx. Haven't tried it out, though. – Martin Fjordvald Jun 6 '10 at 22:25
Yeah, I would use it with Apache. With the caveats I gave earlier. – Nathan Powell Jun 6 '10 at 23:37
Martin: that's the first time I hear it. True, Phusion Passenger isn't your traditional Nginx module, but our design goal of being completely user friendly flies in the face of how Nginx works. You got more info about this? – Hongli Lai Oct 1 '10 at 12:11
Laughed at was a bad word choice, more like frowned upon. It's invasive in the way it injects itself into the configuration file. You specify passenger_enabled on for the server block disregarding the fact that nginx has multiple scopes such as location. It would be nice if Passenger would not basically rape the overall configuration style of Nginx and use passenger_pass like fastcgi uses fastcgi_pass, like HTTP uses proxy_pass, uwsgi uses uwsgi_pass etc. I'm sure you get the point by now. – Martin Fjordvald Oct 1 '10 at 12:24
I talked with Martin F on IRC about his concerns on Phusion Passenger. Turns out the concerns are misunderstandings. For example the claim that Phusion Passenger invasively injects itself into the config file is false; we hook into the configuration system just like any other module does (so one can customize passenger_enabled on a per-location basis), which I explained on IRC. If anybody else has concerns about how Phusion Passenger integrates into Nginx, please contact the Phusion Passenger support forum for more information. – Hongli Lai Oct 1 '10 at 12:38

Yes, you can easily use REE. It offers better garbage collection and I've successfully used it in production under nginx + unicorn + REE. Just be sure to reinstall the unicorn executeables so that they use REE and not the default ruby library.

The standard MRI interpreter would also suffice.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.