Phusion white papers Phusion overview

Phusion Passenger 2.2.2 released

By Hongli Lai on April 26th, 2009

Phusion Passenger is an Apache and Nginx module for deploying Ruby on Rails web applications, and is mainly focused on ease of use and stability.

Recent changes

Phusion Passenger is under constant maintenance and development. We are pleased to announce Phusion Passenger version 2.2.2. This is a bug fix release.

The following things have changed since 2.2.1:

Nginx/Apache: Rack 1.0.0 support
We now support the Rack 1.0 specification. If you were experiencing any Rack-related problems then please upgrade to Phusion Passenger 2.2.2. Issue #279.

Please note that Rails edge have a few Rack-related bugs. We submitted some patches, which are currently being reviewed: http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2564-acrequestcontent_type-should-return-a-string

Nginx: SSL fixes
In the Nginx version, calling request.ssl? in Rails returned false even on SSL hosts. This has been fixed: issue #264.
Nginx: PATH_INFO is now set correctly
The Nginx version didn’t set PATH_INFO correctly. Rails and Merb were unaffected because they use REQUEST_URI, but Rails Metal and Sinatra, and possibly other frameworks as well, were affected. Issue #260.
Nginx: support for graceful restart
A graceful restart used to leave junk processes behind. This has been fixed: issue #255.
Nginx: ensure that the response line contains an HTTP reason phrase
If the backend application didn’t sent a reason phrase (e.g. the “OK” part of “200 OK”) then the response sent by Nginx won’t contain a reason phrase as well. This breaks Ajax requests on Internet Explorer, and probably some other browsers as well. Phusion Passenger will now add a reason phrase if the original response didn’t contain one. Issue #278.
Nginx: fixed a crash in passenger-install-nginx-module if the user specified a custom config file location
If the user specified a custom config file location by passing –conf-file to the Nginx configure script, the passenger-nginx-module will crash. This has been fixed: issue #272.
Nginx: fixed a crash that occurs if the last header is an empty string
If the last header value that Nginx internally passes to the backend application is an empty string, then this would cause a crash in the backend application. This problem has been fixed.
Nginx/Apache: proper support for fork()
In previous versions of Phusion Passenger, if one forks() a child process without calling exec() as well, then Phusion Passenger won’t finish the request cycle until the child process has exited. This has been fixed: the child process won’t block the request cycle even if it doesn’t call exec().

Note that the Spawn plugin attempted to fix this issue, but their fix doesn’t work for Rails 2.3. We’ve notified the author of the Spawn plugin about the fact that their fix is not necessary on Phusion Passenger 2.2.2 and later. Users who use the Spawn plugin are advised to upgrade to Phusion Passenger 2.2.2 and the latest version of the Spawn plugin.

Nginx/Apache: fixed some problems on OS X
  • Some compilation problems have been fixed.
  • passenger-memory-stats: fixed display of process command lines.
Nginx/Apache: The Rakefile is now parallelizable
Future versions of Rake may support invoking tasks in parallel with the -j command line argument, just like make. This can potentially speed up compilation. We’ve updated the Rakefile in preparation for this future Rake feature.
Nginx/Apache: documentation updates
A few errors in the documentation have been fixed. The Rackup specification for Ramaze has been updated.

How do I upgrade to 2.2.2?

Via a gem

Please install it with the following command:

gem install passenger

Next, run:

passenger-install-apache2-module

Or, if you’re an Nginx user:

passenger-install-nginx-module

Please don’t forget to copy & paste the Apache/Nginx config snippet that the installer gives you.

Via a native Linux package

John Leach from Brightbox has kindly provided an Ubuntu 8.04 package for Phusion Passenger. The package is available from the Brightbox repository which you can find at:

http://apt.brightbox.net

Add the following line to the Third Party Software Sources:

deb http://apt.brightbox.net hardy main

(The simplest way to do that is to create a file in /etc/apt/sources.list.d/ containing the deb instruction, and then run ‘apt-get update’).

Once you’ve done this then you can install Phusion Passenger by running:

sudo apt-get install libapache2-mod-passenger

-or-

sudo apt-get install nginx-brightbox

(Note that John is currently packaging 2.2.2, so it might take a while before this release shows up in the apt repository.)

Final

Phusion Passenger is provided to the community for free. If you like Phusion Passenger, please consider sending us a donation. Thank you!

Hongli Lai Ninh Bui
  • MySchizoBuddy

    After Hardy there was Intrepid and now there is Jaunty
    So brightbox is providing deb files for 2 generation old ubuntu distro

  • http://www.phusion.nl/ hongli

    Yeah but 8.04 is an LTS, which is especially important for servers. You usually don’t want to change your servers every 6 months.

  • MySchizoBuddy

    i can try installing it on Jaunty.

  • Pingback: Double Shot #439 « A Fresh Cup()

  • Pingback: Interesting Ruby Tidbits That Don’t Need Separate Posts #23()

  • http://www.railscluster.nl Roderick van Domburg

    Thanks, updated RailsCluster now that Rails 2-3-stable is compatible with Rack 1.0 too!

  • http://betterlogic.com/roger roger

    Would appear that the rails rack 1.0.0 bug was resolved?

  • Grateful

    I will definitely be donating soon. I’m now running Nginx + Passenger + Ruby Enterprise Edition and the performance is phenomenal–nearly twice as fast under load as my previous Nginx + Mongrel setup.

    Keep up the INCREDIBLE work!

  • Pingback: Future Adapter – Rails 2.3.1+, Passenger, and Rack 1.0()