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:
passenger-config restart-appcommand 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
envvarsoptions 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
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
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
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-Workheader has now been renamed to
- When using Rack's full socket hijacking, you must now output an HTTP status line.
- [Nginx] The
passenger_set_cgi_paramoption has been removed and replaced by
passenger_show_version_in_headeris now only valid in the
- [Nginx] The
passenger_enabled ondirective 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 specified
passenger_enabled onin the server block, then you have to explicitly specify
passenger_enabled offin all location blocks where you disabled Passenger.
- [Apache] The
PassengerStatThrottleRateoption is now global.
- The minimum required Nginx version is now 1.6.0.
passenger_temp_diroption (Nginx) and the
PassengerTempDiroption (Apache) have been replaced by two config options. On Nginx they are
passenger_data_buffer_dir. On Apache they are
PassengerDataBufferDir. On Apache,
PassengerUploadBufferDirhas been replaced by
- [Standalone] The Phusion Passenger Standalone config template has changed. Users are encouraged to update it.
passenger-standalone.jsonhas been renamed to
Passengerfile.jsonno 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.
Phusion Passenger's core is open source. Please fork or watch us on Github. :)
Union Station is Phusion's brand new take on Passenger application monitoring and analytics. Union Station aims to help you easily find performance bottlenecks and errors in your application and to help you fix them. Sign up for a free 1 month trial today!