Phusion Passenger 2.0.1 (final) released
Phusion Passenger version 2.0.1 has been officially released. Not much has changed since 2.0 RC 2: only some documentation has been updated.
See the announcements for versions 2.0 RC 1 and 2.0 RC 2 for a full list of changes compared to version 1.0.x.
How do I upgrade to 2.0.1?
Please install it with the following command:
gem install passenger
Next, run:
passenger-install-apache2-module
Please don’t forget to copy & paste the Apache config snippet that the installer gives you.
Ruby 1.8.6-p230/1.8.7 broke your app? Ruby Enterprise Edition to the rescue!
For those who don’t know, a number of security vulnerabilities in Ruby have recently been discovered. Affected Ruby versions are:
- All versions prior to 1.8.5
- All 1.8.5 versions prior to patch 231
- All 1.8.6 versions prior to patch 230
- All 1.8.7 versions prior to patch 22
- All 1.9.0 versions prior to 1.9.0-2
The CVE links on the Ruby website don’t disclose any information on the vulnerabilities, but Peter Cooper from RubyInside has posted more details.
Unfortunately, Ruby 1.8.7 is incompatible with all Rails versions prior to 2.1, according to the official Rails blog. Ruby 1.8.6-p230 isn’t much better: it breaks a number of applications and libraries. For example, Frédéric de Villamil, author of the well-known Typo blogging software, hosts a number of Typo blogs, and they have all been broken by the 1.8.6-p230 update.
Needless to say, nobody wants to choose between “leaving a security hole wide open” and “my apps don’t work”.
Ruby Enterprise Edition to the rescue
We released Ruby Enterprise Edition 1.8.6-20080621 yesterday, which is based on Ruby 1.8.6-p230. This breaks some apps.
Today we backported the security patches to Ruby 1.8.6-p111, and made a special Ruby Enterprise Edition release based on that. This release:
- doesn’t break your apps since it’s based on p111. Frédéric is happily running it on his production servers right now.
- doesn’t suffer from the security vulnerabilities.
- works with your exiting Mongrel setup. Ruby Enterprise Edition works best in combination with Phusion Passenger, but you don’t have to go for that combo.
- includes the usual Ruby Enterprise Edition features, such as reduced memory usage and improved performance.
- comes with an easy-to-install source tarball (which includes an installer).
- comes with an Ubuntu 8.04 package. For convenience, this packages bundle many common gems so that you don’t have to (re)install them manually. Multiple Rails versions are included. The full gem list is:
actionmailer (2.1.0, 2.0.2, 1.3.6, 1.2.5) actionpack (2.1.0, 2.0.2, 1.13.6, 1.12.5) actionwebservice (1.2.6, 1.1.6) activerecord (2.1.0, 2.0.2, 1.15.6, 1.14.4) activeresource (2.1.0, 2.0.2) activesupport (2.1.0, 2.0.2, 1.4.4, 1.3.1) cgi_multipart_eof_fix (2.5.0) daemons (1.0.10) eventmachine (0.12.0) fastthread (1.0.1) gem_plugin (0.2.3) haml (2.0.0) hpricot (0.6) mongrel (1.1.5) mongrel_cluster (1.0.5) mysql (2.7) passenger (1.9.1) postgres (0.7.9.2008.01.28) rack (0.3.0) rails (2.1.0, 2.0.2, 1.2.6, 1.1.6) rake (0.8.1) rspec (1.1.4) sqlite3-ruby (1.2.2) thin (0.8.1)
Download & usage
You can download it from the Ruby Enterprise Edition website.
Everything in Ruby Enterprise Edition is self-contained, and switching to Ruby Enterprise Edition is only a matter of changing the commands that you normally run. In other words, if you’re using Mongrel on your production servers, then type:
/opt/ruby-enterprise-x.x.x/bin/ruby -S mongrel_rails cluster::start
instead of:
mongrel_rails cluster::start
Ruby Enterprise Edition 1.8.6-20080621 released
A new version of Ruby Enterprise Edition has been released, with the following changes:
- MacOS X support
- A number of people have been waiting for this.
- Upgraded to RubyGems 1.2.0
- A number of VPS users have reported that RubyGems 1.1.1 uses an excessive amount of memory, which causes their servers to swap to death. RubyGems 1.2.0 should solve this problem.
- No need to reinstall already-installed gems
- The RubyGems installation provided by Ruby Enterprise Edition will now reuse the gems that you have already installed (with regular Ruby). So if you have lots of gems installed, then you don’t need to reinstall them separately for Ruby Enterprise Edition.
- Merged with Ruby 1.8.6-p230
- This solves the recent security vulnerabilities.
How do I upgrade?
Go to the download page and follow the installation instructions. (*note*: RubyForge is still updating their mirrors, so the download might not be immediately available. In that case, please wait a few hours before trying again.)
Solaris support for Phusion Passenger
Harris Jacob has started working on Solaris support for Phusion Passenger, and he’s looking for testers. Please lend him a hand if you have a Solaris machine and would like to run Phusion Passenger in the future.
Phusion Passenger 2.0 RC 2 released
A number of issues in 2.0 RC 1 have been discovered. So here’s Phusion Passenger 2.0 release candidate 2.
If no major issues are found, this will become 2.0 final.
Changes
- Improved operating systems compatibility
-
2.0 RC 1 triggered some kind of GCC compiler bug. MacOS X and some SuSE versions are affected. This has been fixed (issue #77).
Furthermore, a compilation problem on Fedora 9 has been fixed (issue #86).
- Improved Rack compatibility
- A number of Rack compatibility problems have been fixed. Thanks to Magnus Holm for contributing these fixes.
- Other minor fixes
- See issues #73 and #49
How do I upgrade to 2.0 RC 2?
Via a gem
Please download the 2.0 RC 2 gem, then install it with the command:
gem install passenger-1.9.1.gem
Next, run:
passenger-install-apache2-module
Please don’t forget to copy & paste the Apache config snippet that the installer gives you.
Via a native Linux package
Neil Wilson 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 anstruction, and then run ‘apt-get update‘).
Once you’ve done this then you can install Phusion Passenger by running:
apt-get install libapache2-mod-passenger
Just finished our talk at Ruby en Rails
Man, hardest talk ever, glad it went okay, now I can head off to bed… soon ![]()
For those of you guys that didn’t have the chance to attend Ruby en Rails 2008, we’ve taken the liberty of uploading our presentation files.
PDF Version
SWF Version (with toned down animations)
Getting back to Charles Nutter’s talk now
Phusion Passenger™ 2.0 RC 1 and Ruby Enterprise Edition released
It’s a little bit late (this should have been done during RailsConf, sorry), but it’s finally here. We’re pleased to announce Phusion Passenger 2.0, release candidate 1.
If no major issues are found, this will become version 2.0.1. We’re also pleased to announce the long-awaited Ruby Enterprise Edition.
RailsConf 2008 presentation
Our RailsConf 2008 presentation about Phusion Passenger and Ruby Enterprise Edition went extremely well. The sheets are available in the following formats:
- PDF (15 MB)
- Flash, with animations (32 MB)
The presentation includes a screencast (23 MB) created by Soocial.
Some people have been distributing our old, outdated sheets, which contain lots and lots of bullet points and almost no graphics. Please download the sheets on this page instead: these are the sheets that we used during the presentation.
Introducing Rack support
2 months after the release of Phusion Passenger 1.0, we present you with Rack support. It is now possible to host arbitrary Ruby web applications (e.g. Merb and Camping) on Phusion Passenger! We provide this feature with the same ease of use that many people have come to love.
The following screencast, created by Ryan Bates of RailsCasts fame, demonstrates the ease of deploying a Rack application on Phusion Passenger:
But that’s not all. We’ve done our homework. Our Users guide provides a comprehensive list of Rackup specifications for all Ruby web frameworks that we could find, so that you don’t have to hunt this information down yourself!
We received some Rack-related contributions shortly after Rack support had been pushed to the public git repository. We’d like to thank _why and remi for contributing documentation and full Rackup DSL support.
Introduction Python WSGI support
Not only do we support Rack, we now also support Python WSGI! In theory, Phusion Passenger can now run Django.
Don’t get us wrong. Phusion Passenger’s main focus is still on Ruby and Ruby on Rails. WSGI support is meant to be a show case of Phusion Passenger’s flexible architecture.
Optimizations
- Much better stability
- This new release is much more stable than the 1.0.x series. Many stability issues have been fixed. In fact, Dreamhost and iLike are using this version in production environments. So if you were experiencing stability problems, please upgrade to this version, as it may solve your problem.
- Much faster graceful restart
- Some hosts gracefully restart Apache often, so to them, high graceful restart speed is essential. Phusion Passenger 2.0 RC 1 is much, much faster at graceful restarts.
- Less memory usage: reduced VM size
-
Process monitoring tools tend to use the “VM size” of a process as an indication of the actual memory usage. This is not correct, because the VM size only indicates the amount of memory that a process can access, not the amount of memory that it actually uses.
Nevertheless, having a large VM size poses problems. Some servers, virtual private servers in particular, have artificial VM size limits in order to prevent processes from using too much memory. Phusion Passenger 1.0 makes Apache’s VM size very large (more than 100 MB), even though the actual memory usage is only several MB.
In Phusion Passenger 2.0, the VM size has been reduced by ten fold, as shown by the following diagram:
- Fair load balancing (as opposed to round-robin load balancing)
-
One of the traditional problems of Mongrel Cluster behind Nginx is, in Ezra‘s words:
“My only complaint was that the proxy modue was round robin only. This means that if you had 3 mongrels and one of them performed and action that took say 20 seconds, for that 20 seconds every 3rd request would get stuck in line behind the mongrel doing the long blocking request. This is because nginx was merrily doing round robin and didn’t care if a mongrel was busy or not.”
Phusion Passenger now supports fair load balancing. It will forward a request to the Rails instance with the least number of requests in its queue. Fair load balancing is turned on by default, without the need to configure anything.
See also page 53 of the presentation sheets.
- Upload buffering
-
In Phusion Passenger 1.0, a (long) file upload will block a Rails application instance. Usually this is not a big problem, because Phusion Passenger will spawn more Rails instances if existing ones are blocked. But it becomes a problem if your website handles many simultaneous file uploads (read: more than 10 concurrent file uploads at any time).
Phusion Passenger 2.0 supports upload buffering. File uploads that are sufficiently large, are stored into a temporary file. Only when the file upload is done, will it be forwarded to the Rails application. This means that your Rails applications will not be blocked while a large file upload is in progress.
- Default timeouts changed, in favor of virtual private servers
-
The default timeout values in Phusion Passenger 1.0 were optimized for shared hosts, which host many applications and need to free resources quickly. But most of our users seem to be using virtual private servers. These servers usually don’t get a lot of traffic, so the default timeouts are easily reached. So we’ve changed the default timeout values in favor of virtual private servers. Shared hosts and people running Phusion Passenger on dedicated servers should adjust the timeouts.
What Default in Phusion Passenger 1.0 Default in Phusion Passenger 2.0 RailsMaxPoolSize 20 6 RailsPoolIdleTime 120 300 ApplicationSpawner server idle time 120 600
Other improvements
- Ruby on Rails 1.0 compatibility
- Phusion Passenger is now compatible with Rails 1.0 applications as well.
- Improved application compatibility: conservative spawning
-
By default, Phusion Passenger preloads the Ruby on Rails framework and application code. This allows Phusion Passenger to reduce the startup time of Ruby on Rails applications and to save memory. Using this technique, startup time can be decreased by as much as 90%!
Unfortunately, some applications and/or plugins don’t expect to be preloaded, and even assumes that no code is being preloaded. soap4r is one such plugin. Until recently, these applications/plugins didn’t work with Phusion Passenger.
Phusion Passenger 2.0 implements so-called conservative spawning. In conservative spawning mode, Phusion Passenger will not preload any code. In other words, it will emulate the way Mongrel loads Rails applications. Conservative spawning allows Phusion Passenger to be 100% compatible with all Rails applications.
Conservative spawning is less efficient than the default spawning strategy, though no less efficient than Mongrel Cluster. You should only use conservative spawning if you’re experiencing compatibility problems.
- ‘RailsEnv’ is now per-virtual host
- The RailsEnv configuration option used to be a global option. It’s now a per-virtual host option, so you can define a different environment for every Rails application.
- New resource control option: ‘PassengerMaxInstancesPerApp’
-
The PassengerMaxInstancesPerApp option allows you to define the maximum number of pool slots that a single application may use. This will prevent a single application from getting out of control and taking over the entire server.
Many thanks to Jochen Tuchbreiter for contributing this feature.
- Support for worker MPM
- The Apache worker MPM is now supported.
- Analysis and system maintenance tools
- Phusion Passenger 2.0 includes new analysis and system maintenance tools. If you’re experiencing stability problems with Phusion Passenger or your Rails application, then please try these tools.
How do I upgrade to 2.0 RC 1?
Via a gem
Please download the 2.0 RC 1 gem, then install it with the command:
gem install passenger-1.9.0.gem
Next, run:
passenger-install-apache2-module
Please don’t forget to copy & paste the Apache config snippet that the installer gives you.
Via a native Linux package
Neil Wilson 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 anstruction, and then run ‘apt-get update‘).
Once you’ve done this then you can install Phusion Passenger by running:
apt-get install libapache2-mod-passenger
Finally, run the following command. This will tell you how to configure Apache.
passenger-install-apache2-module
Ruby Enterprise Edition
Ruby Enterprise Edition has been officially launched. Check out http://www.rubyenterpriseedition.com/
So far, Ruby Enterprise Edition has mostly been tested on Linux (both 32-bit and 64-bit). MacOS X is not yet supported: support for it is planned for a future version.
That’s all folks
A lot of work has been put into this release. Enjoy.
If you like our work, please consider getting an “enterprise license”.
3/5th of Phusion at Apple
Today, we were invited by Laurent Sansonetti of Apple to visit them over there. Needless to say, IT, WAS, AWESOME! Laurent is an awesome guy, and we had a lot of fun hanging out with him and Thomas, so if you’re reading this, we’re looking forward to meeting up with you guys soon again!
Pictures probably say more than words, so see below.
More to come in the following days, as we’re currently heading off to bed.
Cheers,
Hongli Lai
Tinco Andringa
Ninh Bui
P.S. Yes, I’m aware of the fact that the thumbs up thing is going to become my trademark
Just be happy that you haven’t seen a thumbs down yet
RailsConf 2008 was great
Hi guys.
RailsConf 2008 was great, and our talk on Phusion Passenger and Ruby Enterprise Edition went really well. Fabio Akita has some pictures of our talk. For other pictures, see Fabio’s .mac gallery!

We promised to release Passenger 2.0 and Ruby Enterprise Edition on the same day. Unfortunately we’ve been too optimistic about Internet access. We’re currently at the airport and we have limited internet access until we are back in the Netherlands (which should be in about 4 days or so), but in the meantime, the Passenger version with Rack and WSGI support has already been pushed to github, so feel free to tinker around with it. We’ve also put the latest Users Guide (with Rack support) online.
Thanks for the support Chad!
We’re trying our best to find a way to push out Ruby Enterprise Edition as well, and ask the hardcopy guys to not release it prior to the moment that we’re able to push it (which should be in about 4 days). This launch will also be accompanied by a site etc… Feel free to blog about it though, and the reason why we’re asking this is because we want to keep the support at Phusion related places. This will prevent any ‘noise’ in communication.
Thanks for the support mateys!
Cheers,
Hongli Lai
Tinco Andringa
Ninh Bui






Phusion. All rights reserved.