Phusion white papers Phusion overview

Phusion Passenger 3.0.5 released

By Hongli Lai on March 11th, 2011

Phusion Passenger is an Apache and Nginx module for deploying Ruby web applications. It has a strong focus on ease of use, stability and performance. Phusion Passenger is built on top of tried-and-true, battle-hardened Unix technologies, yet at the same time introduces innovations not found in most traditional Unix servers. Since version 3.0 it can also run standalone without an external web server, making it not only easier for first-time users but also ideal on development environments.

Recent changes

For this release, we’d like to give our thanks to the Brazilian community for donating money to support Phusion Passenger development. This donation has been made possible with the help of Egenial.

Phusion Passenger is under constant maintenance and development. We are pleased to announce Phusion Passenger version 3.0.5. This is a bug fix release.

[Apache] Fixed Union Station process statistics collection
Union Station users that are using Apache may notice that no process information show up in Union Station. This is because of a bug in Phusion Passenger’s Apache version, which has now been fixed.
[Apache] PassengerAnalytics has been renamed to UnionStationSupport
This option has been renamed for consistency reasons.
[Nginx] passenger_analytics has been renamed to union_station_support
This option has been renamed for consistency reasons.
Fixed Union Station data sending on older libcurl versions
Some Union Station users have reported that their data don’t show up. Upon investigation this turned out to be a compatibility with older libcurl versions. Affected systems include all RHEL 5 based systems, such as RHEL 5.5 and CentOS 5.5. We’ve now fixed compatibility with older libcurl versions.
Added support for the Union Station filter language
This language can be used to limit the kind of data that’s sent to Union Station. Please read the announcement and Union Station’s help page for details.
Fixed a PassengerMaxPoolSize/passenger_max_pool_size violation bug
People who host a lot of different applications on Phusion Passenger may notice that it sometimes spawns more processes than is allowed by PassengerMaxPoolSize/passenger_max_pool_size. This has been fixed.

How do I upgrade to 3.0.5?

Via a gem

First install the gem with the following command:

gem install passenger

If you’re using Phusion Passenger for Apache or for Nginx, then re-run the Apache or Nginx module installer, whichever is appropriate:

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

At the end the installer will tell you to paste a configuration snippet into your web server config file. Replace the old snippet that you already had with this new one.

Phusion Passenger Standalone users don’t need to run anything else. Whenever you type

passenger start

it will automatically upgrade itself.

Via Ubuntu packages

John Leach from Brightbox has kindly provided Ubuntu packages 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 instruction, and then run ‘apt-get update’).

Once you’ve done this then you can install Phusion Passenger by running:

sudo apt-get install libapache2-mod-passenger

-or-

sudo apt-get install nginx-brightbox

(Note that John is currently packaging 3.0.5, so it might take a while before this release shows up in the apt repository.)

Via RedHat/CentOS packages

YUM repositories with RPMs are maintained by Erik Ogan and Stealthy Monkeys Consulting. Please note that Erik is currently packaging 3.0.5, so it might take a while before this release shows up in the yum repositories.

Step 1: install the release package

The easiest way to install Phusion Passenger and keep it up to date is to install the passenger-release package from the main repository:

Fedora Core 14:

rpm -Uvh http://passenger.stealthymonkeys.com/fedora/14/passenger-release.noarch.rpm

Fedora Core 13:

rpm -Uvh http://passenger.stealthymonkeys.com/fedora/13/passenger-release.noarch.rpm

RHEL 5 / CentOS 5 / ScientificLinux 5:
(Note: these packages depend on EPEL.)

rpm -Uvh http://passenger.stealthymonkeys.com/rhel/5/passenger-release.noarch.rpm

RHEL 6 / CentOS 6 / ScientificLinux 6:
These packages will be available as soon as there is a stable beta of either CentOS 6 or SL 6 to use as a build platform.

Step 2: use Yum

From there you can use Yum to install packages. For example, try one of these:

yum install nginx-passenger

or

yum install mod_passenger

or

yum install passenger-standalone

Building your own packages

There are instructions for building your own packages and Yum repositories in the rpm directory ReadMe within the GitHub repository.

Final

Phusion Passenger is provided to the community for free. If you like Phusion Passenger, please consider sending us a donation. Thank you!

  • xv22

    Quite cool… unfortunately, I use page caching so I have to stay with passenger 2 (issue #563)

  • Jet

    Why in all your instructions “upgrade” looks more like “install” ? What’s right way to upgrade? Same but “gem update” and passenger-install-nginx-module with redownload sources and recompile?

  • http://www.phusion.nl/ Hongli Lai

    @Jet: because the installation and upgrade instructions are exactly the same, except with an upgrade you just override the previous configuration you already had.

  • erwann

    Hi,

    When you says that Passenger standalone is “easier for first-time users but also ideal on development environments”, does it mean that it is not suitable/recommended for production use?

  • http://www.phusion.nl/ Hongli Lai

    @erwann: No, Phusion Passenger Standalone is greatly suitable for production use. It’s based on an Nginx core and thus can handle being directly connected to the Internet without a reverse proxy.

  • erwann

    Thanks Hongli!
    Btw, it’s difficult for a newbie like me to find the config file to avoid running passenger from within the rails root app so that I can make passenger start as a service on boot

  • Charles

    Hello, I think I found a bug in Passenger. Here it is. Do I check this page for reply from the team?

    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/utils.rb:716: [BUG] Segmentation fault
    ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.6.0]

    – control frame ———-
    c:0023 p:—- s:0147 b:0147 l:000146 d:000146 CFUNC :getgrgid
    c:0022 p:0473 s:0143 b:0143 l:000142 d:000142 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    utils.rb:716
    c:0021 p:0063 s:0132 b:0132 l:000131 d:000131 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    utils.rb:198
    c:0020 p:0026 s:0117 b:0117 l:000104 d:000116 BLOCK /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/rack/
    application_spawner.rb:155
    c:0019 p:0109 s:0115 b:0115 l:000114 d:000114 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    utils.rb:572
    c:0018 p:0027 s:0105 b:0105 l:000104 d:000104 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/rack/
    application_spawner.rb:153
    c:0017 p:0032 s:0102 b:0102 l:000101 d:000101 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    abstract_server.rb:204
    c:0016 p:0362 s:0095 b:0095 l:000094 d:000094 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    abstract_server.rb:180
    c:0015 p:0010 s:0086 b:0086 l:000085 d:000085 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/rack/
    application_spawner.rb:128
    c:0014 p:0082 s:0081 b:0081 l:000062 d:000080 BLOCK /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    spawn_manager.rb:253
    c:0013 p:0078 s:0078 b:0078 l:000077 d:000077 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    abstract_server_collection.rb:132
    c:0012 p:0027 s:0073 b:0073 l:000062 d:000072 BLOCK /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    spawn_manager.rb:246
    c:0011 p:0014 s:0071 b:0071 l:000065 d:000070 BLOCK /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    abstract_server_collection.rb:82
    c:0010 p:0019 s:0069 b:0069 l:000068 d:000068 METHOD
    :10
    c:0009 p:0013 s:0066 b:0066 l:000065 d:000065 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    abstract_server_collection.rb:79
    c:0008 p:0131 s:0063 b:0063 l:000062 d:000062 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    spawn_manager.rb:244
    c:0007 p:0242 s:0054 b:0054 l:000053 d:000053 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    spawn_manager.rb:137
    c:0006 p:0066 s:0050 b:0050 l:000049 d:000049 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    spawn_manager.rb:275
    c:0005 p:0178 s:0041 b:0041 l:000040 d:000040 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    abstract_server.rb:357
    c:0004 p:0048 s:0030 b:0030 l:000029 d:000029 METHOD /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/phusion_passenger/
    abstract_server.rb:206
    c:0003 p:0768 s:0023 b:0023 l:0014e8 d:001a60 EVAL /usr/local/rvm/
    gems/ruby-1.9.2-p180/gems/passenger-3.0.5/helper-scripts/passenger-
    spawn-server:99
    c:0002 p:—- s:0004 b:0004 l:000003 d:000003 FINISH
    c:0001 p:0000 s:0002 b:0002 l:0014e8 d:0014e8 TOP
    —————————
    – Ruby level backtrace information
    —————————————-
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/helper-
    scripts/passenger-spawn-server:99:in `’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/abstract_server.rb:206:in `start_synchronously’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/abstract_server.rb:357:in `server_main_loop’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/spawn_manager.rb:137:in `spawn_application’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/abstract_server_collection.rb:79:in `synchronize’
    :10:in `synchronize’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/abstract_server_collection.rb:82:in `block in
    synchronize’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/spawn_manager.rb:246:in `block in
    spawn_rack_application’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/spawn_manager.rb:253:in `block (2 levels) in
    spawn_rack_application’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/rack/application_spawner.rb:128:in `start’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/abstract_server.rb:180:in `start’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/abstract_server.rb:204:in `start_synchronously’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/rack/application_spawner.rb:153:in
    `initialize_server’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/utils.rb:572:in `report_app_init_status’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/rack/application_spawner.rb:155:in `block in
    initialize_server’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/utils.rb:198:in `prepare_app_process’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/utils.rb:716:in `lower_privilege’
    /usr/local/rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.5/lib/
    phusion_passenger/utils.rb:716:in `getgrgid’

    – C level backtrace information
    ——————————————-
    0 libruby.1.9.1.dylib 0×0000000100180702
    rb_vm_bugreport + 210
    1 libruby.1.9.1.dylib 0x000000010003a0a4 report_bug
    + 372
    2 libruby.1.9.1.dylib 0x000000010003a268 rb_bug +
    200
    3 libruby.1.9.1.dylib 0x00000001000ffe44 sigsegv +
    132
    4 libSystem.B.dylib 0x00007fff85f6367a _sigtramp +
    26
    5 libSystem.B.dylib 0x00007fff86055737
    __Libinfo_version + 263
    6 etc.bundle 0×0000000100570222
    etc_getgrgid + 82
    7 libruby.1.9.1.dylib 0x000000010017bc13
    vm_call_method + 931
    8 libruby.1.9.1.dylib 0x0000000100167dc4
    vm_exec_core + 8260
    9 libruby.1.9.1.dylib 0x000000010016fa63 vm_exec +
    1507
    10 libruby.1.9.1.dylib 0x000000010016fd6b
    rb_iseq_eval_main + 507
    11 libruby.1.9.1.dylib 0x000000010003f4a2
    ruby_exec_internal + 178
    12 libruby.1.9.1.dylib 0x0000000100041e2c
    ruby_run_node + 60
    13 ruby 0x0000000100000edf main + 79
    14 ruby 0x0000000100000e84 start + 52
    15 ??? 0×0000000000000003 0×0 + 3

    [NOTE]
    You may have encountered a bug in the Ruby interpreter or extension
    libraries.
    Bug reports are welcome.
    For details: http://www.ruby-lang.org/bugreport.html

  • Tom

    Hello Hongli,

    There are a few entries about Internal Dummy Connection everytime our Rails application finish loading. Is this normal?

    ::1 – - [21/Mar/2011:11:46:25 +0800] “OPTIONS * HTTP/1.0″ 200 – “-” “Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8l DAV/2 Phusion_Passenger/3.0.5 (internal dummy connection)”

    Thanks!

  • http://www.phusion.nl/ Hongli Lai

    Yes, that’s Apache, not Phusion Passenger.

  • Andrei

    Hello Hongli,

    Is there a changelog for Passenger? Couldn’t find it anywhere.

    Thank you!

  • http://www.phusion.nl/ Hongli Lai

    Look in the NEWS file in the source tarball.