8 comments

[ 2.6 ms ] story [ 28.9 ms ] thread
So I'm curious, what does this really do? A wrapper container around nginx/apache?
Phusion Passenger is an application server that supports Python (WSGI) and Ruby (Rack). It does not wrap around Nginx and Apache, it integrates into Nginx and Apache. From a user's point of view, it behaves like an Apache/Nginx module, i.e.:

1. You configure it through the web server.

2. Everything you need is started along with the web server, and shut down along with the web server. You don't need to start any external components and hook them into the web server. Compared to many other alternatives, this reduces the amount of moving parts and makes administration easier.

Technically, it runs a lot of stuff outside the web server's address space for stability reasons. All your actual apps do not run inside the web server, but in their own processes. It uses a lot of Unix technologies under the hood to make things stable and robust, though it hides all that from the user. The philosophy is that software should Just Work(tm) and that everything should be as easy as possible for the user, even if that means Phusion Passenger's own authors have to write tons of code to make it so.

Here are some of the things it does for your web app:

- It manages your processes: starts them when needed, shuts them down when not needed, restarts them when any crashed. This way you don't have to setup process supervision systems like Monit, God, Daemontools, etc for your apps.

- It manages your sockets in a smart way. It buffers requests and responses in order to protect you from slow clients and other network issues.

- It provides easy security by running your apps as the right user, so that you don't have to setup su/sudo scripts.

- It manages your resources. It limits the number of processes to prevent your system from running out of memory. It can automatically adjust the number of processes based on traffic, so that an app is only active when it's actually being used.

Well, the Passenger rubygem does sort of "wrap" nginx too, since it will compile and install nginx with Passenger enabled into a gem path and provides a command to start/stop that specific app server without needing to configure nginx.
You are talking about Phusion Passenger Standalone. That is a third mode, which kind of behaves like it wraps Nginx.

First first two modes, Phusion Passenger for Apache and Phusion Passenger for Nginx, behave like Apache/Nginx modules.

(comment deleted)
Would you consider this an alternative to Google App Engine? (except that it's focused on Rails instead of Python/Java/Go)
No. Phusion Passenger is software. Google App Engine is a PaaS.
Just like the first release of Passenger, I am very impressed and can't wait to try out these new features. Kudos to Phusion for providing such great software.