Reading about Puppet often Passenger, Unicorn, and Rack are mentioned, but I can't figure out what the purpose of these are. The website for Passenger says:

Phusion Passenger is a web server and application server for Ruby (Rack) and Python (WSGI) apps. It allows you to run your web apps with the least amount of hassle, by taking care of pretty much all of the heavy lifting for you when it comes to managing your apps' processes and resources.

But why would I want to introduce a new piece of software, when Ruby have its own web server?

Can anyone give an example what problem these solves?

closed as off-topic by Magellan, Tim Brigham, voretaq7 Oct 9 '13 at 19:21

  • This question does not appear to be about server, networking, or related infrastructure administration within the scope defined in the help center.
If this question can be reworded to fit the rules in the help center, please edit the question.

  • This question is really a research problem -- the answer is "You use Passenger, Unicorn, and Rack in situations where they make sense - solving a particular problem or filling a specific need in your environment". The documentation for these tools indicate what they do very well. – voretaq7 Oct 9 '13 at 19:21

In the case of puppet, the reason is simply scalability.

The embedded webserver used by the puppetmaster service has known limitations, therefore, when you need to provide service for more than ~10 nodes, it is very likely that you need to use something else.

The usual approach is to deactivate the puppetmaster service and create a virtual host in your web server listening on the 8140 TCP port, and use passenger, which can handle the ruby code directly instead.

You can find an example configuration in the link above.

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