We're happy to announce version 5.0.1 of the Phusion Passenger application server for Ruby, Python and Node.js. The 5.x series is also unofficially known under the codename "Raptor", and introduces many major improvements such as:
- Much better performance
- A new HTTP JSON API for better insights into server and application behavior
- Better logging
- Better WebSocket support
You can learn all about the new changes in Passenger 5 in the following blog posts:
- Part 1: performance and HTTP JSON API
- Part 2: better logging, better restarting, better WebSockets and more
Version 5.0.1 is officially ready for production.
Changes since release candidate 2
The changes since release candidate 2 are as follows:
- The
passenger-config restart-app
command is now more user friendly. When run in a terminal, it will show an interactive menu, allowing you to select the app to restart. Closes GH-1387. - Fixed a crash bug in the handling of sticky session cookies.
- Log failed program in error message, not its command line (contributed by: paisleyrob). Closes GH-1397.
- [Nginx] Fixes cases in which Passenger overrides the Nginx handler function even when it shouldn't, for example when Passenger is disabled. Closes GH-1393.
- [Enterprise] The
sticky_sessions
andenvvars
options in Passengerfile.json is now also supported in mass deployment mode.
Passenger Enterprise updated
Phusion Passenger also has an Enterprise version which comes with a wide array of additional features such as zero-downtime restarts, multithreading, better debugging support, etc.
Passenger Enterprise has been updated as well. All the changes you learned about in this article, are also available in the Enterprise version.
By buying Phusion Passenger Enterprise you will directly sponsor the development of the open source version.
Learn more about Passenger Enterprise »
Installing or upgrading to 5.0.1
OS X |
Debian |
Ubuntu |
Heroku |
Docker |
Ruby gem |
Tarball |
Upgrade notes
Passenger 5 is mostly compatible with Passenger 4, but there are a few minor things which have changed in an incompatible way. Please take heed of these during upgrading.
Full web server restart required
After upgrading to Passenger 5, you must fully restart the web server in order to finish the upgrade.
On Apache, you must apachectl stop
and apachectl start
. An apachectl reload
or even apachectl restart
is not enough.
If you upgraded using APT, you must invoke the web server restart manually. APT does not do this for you!
If you do not restart the web server, then you will end up in a broken state where half of Passenger 4 is running, and half of Passenger 5.
Minimum Rails version is now 2.3
We've dropped support for Rails version older than 2.3. If you still have Rails 1.x or 2.0-2.2 apps, please use Passenger 4.
To make Rails 2.3 apps work with Passenger 5, the app must have a config.ru
file. Here's how a config.ru looks like for Rails 2.3 apps:
# Require your environment file to bootstrap Rails
require ::File.dirname(__FILE__) + '/config/environment'
# Serve static assets from RAILS_ROOT/public directory
# use Rails::Rack::Static
# Dispatch the request
run ActionController::Dispatcher.new
Restart mechanism changed
Using restart.txt
to restart the app is still supported, but with the new default settings, Passenger won't notice any changes until after max 10 seconds. We recommend you to use the passenger-config restart-app
command. But if you want to revert to the old restart.txt behavior (where any change is noticed immediately on the next request), set PassengerStatThrottleRate
/passenger_stat_throttle_rate
to 0.
Feature and configuration changes
- If you use out-of-band garbage collection, beware that the
X-Passenger-Request-OOB-Work
header has now been renamed to!~Request-OOB-Work
. - When using Rack's full socket hijacking, you must now output an HTTP status line.
- [Nginx] The
passenger_set_cgi_param
option has been removed and replaced bypassenger_set_header
andpassenger_env_var
. - [Nginx]
passenger_show_version_in_header
is now only valid in thehttp
context. - [Nginx] The
passenger_enabled on
directive is now inherited across location blocks. This wasn't the case previously, so you had to re-specify it inside location blocks. Now the opposite holds: if you specifiedpassenger_enabled on
in the server block, then you have to explicitly specifypassenger_enabled off
in all location blocks where you disabled Passenger. - [Apache] The
PassengerStatThrottleRate
option is now global. - The minimum required Nginx version is now 1.6.0.
- The
passenger_temp_dir
option (Nginx) and thePassengerTempDir
option (Apache) have been replaced by two config options. On Nginx they arepassenger_instance_registry_dir
andpassenger_data_buffer_dir
. On Apache they arePassengerInstanceRegistryDir
andPassengerDataBufferDir
. On Apache,PassengerUploadBufferDir
has been replaced byPassengerDataBufferDir
. - [Standalone] The Phusion Passenger Standalone config template has changed. Users are encouraged to update it.
- [Standalone]
passenger-standalone.json
has been renamed toPassengerfile.json
. - [Standalone]
passenger-standalone.json
/Passengerfile.json
no longer overrides command line options. Instead, command line options now have the highest priority.
Passenger 4 APT repository
Our main APT repository only contains Passenger 5 now. Those who wish to remain on Passenger 4 for the time being should use our Passenger 4 APT repository.