Version 5.1.12 of the Passenger application server for Ruby, Node.js, Meteor and Python has been released. Besides keeping up to date with Ubuntu, Nginx and other software updates, we've fixed a number of minor issues, as well as finished implementing a new (Enterprise) feature.
The 5.1.x series of Passenger brings a plethora of improvements in uptime maximization, security and efficiency. Please be aware that you can enjoy enterprise features and sponsor the open source development directly by buying Phusion Passenger Enterprise.
Ubuntu 17.10 "Artful" packages
We've created Passenger APT packages for the recently released Ubuntu 17.10!
Passenger + Apache APT upgrade fix
The Passenger + Apache integration mode consists of two building blocks:
- The Passenger core, which contains most of the functionality
- A Passenger module (
mod_passenger.so) that is loaded by Apache and takes care of integrating with the Passenger core.
For the APT packages that we build for Debian and Ubuntu, the install script for the Passenger + Apache integration mode would previously execute an Apache
force-reload after installation. Although this command triggers a restart of the Passenger module (which then loads the updated Passenger core), the updated version of the module itself is not loaded by Apache, leading to a "half-upgraded" situation (GH-2000).
Such a state is normally not a problem because we rarely change the internal interfacing of the module and the core, so older module versions are usually compatible. We changed the script to do a full Apache
start when Passenger is upgraded to prevent half-upgraded situations altogether.
New feature: max request queue time
We've added a new feature to Passenger Enterprise: max_request_queue_time. It fits in with the other features that Passenger Enterprise provides to have more in-depth resource control, such as max_request_time.
Basically, the new feature (GH-1688) allows discarding requests that were queued up for too long, which may occur if the server is temporarily overwhelmed with requests. Skipping the handling of requests that were probably already abandoned by users means the server can recover faster from the overload. When using this feature, it is also a good idea to tune the max_request_queue_size from its default (100 requests) so that the queue is large enough to accommodate requests that have not timed out yet during a traffic spike.
We'll go into a little more detail regarding various ways to put the feature to good work in an upcoming blog post!
Various improvements & fixes
- [Nginx] The preferred Nginx version is now 1.12.2
- [Nginx] The preferred PCRE version is now 8.41 (previously 8.39).
- [Standalone] Adds support for using
- [Enterprise] Uses libuv to detect total system RAM, allows for compilation on pre-10.11 macOS.
- Fixes a case in which -- when Passenger is configured with user switching turned off -- it is unable to open the web server log file and aborts during startup. This regression was introduced in 5.1.8. Closes GH-1990.
- Upgraded dependencies that are used in precompiled binaries (used for e.g. gem installs):
OpenSSL 1.0.2l → 1.0.2m PCRE 8.40 → 8.41 libcurl 7.54.1 → 7.56.1 Ruby 2.1.9 → 2.1.10; 2.2.7 → 2.2.8; 2.3.4 → 2.3.5; 2.4.1 → 2.4.2
Please see the installation guide.
Upgrading to 5.1.12
We strongly advise staying up to date with the latest version.
See also the upgrade notes below!
If you are upgrading from 4.x, please read the 5.0 upgrade notes to learn about potential upgrade caveats.
Download issue with old
Old versions of
gem (below 2.2.0, released in 2013) may fail to download the Passenger Enterprise gem from our rubygem hosting software (Gem in a box).
ERROR: Could not find a valid gem 'passenger-enterprise-server' (= 5.1.4), here is why: Unable to download data from https://..@www.phusionpassenger.com/enterprise_gems/ - bad response Unauthorized 401
If this happens, please upgrade to a newer version of gem:
gem install rubygems-update; update_rubygems
Special notes about capistrano-passenger
If you are using Capistrano and capistrano-passenger, then it may fail with this error:
SSHKit::Runner::ExecuteError: Exception while executing as email@example.com: undefined method `' for nil:NilClass NoMethodError: undefined method `' for nil:NilClass Tasks: TOP => passenger:restart
This is due to an incompatibility in capistrano-passenger with Passenger 5.0.22 and later. Please upgrade capistrano-passenger to 0.2.0 or later.