Phusion white papers Phusion overview

Phusion Passenger 4.0.16 released

By Hongli Lai on September 6th, 2013


Phusion Passenger is a fast and robust web server and application server for Ruby, Python and Node.js. It works by integrating into Apache and Nginx and turning them into a fully-featured application server. It has high-profile users such as New York Times, AirBnB, Symantec, Pixar, etc, and comes with many features that make your life easier and your application perform better.

Phusion Passenger is under constant maintenance and development. Version 4.0.16 is a bugfix release.

Phusion Passenger also has an Enterprise version which comes with a wide array of additional features. By buying Phusion Passenger Enterprise you will directly sponsor the development of the open source version.

Recent changes

Version 4.0.15 was a hotfix release for an Enterprise customer. The changes in 4.0.15 and 4.0.16 combined are as follows:

Much improved out-of-band work
The number of processes which may perform out-of-band work concurrently has been limited to 1. Furthermore, processes which are performing out-of-band work are now included in the max pool size constraint calculation. However, this means that in order to use out-of-band work, you need to have at least 2 application processes running. Out-of-band work will never be triggered if you just have 1 process. Partially fixes issue #892.
New stability feature: request queue limiting
Phusion Passenger now displays an error message to clients if too many requests are queued up, instead of letting them wait. This much improves quality of service. By default, "too many" is 100. You may customize this with `PassengerMaxRequestQueueSize` (Apache) or `passenger_max_request_queue_size` (Nginx).
Configurable startup time limiting
A new configuration option, `PassengerStartTimeout` (Apache) / `passenger_start_timeout` (Nginx), has been added. This option allows you to specify a timeout for application startup. The startup timeout has exited since version 4.0.0, but before version 4.0.15 it was hardcoded at a value of 90 seconds. Now it is customizable. Fixes issue #936.
Reduced memory usage in Phusion Passenger Standalone
When `passenger start` is run with `–daemonize`, the frontend exits after starting the Nginx core. This saves ~20 MB of memory per `passenger start` instance.
It is now possible to preprocess events before they are sent to Union Station
This is useful for removing confidential data as demonstrated in this example `config/initializers/passenger.rb` file:

if defined?(PhusionPassenger)
    event_preprocessor = lambda do |e|
        e.payload[:sql].gsub!("secret","PASSWORD") if e.payload[:sql]
    end
    PhusionPassenger.install_framework_extensions!(:event_preprocessor => event_preprocessor)
end
Misc other changes
[Enterprise] The `PassengerMaxRequestTime`/`passenger_max_request_time` feature is now available for Python and Node.js as well, and is no longer limited to just Ruby. Fixes issue #938.
[Nginx] Introduced a configuration option `passenger_intercept_errors`, which decides if Nginx will intercept responses with HTTP status codes of 400 and higher. Its effect is similar to `proxy_intercept_errors`.
[Standalone] Phusion Passenger Standalone is now also packaged in the Debian packages.
[Standalone] Fix a problem with the `passenger stop` command on Ruby 1.8.7. The ‘thread’ library was not properly required, causing a crash.
[Standalone] There is now builtin support for SSL.
Fix a crash when multiple `passenger_pass_header` directives are set. Fixes issue #934.
Permissions on the server instance directory are now explicitly set with chmod, so that permissions are correct on systems with a non-default umask. Fixes issue #928.
Allow Phusion Passenger to work properly on systems where the user’s GID does not have a proper entry in /etc/group, such as Heroku.
Fix permission problems when running `passenger start` with `–user`.
`passenger-config –detect-apache2` now correctly detects the eror log filename on Amazon Linux. Fixes issue #933.
An environment variable `PASSENGER_THREAD_LOCAL_STORAGE` has been added to the build system for forcefully disabling the use of thread-local storage within the Phusion Passenger codebase. This flag useful on systems that have broken support for thread-local storage, despite passing our build system’s check for proper thread-local storage support. At the time of writing, one user has reported that Ubuntu 12.04 32-bit has broken thread-local storage report although neither the reporter nor us were able to reproduce the problem on any other systems running Ubuntu 12.04 32-bit. Note that this flag has no effect on non-Phusion Passenger code. Fixes issue #937.

Installing 4.0.16

Quick install/upgrade

Phusion Passenger Enterprise users can download the Enterprise version of 4.0.16 from the Customer Area.

Open source users can install the open source version of 4.0.16 with the following commands. Note that these instructions are very basic and may not cover steps that may be relevant to your specific system, such as setting up the right file permission. Please refer to the in-depth instructions if you have trouble installing.

gem install passenger
passenger-install-apache2-module
passenger-install-nginx-module

You can also download the tarball at the Release Archive page. We strongly encourage you to cryptographically verify files after downloading them.

In-depth instructions

In-depth installation and upgrade instructions can be found in the Installation section of the documentation. The documentation covers.

  • Detailed tarball installation instructions.
  • Detailed upgrade instructions.
  • Installation troubleshooting.
  • Installation through APT and YUM.
  • Installation through OS X Homebrew.

You can view the documentation online here:

Final

Phusion Passenger’s core is open source. Please fork or watch us on Github. :)

If you would like to stay up to date with Phusion news, please fill in your name and email address below and sign up for our newsletter. We won’t spam you, we promise.